[RFC 00/15] xHCI split roothub

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patchset might be better named "xHCI: stop lying and develop a
split personality".

USB 3.0 external hubs show up as two completely separate devices: a USB
2.0 hub with LS/FS/HS ports, and a USB 3.0 hub with SS ports.  The xHCI
roothub emulation code has always lied to the USB core and created a
single roothub with modified USB 2.0 hub descriptors, that handles ports
of all speeds.  With John's patch to add USB 3.0 hub support to the
core, we can finally stop lying and register two xHCI roothubs.

Alan Stern suggested I register two usb_hcd structures with the USB core
instead of trying to modify all the different HCD's roothub code to
fix the hcd-is-a-bus assumption.  I've done that, and probably touched
less code than trying to properly fix that false assumption.

This is still a WIP, since I haven't addressed the bus and PCI
suspend/resume code yet.  I'm considering allowing each bus to suspend
separately (e.g. putting the USB 2.0 ports in suspend, and leaving the
USB 3.0 ports active), but making sure that each bus is suspended before
the whole PCI device is suspended.

The code does seem to work when USB selective suspend is disabled.


John Youn (1):
  USB 3.0 Hub Changes

Sarah Sharp (14):
  xhci: Remove old no-op test.
  usb: Make USB 3.0 roothub have a SS EP comp descriptor.
  xhci: Always use usb_hcd in URB instead of converting xhci_hcd.
  xhci: Change hcd_priv be a pointer.
  xhci: Setup array of USB 2.0 and USB 3.0 ports.
  usb: Make usb_hcd_pci_probe labels more descriptive.
  usb: Refactor irq enabling out of usb_add_hcd()
  usb: Change usb_hcd->bandwidth_mutex to a pointer.
  usb: Make core allocate resources per PCI-device.
  xhci: Prepare driver for multiple usb_hcds.
  usb: Register second xHCI roothub.
  xhci: Return a USB 3.0 hub descriptor for USB3 roothub.
  xhci: Limit roothub ports to 15 USB3 & 31 USB2 ports.
  xhci: Make roothub functions deal with device removal.

 drivers/staging/usbip/vhci_hcd.c |    4 +-
 drivers/usb/core/hcd-pci.c       |   55 ++++++++--
 drivers/usb/core/hcd.c           |  181 +++++++++++++++++++++++--------
 drivers/usb/core/hub.c           |   81 ++++++++++++--
 drivers/usb/core/message.c       |   22 ++--
 drivers/usb/gadget/dummy_hcd.c   |    4 +-
 drivers/usb/host/ehci-hub.c      |    4 +-
 drivers/usb/host/imx21-hcd.c     |    4 +-
 drivers/usb/host/isp116x-hcd.c   |    4 +-
 drivers/usb/host/isp1362-hcd.c   |    4 +-
 drivers/usb/host/isp1760-hcd.c   |    4 +-
 drivers/usb/host/ohci-hub.c      |   10 +-
 drivers/usb/host/oxu210hp-hcd.c  |    4 +-
 drivers/usb/host/r8a66597-hcd.c  |    4 +-
 drivers/usb/host/sl811-hcd.c     |    4 +-
 drivers/usb/host/u132-hcd.c      |   10 +-
 drivers/usb/host/xhci-hub.c      |  220 +++++++++++++++++++++++++++++--------
 drivers/usb/host/xhci-mem.c      |  223 ++++++++++++++++++++++++++++++++++++--
 drivers/usb/host/xhci-pci.c      |   38 ++++++-
 drivers/usb/host/xhci-ring.c     |   65 +++++++-----
 drivers/usb/host/xhci.c          |   66 ++++++++----
 drivers/usb/host/xhci.h          |   37 +++++--
 drivers/usb/wusbcore/rh.c        |    4 +-
 include/linux/usb/ch11.h         |   41 +++++++-
 include/linux/usb/hcd.h          |    7 +-
 25 files changed, 872 insertions(+), 228 deletions(-)

--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux