On Fri, 18 Mar 2011, Paul Zimmerman wrote: > > From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] > > Sent: Friday, March 18, 2011 6:27 PM > > On Fri, 18 Mar 2011, Paul Zimmerman wrote: > > > > > > --- a/drivers/usb/gadget/audio.c > > > > +++ b/drivers/usb/gadget/audio.c > > > > @@ -52,7 +52,7 @@ static struct usb_device_descriptor device_desc = { > > > > .bLength = sizeof device_desc, > > > > .bDescriptorType = USB_DT_DEVICE, > > > > > > > > - .bcdUSB = __constant_cpu_to_le16(0x200), > > > > + .bcdUSB = cpu_to_le16(0x0300), > > > > > > > > .bDeviceClass = USB_CLASS_PER_INTERFACE, > > > > .bDeviceSubClass = 0, > > > > > > This won't work. Now the gadget will not be recognized by a USB 2.0 > > > host. > > > > Why not? I'm not aware of any hosts that will refuse to work with a > > device merely because the bcdUSB field says 0x0300 instead of 0x0200. > > > > For that matter, there are plenty of legacy hosts that don't have > > high-speed USB support. Their controllers are only at the USB-1.1 > > level, but that doesn't stop them from using USB-2.0 devices at full > > speed. > > Yep, you are right. I just tried it with both a Linux and Windows host, > and they both work. > > I guess I was thinking about some compliance test tools we have used. I > know they can be very picky about the contents of the bcsUSB field. The exact requirement, as stated in the USB 3.0 specification, is this: The device descriptor of a SuperSpeed capable device has a version number of 3.0 (0300H). It seems pretty clear that the bcdUSB value doesn't depend on the device's current speed; it depends only on whether the device is capable of running at SuperSpeed. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html