On Fri, Jun 03, 2016 at 11:16:32AM +0300, Heikki Krogerus wrote: > On Fri, Jun 03, 2016 at 03:41:13PM +0800, Peter Chen wrote: > > On Thu, Jun 02, 2016 at 09:37:24AM +0800, Lu Baolu wrote: > > > Several Intel platforms implement USB dual role by having completely > > > separate xHCI and dwc3 IPs in PCH or SOC silicons. These two IPs share > > > a single USB port. There is another external port mux which controls > > > where the data lines should go. While the USB controllers are part of > > > the silicon, the port mux design are platform specific. > > > > > > This patch adds the generic code to handle such multiple roles of a > > > usb port. It exports the necessary interfaces for other components to > > > register or unregister a usb mux device, and to control its role. > > > It registers the mux device with sysfs as well, so that users are able > > > to control the port role from user space. > > > > > > Some other archs (e.g. Renesas R-Car gen2 SoCs) need an external mux to > > > swap usb roles as well. This code could also be leveraged for those archs. > > > > > > > Sorry to review this so late, from my point, it is a dual-role switch > > driver too, we are reviewing USB OTG/dual-role framework [1], it is > > not necessary to create another framework to do it. And USB OTG framework > > has already tested at Renesas's platform [2]. > > > > [1] http://www.spinics.net/lists/linux-usb/msg140835.html > > [2] http://www.spinics.net/lists/linux-usb/msg140827.html > > We really can't marry dual-role capability with OTG. That OTG > framework can be used be when the hardware actually supports the > protocols defined in the OTG spec starting from SRP. In other cases it > must not be used. > > OTG relies heavily on existence of the ID pin, but with Type-C > connectors we do not have it. Therefore USB Type-C defines competing > support for example for the role swapping. With USB Type-C connectors > OTG will never be supported. > > So let's not mix USB dual-role capability with OTG. > Well, DRD/OTG framework is mainly used for dual-role switch, no matter what input is, you can use id pin, sysfs, or Type-C events. It is long term target, currently, it only supports id pin. In future, we can expend it to support more input events. Microsoft also has similar framework for it: https://msdn.microsoft.com/en-us/library/windows/hardware/dn957036(v=vs.85).aspx -- 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