diff options
Diffstat (limited to 'firmware/usbstack/drivers/device/usb_storage.c')
-rw-r--r-- | firmware/usbstack/drivers/device/usb_storage.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/firmware/usbstack/drivers/device/usb_storage.c b/firmware/usbstack/drivers/device/usb_storage.c index 45fd5c14b7..8fc9df672f 100644 --- a/firmware/usbstack/drivers/device/usb_storage.c +++ b/firmware/usbstack/drivers/device/usb_storage.c | |||
@@ -207,9 +207,12 @@ int usb_storage_driver_bind(void* controler_ops) | |||
207 | /* update device decsriptor */ | 207 | /* update device decsriptor */ |
208 | storage_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket; | 208 | storage_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket; |
209 | 209 | ||
210 | /* update hs descriptors as we asume that endpoints are the same for fs and hs */ | 210 | /* update hs descriptors as we asume that endpoints |
211 | storage_hs_bulk_in_desc.bEndpointAddress = storage_fs_bulk_in_desc.bEndpointAddress; | 211 | are the same for fs and hs */ |
212 | storage_hs_bulk_out_desc.bEndpointAddress = storage_fs_bulk_out_desc.bEndpointAddress; | 212 | storage_hs_bulk_in_desc.bEndpointAddress = |
213 | storage_fs_bulk_in_desc.bEndpointAddress; | ||
214 | storage_hs_bulk_out_desc.bEndpointAddress = | ||
215 | storage_fs_bulk_out_desc.bEndpointAddress; | ||
213 | 216 | ||
214 | return 0; | 217 | return 0; |
215 | 218 | ||
@@ -218,7 +221,8 @@ autoconf_fail: | |||
218 | return -EOPNOTSUPP; | 221 | return -EOPNOTSUPP; |
219 | } | 222 | } |
220 | 223 | ||
221 | void usb_storage_driver_unbind(void) { | 224 | void usb_storage_driver_unbind(void) |
225 | { | ||
222 | 226 | ||
223 | /* disable endpoints... */ | 227 | /* disable endpoints... */ |
224 | } | 228 | } |
@@ -240,13 +244,15 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request) | |||
240 | switch (request->wValue >> 8) { | 244 | switch (request->wValue >> 8) { |
241 | case USB_DT_DEVICE: | 245 | case USB_DT_DEVICE: |
242 | logf("usb storage: sending device desc"); | 246 | logf("usb storage: sending device desc"); |
243 | ret = MIN(sizeof(struct usb_device_descriptor), request->wLength); | 247 | ret = MIN(sizeof(struct usb_device_descriptor), |
248 | request->wLength); | ||
244 | res.buf = &storage_device_desc; | 249 | res.buf = &storage_device_desc; |
245 | break; | 250 | break; |
246 | 251 | ||
247 | case USB_DT_DEVICE_QUALIFIER: | 252 | case USB_DT_DEVICE_QUALIFIER: |
248 | logf("usb storage: sending qualifier dec"); | 253 | logf("usb storage: sending qualifier dec"); |
249 | ret = MIN(sizeof(struct usb_qualifier_descriptor), request->wLength); | 254 | ret = MIN(sizeof(struct usb_qualifier_descriptor), |
255 | request->wLength); | ||
250 | res.buf = &storage_qualifier_desc; | 256 | res.buf = &storage_qualifier_desc; |
251 | break; | 257 | break; |
252 | 258 | ||
@@ -254,7 +260,8 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request) | |||
254 | case USB_DT_CONFIG: | 260 | case USB_DT_CONFIG: |
255 | logf("usb storage: sending config desc"); | 261 | logf("usb storage: sending config desc"); |
256 | 262 | ||
257 | ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); | 263 | ret = config_buf(buf, request->wValue >> 8, |
264 | request->wValue & 0xff); | ||
258 | if (ret >= 0) { | 265 | if (ret >= 0) { |
259 | logf("%d, vs %d", request->wLength, ret); | 266 | logf("%d, vs %d", request->wLength, ret); |
260 | ret = MIN(request->wLength, (uint16_t)ret); | 267 | ret = MIN(request->wLength, (uint16_t)ret); |
@@ -264,7 +271,8 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request) | |||
264 | 271 | ||
265 | case USB_DT_STRING: | 272 | case USB_DT_STRING: |
266 | logf("usb storage: sending string desc"); | 273 | logf("usb storage: sending string desc"); |
267 | ret = usb_stack_get_string(strings, request->wValue & 0xff, buf); | 274 | ret = usb_stack_get_string(strings, request->wValue & 0xff, |
275 | buf); | ||
268 | ret = MIN(ret, request->wLength); | 276 | ret = MIN(ret, request->wLength); |
269 | res.buf = buf; | 277 | res.buf = buf; |
270 | break; | 278 | break; |
@@ -336,7 +344,8 @@ static int config_buf(uint8_t *buf, uint8_t type, unsigned index) | |||
336 | 344 | ||
337 | (void)index; | 345 | (void)index; |
338 | 346 | ||
339 | len = usb_stack_configdesc(&storage_config_desc, buf, BUFFER_SIZE, dev.descriptors); | 347 | len = usb_stack_configdesc(&storage_config_desc, buf, BUFFER_SIZE, |
348 | dev.descriptors); | ||
340 | logf("result %d", len); | 349 | logf("result %d", len); |
341 | if (len < 0) { | 350 | if (len < 0) { |
342 | return len; | 351 | return len; |