usb:composite:fix Provide function data when addressing device with only one interface
authorLukasz Majewski <l.majewski@samsung.com>
Fri, 1 Mar 2013 14:30:18 +0000 (15:30 +0100)
committerMarek Vasut <marex@denx.de>
Mon, 18 Mar 2013 17:58:52 +0000 (18:58 +0100)
commitf7b4162eb1bddfa3008e65d4d3ed29d117dc1eb8
tree1fc8603e8afbe394484d5f741e356bc2d50c9cc2
parentb2caefbb3344ff5eece7d4b1f3d8e583951d2a20
usb:composite:fix Provide function data when addressing device with only one interface

This commit fixes problems with some non-standard requests send with
device address instead of interface address (bmRequestType.Receipent field).

This happens with dfu-util (debian version: 0.5), which address non standard
requests (like w_value=0x21 and bRequest=GET_DESCRIPTOR) to device.
Without this fix, the above request is STALLED, and hence causes dfu-util
to assume some standard configuration (packet size = 1024B instead of 4096B)
In turn it displays following errors:
Error obtaining DFU functional descriptor
Warning: Assuming DFU version 1.0
Warning: Transfer size can not be detected
...
Warning: Trying default transfer size 1024

This fix allows passing non-standard request to function setup code, where
it shall be handled.

Tested at:  Trats (exynos4210)
Tested with:DFU and UMS gadgets

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
drivers/usb/gadget/composite.c