diff options
author | Tom Rini <trini@ti.com> | 2013-03-18 15:33:47 -0400 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-03-18 15:33:47 -0400 |
commit | 3c47f2f4871c345c20b9d986b11fec550ef6cc9f (patch) | |
tree | 267c6eedacaa02cc8c7096f67bedb9d17fe3e21d /drivers/usb/gadget/composite.c | |
parent | 0ce033d2582129243aca10d3072a221386bbba44 (diff) | |
parent | ae003d057077d792c1f2131753a7596c94e0bba4 (diff) |
Merge branch 'master' of git://git.denx.de/u-boot-usb
Diffstat (limited to 'drivers/usb/gadget/composite.c')
-rw-r--r-- | drivers/usb/gadget/composite.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index ebb5131a9cb..2c5600ed521 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -859,6 +859,25 @@ unknown: if (&f->list == &cdev->config->functions) f = NULL; break; + /* + * dfu-util (version 0.5) sets bmRequestType.Receipent = Device + * for non-standard request (w_value = 0x21, + * bRequest = GET_DESCRIPTOR in this case). + * When only one interface is registered (as it is done now), + * then this request shall be handled as it was requested for + * interface. + * + * In the below code it is checked if only one interface is + * present and proper function for it is extracted. Due to that + * function's setup (f->setup) is called to handle this + * special non-standard request. + */ + case USB_RECIP_DEVICE: + debug("cdev->config->next_interface_id: %d intf: %d\n", + cdev->config->next_interface_id, intf); + if (cdev->config->next_interface_id == 1) + f = cdev->config->interface[intf]; + break; } if (f && f->setup) |