|
@@ -689,6 +689,21 @@ 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;
|
|
|
+ case USB_DR_MODE_OTG:
|
|
|
+ dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ dev_warn(dwc->dev, "Unsupported mode %d\n", dwc->dr_mode);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
err4:
|
|
@@ -786,7 +801,6 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
|
|
|
|
|
|
switch (dwc->dr_mode) {
|
|
|
case USB_DR_MODE_PERIPHERAL:
|
|
|
- dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE);
|
|
|
ret = dwc3_gadget_init(dwc);
|
|
|
if (ret) {
|
|
|
if (ret != -EPROBE_DEFER)
|
|
@@ -795,7 +809,6 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
|
|
|
}
|
|
|
break;
|
|
|
case USB_DR_MODE_HOST:
|
|
|
- dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST);
|
|
|
ret = dwc3_host_init(dwc);
|
|
|
if (ret) {
|
|
|
if (ret != -EPROBE_DEFER)
|
|
@@ -804,7 +817,6 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
|
|
|
}
|
|
|
break;
|
|
|
case USB_DR_MODE_OTG:
|
|
|
- dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
|
|
|
ret = dwc3_host_init(dwc);
|
|
|
if (ret) {
|
|
|
if (ret != -EPROBE_DEFER)
|