summaryrefslogtreecommitdiff
path: root/firmware/usbstack
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack')
-rw-r--r--firmware/usbstack/core/epsetup.c8
-rw-r--r--firmware/usbstack/drivers/device/usb_serial.c4
-rw-r--r--firmware/usbstack/drivers/device/usb_storage.c8
3 files changed, 18 insertions, 2 deletions
diff --git a/firmware/usbstack/core/epsetup.c b/firmware/usbstack/core/epsetup.c
index 702108a..8581544 100644
--- a/firmware/usbstack/core/epsetup.c
+++ b/firmware/usbstack/core/epsetup.c
@@ -164,6 +164,12 @@ static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc)
}
/* MATCH!! */
-
+
+ /* set address of used ep in desc */
+ logf("ep address %x", desc->bEndpointAddress);
+ desc->bEndpointAddress |= ep->ep_num;
+
+ ep->desc = desc;
+
return 1;
}
diff --git a/firmware/usbstack/drivers/device/usb_serial.c b/firmware/usbstack/drivers/device/usb_serial.c
index 9f1778a..578e9a1 100644
--- a/firmware/usbstack/drivers/device/usb_serial.c
+++ b/firmware/usbstack/drivers/device/usb_serial.c
@@ -201,6 +201,10 @@ int usb_serial_driver_bind(void* controler_ops)
serial_debug_desc.bDebugInEndpoint = dev.in->ep_num;
serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num;
+ /* update hs descriptors as we asume that endpoints are the same for fs and hs */
+ serial_hs_in_desc.bEndpointAddress = serial_fs_in_desc.bEndpointAddress;
+ serial_hs_out_desc.bEndpointAddress = serial_fs_out_desc.bEndpointAddress;
+
return 0;
autoconf_fail:
diff --git a/firmware/usbstack/drivers/device/usb_storage.c b/firmware/usbstack/drivers/device/usb_storage.c
index 4f820fb..88129cd 100644
--- a/firmware/usbstack/drivers/device/usb_storage.c
+++ b/firmware/usbstack/drivers/device/usb_storage.c
@@ -53,7 +53,6 @@ static struct usb_device_descriptor storage_device_desc = {
.bDeviceClass = 0,
.bDeviceSubClass = 0,
.bDeviceProtocol = 0,
- .bMaxPacketSize0 = 64,
.idVendor = 0xffff,
.idProduct = 0x0001,
.iManufacturer = 0,
@@ -181,6 +180,13 @@ int usb_storage_driver_bind(void* controler_ops)
dev.out->claimed = true;
logf("usb storage: out: %s", dev.out->name);
+ /* update device decsriptor */
+ storage_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket;
+
+ /* update hs descriptors as we asume that endpoints are the same for fs and hs */
+ storage_hs_bulk_in_desc.bEndpointAddress = storage_fs_bulk_in_desc.bEndpointAddress;
+ storage_hs_bulk_out_desc.bEndpointAddress = storage_fs_bulk_out_desc.bEndpointAddress;
+
return 0;
autoconf_fail: