diff mbox

[U-Boot,2/4] usb: dwc2: Pull Ext VBUS macro from dwc_otg_core_init()

Message ID 1461763446-6763-2-git-send-email-marex@denx.de
State Accepted
Commit 618da5630b5629d1c506be17f642502b483dab1a
Delegated to: Marek Vasut
Headers show

Commit Message

Marek Vasut April 27, 2016, 1:24 p.m. UTC
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 | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

Comments

Stefan Roese April 28, 2016, 6:17 a.m. UTC | #1
On 27.04.2016 15:24, Marek Vasut wrote:
> 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>

Tested-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan
diff mbox

Patch

diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index 637b6c0..5673220 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -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);