On Mon, Sep 23, 2013 at 4:29 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > Change the enumeration scheme for xhci attached devices from: > > SetAddress > GetDescriptor(8) > GetDescriptor(18) > > ...to: > > GetDescriptor(64) > SetAddress > GetDescriptor(18) > > ...as some devices misbehave when encountering a SetAddress command > prior to GetDescriptor. There are known devices that require this > enumeration scheme but is unknown how much, if any, regression there > will be of xhci-attached devices that can not tolerate the change. For > now, follow the ehci case and enable 'new scheme' by default. Of course > the existing 'old_scheme_first' and 'use_both_schemes' usbcore module > parameters are available to debug / workaround regressions. > > To support this enumeration scheme on xhci the AddressDevice operation > needs to be performed twice. The first instance of the command enables > the HC's device and slot context info for the device, but omits sending > the device a SetAddress command (BSR == block set address request). > Then, after GetDescriptor completes, follow up with the full > AddressDevice+SetAddress operation. > > Reported-by: David Moore <david.moore@xxxxxxxxx> > Suggested-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> > --- Hold off on this one for now... debugging a case where xhci complains that the slot is not in the enabled state when receiving the address device (bsr=1) request. -- 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