usb: dwc2: Pull Ext VBUS macro from dwc_otg_core_init()
authorMarek Vasut <marex@denx.de>
Wed, 27 Apr 2016 12:55:57 +0000 (14:55 +0200)
committerMarek Vasut <marex@denx.de>
Tue, 3 May 2016 17:21:17 +0000 (19:21 +0200)
Introduce a boolean flag in the dwc2 controller private data and set
it according to the macro (for now) instead of having this macro
directly in the dwc_otg_core_init(). This will let us configure the
flag from DT or such later on, if needed.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefan Roese <sr@denx.de>
Cc: Dinh Nguyen <dinguyen@kernel.org>
drivers/usb/host/dwc2.c

index 637b6c0297256997196200fbdd01306703f63340..567322013fd70e216a73c9aadf8f5de765378876 100644 (file)
@@ -39,6 +39,7 @@ struct dwc2_priv {
        u8 out_data_toggle[MAX_DEVICE][MAX_ENDPOINT];
        struct dwc2_core_regs *regs;
        int root_hub_devnum;
+       bool ext_vbus;
 };
 
 #ifndef CONFIG_DM_USB
@@ -263,13 +264,13 @@ static void dwc_otg_core_init(struct dwc2_priv *priv)
        usbcfg = readl(&regs->gusbcfg);
 
        /* Program the ULPI External VBUS bit if needed */
-#ifdef CONFIG_DWC2_PHY_ULPI_EXT_VBUS
-       usbcfg |= (DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV |
-                  DWC2_GUSBCFG_ULPI_INT_VBUS_INDICATOR |
-                  DWC2_GUSBCFG_INDICATOR_PASSTHROUGH);
-#else
-       usbcfg &= ~DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV;
-#endif
+       if (priv->ext_vbus) {
+               usbcfg |= (DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV |
+                          DWC2_GUSBCFG_ULPI_INT_VBUS_INDICATOR |
+                          DWC2_GUSBCFG_INDICATOR_PASSTHROUGH);
+       } else {
+               usbcfg &= ~DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV;
+       }
 
        /* Set external TS Dline pulsing */
 #ifdef CONFIG_DWC2_TS_DLINE
@@ -1057,6 +1058,12 @@ static int dwc2_init_common(struct dwc2_priv *priv)
                return -ENODEV;
        }
 
+#ifdef CONFIG_DWC2_PHY_ULPI_EXT_VBUS
+       priv->ext_vbus = 1;
+#else
+       priv->ext_vbus = 0;
+#endif
+
        dwc_otg_core_init(priv);
        dwc_otg_core_host_init(regs);