Hi, We rely on the OTG controller block or Extcon to provide us with VBUS and ID line status via an interrupt.
This is then used to switch the controller between host, peripheral and idle roles based on the following table. ID VBUS dual-role state -- ---- --------------- 0 x A_HOST - Host controller active 1 0 B_IDLE - Both Host and Gadget controllers inactive 1 1 B_PERIPHERAL - Gadget controller active Series depends on  dwc3 trivial fixes - https://lkml.org/lkml/2017/2/15/204 Changelog: v2: - Use extcon device for VBUS/ID events if extcon phandle is present. - Fix bugs during system suspend/resume. cheers, -roger Roger Quadros (4): usb: dwc3: core.h: add some register definitions usb: dwc3: omap: don't miss events during suspend/resume usb: dwc3: add dual-role support usb: dwc3: Workaround for super-speed host on dra7 in dual-role mode Documentation/devicetree/bindings/usb/dwc3.txt | 2 + drivers/usb/dwc3/core.c | 752 ++++++++++++++++++++++++- drivers/usb/dwc3/core.h | 131 ++++- drivers/usb/dwc3/dwc3-omap.c | 16 + drivers/usb/dwc3/gadget.c | 18 +- 5 files changed, 895 insertions(+), 24 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html