Browse Source

usb: dwc3: core: fixup dr_mode fallback selection

We shouldn't change a host-only dwc3 to gadget-only
if driver is built as gadget-only. Fix that up here.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Felipe Balbi 9 years ago
parent
commit
5f82279a0c
1 changed files with 6 additions and 2 deletions
  1. 6 2
      drivers/usb/dwc3/core.c

+ 6 - 2
drivers/usb/dwc3/core.c

@@ -975,9 +975,13 @@ static int dwc3_probe(struct platform_device *pdev)
 		goto err0;
 		goto err0;
 	}
 	}
 
 
-	if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
+	if (IS_ENABLED(CONFIG_USB_DWC3_HOST) &&
+			(dwc->dr_mode == USB_DR_MODE_OTG ||
+					dwc->dr_mode == USB_DR_MODE_UNKNOWN))
 		dwc->dr_mode = USB_DR_MODE_HOST;
 		dwc->dr_mode = USB_DR_MODE_HOST;
-	else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))
+	else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET) &&
+			(dwc->dr_mode == USB_DR_MODE_OTG ||
+					dwc->dr_mode == USB_DR_MODE_UNKNOWN))
 		dwc->dr_mode = USB_DR_MODE_PERIPHERAL;
 		dwc->dr_mode = USB_DR_MODE_PERIPHERAL;
 
 
 	if (dwc->dr_mode == USB_DR_MODE_UNKNOWN)
 	if (dwc->dr_mode == USB_DR_MODE_UNKNOWN)