usb: gadget: composite: fill bcdUSB for any gadget max speed
authorIgor Kotrasinski <i.kotrasinsk@samsung.com>
Thu, 20 Aug 2015 08:00:01 +0000 (10:00 +0200)
committerFelipe Balbi <balbi@ti.com>
Fri, 9 Oct 2015 21:35:20 +0000 (16:35 -0500)
When handling device GET_DESCRIPTOR, composite gadget driver fills
the bcdUSB field only if the gadget supports USB 3.0. Otherwise
the field is left unfilled.

For consistency, set bcdUSB to 0x0200 for gadgets that don't
support superspeed.

It's correct to use 0x0200 for any setting that doesn't use
superspeed, since USB 2.0 devices can restrict themselves to
full speed only. It is NOT correct to use 0x0210, since BOS
descriptors are handled only if gadget_is_superspeed() is
satisfied, otherwise it results in a stall.

Signed-off-by: Igor Kotrasinski <i.kotrasinsk@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/composite.c

index 3e95c0e88b8b2a71f63e14334b0b07c9bfc24f46..8b14c2a13ac51abc9d3f433a0261c599ec8cdaf6 100644 (file)
@@ -1504,6 +1504,8 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
                                } else {
                                        cdev->desc.bcdUSB = cpu_to_le16(0x0210);
                                }
+                       } else {
+                               cdev->desc.bcdUSB = cpu_to_le16(0x0200);
                        }
 
                        value = min(w_length, (u16) sizeof cdev->desc);
This page took 0.025673 seconds and 5 git commands to generate.