usb: dwc3: redo the mode setting at core init
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc3 / core.c
index cc8f5abfac09a7e6c84c7aca0a62674d7fea24ed..00eb077e9b51f4e4903608718c767f8e024177b0 100644 (file)
@@ -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: