[PATCH 04/13] usb: ehci-mx6: Turn on the power domain of USB PHY

peng.fan at nxp.com peng.fan at nxp.com
Wed Sep 16 14:56:56 CEST 2020


From: Ye Li <ye.li at nxp.com>

Since there is no uclass for USB PHY. The device won't be setup for the USB PHY
node in DTB. And its associated power domain device won't be turned on neither
by DM framework.

This patch modifies the ehci-mx6 driver to enable the power domain device before
access the USB PHY. This is only for DM driver. For non-DM part, users still
need to power on the USB PHY in boards/SoC codes.

Reviewed-by: Peng Fan <peng.fan at nxp.com>
Signed-off-by: Ye Li <ye.li at nxp.com>
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 drivers/usb/host/ehci-mx6.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index b1721cd915..0727aafc92 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -2,6 +2,7 @@
 /*
  * Copyright (c) 2009 Daniel Mack <daniel at caiaq.de>
  * Copyright (C) 2010 Freescale Semiconductor, Inc.
+ *
  */
 
 #include <common.h>
@@ -19,6 +20,7 @@
 #include <asm/mach-imx/sys_proto.h>
 #include <dm.h>
 #include <asm/mach-types.h>
+#include <power-domain.h>
 #include <power/regulator.h>
 #include <linux/iopoll.h>
 #include <linux/usb/otg.h>
@@ -569,6 +571,20 @@ static int ehci_usb_phy_mode(struct udevice *dev)
 		if ((fdt_addr_t)addr == FDT_ADDR_T_NONE)
 			return -EINVAL;
 
+		/* Need to power on the PHY before access it */
+#if CONFIG_IS_ENABLED(POWER_DOMAIN)
+		struct udevice phy_dev;
+		struct power_domain pd;
+		int ret;
+
+		phy_dev.node = offset_to_ofnode(phy_off);
+		if (!power_domain_get(&phy_dev, &pd)) {
+			ret = power_domain_on(&pd);
+			if (ret)
+				return ret;
+		}
+#endif
+
 		phy_ctrl = (void __iomem *)(addr + USBPHY_CTRL);
 		val = readl(phy_ctrl);
 
-- 
2.28.0



More information about the U-Boot mailing list