diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index cc8f5abfac09..00eb077e9b51 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -689,6 +689,18 @@ static int dwc3_core_init(struct dwc3 *dwc) goto err4; } + switch (dwc->dr_mode) { + case USB_DR_MODE_PERIPHERAL: + dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE); + break; + case USB_DR_MODE_HOST: + dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST); + break; + default: + dev_dbg(dwc->dev, "Unsupported mode %d\n", dwc->dr_mode); + break; + } + return 0; err4: