On Tue, Apr 19, 2016 at 10:20:33AM -0400, Alan Stern wrote: > On Tue, 19 Apr 2016, Felipe Balbi wrote: > > > Hi, > > > > Peter Chen <hzpeterchen@xxxxxxxxx> writes: > > > Hi all, > > > > > > When I review the patch [1] for adding companion controller support for > > > OTG framework, I am puzzled several concepts, like shared hcd and > > > companion controller, companion hcd, companion port, would someone > > > please explain them? And why EHCI/OHCI do not use shared hcd, but > > > xHCI uses it? Thanks. > > > > xHCI is modeled as two separate buses (High-speed and Super-speed) which > > *share* the same IP block. In the case of EHCI/OHCI, there is a port > > being handed over to the a completely separate IP. OHCI is EHCI's > > companion for non-HS signalling. > > That's right. In more detail: > > Companion controller and companion hcd are the same thing. They exist > because EHCI can only handle high speed connections; it can't handle > full speed or low speed. When a USB-1.1 device is plugged into an EHCI > controller, the EHCI controller can't handle it and so the connection > is handed over to the companion controller, which is either OHCI or > UHCI. > I have one more question, if hcd codes takes primary hcd as USB2 and shared hcd as USB3, are there any problems if EHCI (or OHCI) as primary hcd and OHCI (EHCI) as shared hcd like [1], current hcd code seems to use hcd->shared_hcd at drivers/usb/core/port.c [1] http://www.spinics.net/lists/linux-usb/msg139344.html -- Best Regards, Peter Chen -- 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