diff options
| author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2007-08-29 10:14:47 +0000 |
|---|---|---|
| committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2007-08-29 10:14:47 +0000 |
| commit | 17f2dd5c13cda7447da74227099b852ee55e1dd6 (patch) | |
| tree | 89b8f659df56ef92adf1859f95e108e802b19852 /firmware/usbstack | |
| parent | 4ecd9716bd47961ca7377de690eaeb740ef7f947 (diff) | |
| download | rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.zip rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.tar.gz rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.tar.bz2 rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.tar.xz | |
endpoint address was only set in fs descriptor, but we need it in hs too. Update storage device descriptor dynamic based on dcd
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14507 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack')
| -rw-r--r-- | firmware/usbstack/core/epsetup.c | 8 | ||||
| -rw-r--r-- | firmware/usbstack/drivers/device/usb_serial.c | 4 | ||||
| -rw-r--r-- | firmware/usbstack/drivers/device/usb_storage.c | 8 |
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: |