Hi again, This is my second try of getting HCD providers into usb subsystem. During discussion of V1 I realized there are about 26 drivers adding a single HCD and all of them would need to be modified. So instead I decided to put relevant code in usb_add_hcd. It checks if the HCD we register is a primary one and if so, it registers a proper provider. Please note that of_hcd_xlate_simple was also extended to allow getting shared HCD (which is used e.g. in case of XHCI). So now you can have something like: ohci: ohci@21000 { #usb-cells = <0>; compatible = "generic-ohci"; reg = <0x00001000 0x1000>; interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; }; ehci: ehci@22000 { #usb-cells = <0>; compatible = "generic-ehci"; reg = <0x00002000 0x1000>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; }; xhci: xhci@23000 { #usb-cells = <1>; compatible = "generic-xhci"; reg = <0x00003000 0x1000>; interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; }; The last (second) patch is not supposed to be applied, it's used only as a proof and example of how providers can be used. Rafał Miłecki (1): usb: core: add support for HCD providers drivers/usb/core/Makefile | 1 + drivers/usb/core/hcd.c | 8 ++++ drivers/usb/core/provider.c | 99 +++++++++++++++++++++++++++++++++++++++++++ include/dt-bindings/usb/usb.h | 7 +++ include/linux/usb/hcd.h | 2 + include/linux/usb/provider.h | 39 +++++++++++++++++ 6 files changed, 156 insertions(+) create mode 100644 drivers/usb/core/provider.c create mode 100644 include/dt-bindings/usb/usb.h create mode 100644 include/linux/usb/provider.h -- 1.8.4.5 -- 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