usb: Enumeration change under xHCI for 3.14.

Hi Greg,

Here's two patches for 3.14.

There are buggy USB devices that don't enumerate under xHCI because
they expect a 64-byte Get Descriptor request before the Set Address control
transfer.  David Moore has a USB 2.0 webcam that exhibits this behavior:

These patches change the way USB 2.0 devices are enumerated under xHCI, to try
the Windows enumeration scheme first.  The USB 3.0 device enumeration scheme is
unchanged.  This should allow these buggy USB 2.0 devices to enumerate under xHCI.

I've tested this code with USB 3.0 hubs and mass storage devices, and many
different USB 2.0 devices (webcam, headset, ethernet, serial, mouse, keyboard,
etc).  They all work, so these patches are ready for wider testing.

Sarah Sharp
xhci: clarify logging in xhci_setup_device

Specify whether we are only performing the context setup portion of the
'address device' command, or the full operation issuing 'SetAddress'
on the wire.

Signed-off-by: Dan Williams <>
Signed-off-by: Sarah Sharp <>
1 file changed