|
@@ -21,6 +21,7 @@
|
|
|
#include <asm/io.h>
|
|
|
#include <dm/device_compat.h>
|
|
|
#include <linux/delay.h>
|
|
|
+#include <linux/usb/otg.h>
|
|
|
#include <power/regulator.h>
|
|
|
#include <reset.h>
|
|
|
|
|
@@ -1204,7 +1205,13 @@ static int dwc2_init_common(struct udevice *dev, struct dwc2_priv *priv)
|
|
|
#endif
|
|
|
|
|
|
dwc_otg_core_init(dev);
|
|
|
- dwc_otg_core_host_init(dev, regs);
|
|
|
+
|
|
|
+ if (usb_get_dr_mode(dev_ofnode(dev)) == USB_DR_MODE_PERIPHERAL) {
|
|
|
+ dev_dbg(dev, "USB device %s dr_mode set to %d. Skipping host_init.\n",
|
|
|
+ dev->name, usb_get_dr_mode(dev_ofnode(dev)));
|
|
|
+ } else {
|
|
|
+ dwc_otg_core_host_init(dev, regs);
|
|
|
+ }
|
|
|
|
|
|
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA |
|
|
|
DWC2_HPRT0_PRTCONNDET | DWC2_HPRT0_PRTENCHNG |
|