Hi, Roger Quadros writes: > On 18/11/2019 09:07, Felipe Balbi wrote: >> Hi, >> >> Bin Liu writes: >> >>> VBUS should be turned off when leaving the host mode. >>> Set GCTL_PRTCAP to device mode in teardown to de-assert DRVVBUS pin to >>> turn off VBUS power. >>> >>> Fixes: 5f94adfeed97 ("usb: dwc3: core: refactor mode initialization to its own function") >>> Signed-off-by: Bin Liu >>> --- >>> drivers/usb/dwc3/core.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c >>> index 97d6ae3c4df2..76ac9cd54e64 100644 >>> --- a/drivers/usb/dwc3/core.c >>> +++ b/drivers/usb/dwc3/core.c >>> @@ -1201,6 +1201,7 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc) >>> break; >>> case USB_DR_MODE_HOST: >>> dwc3_host_exit(dwc); >>> + dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE); >> >> seems like this should be done as part of dwc3_host_exit() >> > > That wouldn't work well with OTG case as dwc3_host_exit(dwc) is > called when switching roles and we don't want PRTCAP > to change from DWC3_GCTL_PRTCAP_OTG. if (port != OTG) set_prtcap(DEVICE) -- balbi