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 | |
parent | 4ecd9716bd47961ca7377de690eaeb740ef7f947 (diff) | |
download | rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.tar.gz rockbox-17f2dd5c13cda7447da74227099b852ee55e1dd6.zip |
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
-rw-r--r-- | firmware/drivers/usb/arcotg_dcd.c | 4 | ||||
-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 |
4 files changed, 18 insertions, 6 deletions
diff --git a/firmware/drivers/usb/arcotg_dcd.c b/firmware/drivers/usb/arcotg_dcd.c index d57850f067..b1cb24d9ef 100644 --- a/firmware/drivers/usb/arcotg_dcd.c +++ b/firmware/drivers/usb/arcotg_dcd.c | |||
@@ -613,10 +613,6 @@ int usb_arcotg_dcd_enable(struct usb_ep* ep, | |||
613 | + } | 613 | + } |
614 | #endif | 614 | #endif |
615 | 615 | ||
616 | /* set address of used ep in desc */ | ||
617 | logf("ep address %x", desc->bEndpointAddress); | ||
618 | desc->bEndpointAddress |= ep->ep_num; | ||
619 | |||
620 | /* here initialize variable of ep */ | 616 | /* here initialize variable of ep */ |
621 | ep->maxpacket = max; | 617 | ep->maxpacket = max; |
622 | ep->desc = desc; | 618 | ep->desc = desc; |
diff --git a/firmware/usbstack/core/epsetup.c b/firmware/usbstack/core/epsetup.c index 702108a1cb..8581544e0f 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) | |||
164 | } | 164 | } |
165 | 165 | ||
166 | /* MATCH!! */ | 166 | /* MATCH!! */ |
167 | 167 | ||
168 | /* set address of used ep in desc */ | ||
169 | logf("ep address %x", desc->bEndpointAddress); | ||
170 | desc->bEndpointAddress |= ep->ep_num; | ||
171 | |||
172 | ep->desc = desc; | ||
173 | |||
168 | return 1; | 174 | return 1; |
169 | } | 175 | } |
diff --git a/firmware/usbstack/drivers/device/usb_serial.c b/firmware/usbstack/drivers/device/usb_serial.c index 9f1778a3f2..578e9a1e2d 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) | |||
201 | serial_debug_desc.bDebugInEndpoint = dev.in->ep_num; | 201 | serial_debug_desc.bDebugInEndpoint = dev.in->ep_num; |
202 | serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num; | 202 | serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num; |
203 | 203 | ||
204 | /* update hs descriptors as we asume that endpoints are the same for fs and hs */ | ||
205 | serial_hs_in_desc.bEndpointAddress = serial_fs_in_desc.bEndpointAddress; | ||
206 | serial_hs_out_desc.bEndpointAddress = serial_fs_out_desc.bEndpointAddress; | ||
207 | |||
204 | return 0; | 208 | return 0; |
205 | 209 | ||
206 | autoconf_fail: | 210 | autoconf_fail: |
diff --git a/firmware/usbstack/drivers/device/usb_storage.c b/firmware/usbstack/drivers/device/usb_storage.c index 4f820fbe90..88129cdc96 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 = { | |||
53 | .bDeviceClass = 0, | 53 | .bDeviceClass = 0, |
54 | .bDeviceSubClass = 0, | 54 | .bDeviceSubClass = 0, |
55 | .bDeviceProtocol = 0, | 55 | .bDeviceProtocol = 0, |
56 | .bMaxPacketSize0 = 64, | ||
57 | .idVendor = 0xffff, | 56 | .idVendor = 0xffff, |
58 | .idProduct = 0x0001, | 57 | .idProduct = 0x0001, |
59 | .iManufacturer = 0, | 58 | .iManufacturer = 0, |
@@ -181,6 +180,13 @@ int usb_storage_driver_bind(void* controler_ops) | |||
181 | dev.out->claimed = true; | 180 | dev.out->claimed = true; |
182 | logf("usb storage: out: %s", dev.out->name); | 181 | logf("usb storage: out: %s", dev.out->name); |
183 | 182 | ||
183 | /* update device decsriptor */ | ||
184 | storage_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket; | ||
185 | |||
186 | /* update hs descriptors as we asume that endpoints are the same for fs and hs */ | ||
187 | storage_hs_bulk_in_desc.bEndpointAddress = storage_fs_bulk_in_desc.bEndpointAddress; | ||
188 | storage_hs_bulk_out_desc.bEndpointAddress = storage_fs_bulk_out_desc.bEndpointAddress; | ||
189 | |||
184 | return 0; | 190 | return 0; |
185 | 191 | ||
186 | autoconf_fail: | 192 | autoconf_fail: |