Hi, While testing for OTG/DRD [1], I encountered a couple of problems with the XHCI driver. The first 2 patches clean up the HCD allocation logic as we want both primary and shared HCDs to be allocated before the primary HCD registers for OTG use. That's the only way the OTG core will know that it needs to wait for the shared HCD to register before firing up the OTG state machine. We let the HCD core allocate memory for the xhci private structure. For OTG/DRD case we want usb_add/remove_hcd() to work reliably when called repeatedly. Patches 3 and 4 fix issues with usb_add/remove_hcd() on xhci. The last patch fixes an issue with suspend/resume. [1] - OTG core support http://thread.gmane.org/gmane.linux.kernel/1911689 cheers, -roger Roger Quadros (5): usb: xhci: cleanup xhci_hcd allocation usb: xhci: plat: Create both HCDs before adding them usb: xhci: Allow usb_add/remove_hcd() to be called repeatedly usb: xhci: fix xhci locking up during hcd remove usb: xhci: Fix suspend/resume when used with OTG core drivers/usb/host/xhci-pci.c | 18 +++++++++--------- drivers/usb/host/xhci-plat.c | 43 ++++++++++++++++++++++--------------------- drivers/usb/host/xhci-ring.c | 5 ++++- drivers/usb/host/xhci.c | 43 +++++++++++++++++++++++-------------------- drivers/usb/host/xhci.h | 19 +++++++++++++++++-- 5 files changed, 75 insertions(+), 53 deletions(-) -- 2.1.0 -- 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