[U-Boot] [PATCH 1/2] Revert "usb: hub: Parallelize power-cycling of root-hub ports"

Marek Vasut marex at denx.de
Mon Jul 8 19:02:48 CEST 2013


This reverts commit 0bf796f7ae22086f0504f3297e9fb4e96aa04161.

This commit causes breakage of the EHCI, where on Tegra it is not
possible to run "usb reset" twice as it results in the board hang.

Signed-off-by: Marek Vasut <marex at denx.de>
Cc: Vivek Gautam <gautamvivek1987 at gmail.com>
Cc: Stephen Warren <swarren at wwwdotorg.org>
---
 common/usb_hub.c |   19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/common/usb_hub.c b/common/usb_hub.c
index 774ba63..dd2056a 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -109,22 +109,19 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
 	int ret;
 
 	dev = hub->pusb_dev;
-
-	/*
-	 * Enable power to the ports:
-	 * Here we Power-cycle the ports: aka,
-	 * turning them off and turning on again.
-	 */
+	/* Enable power to the ports */
 	debug("enabling power on all ports\n");
 	for (i = 0; i < dev->maxchild; i++) {
+		/*
+		 * Power-cycle the ports here: aka,
+		 * turning them off and turning on again.
+		 */
 		usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
 		debug("port %d returns %lX\n", i + 1, dev->status);
-	}
 
-	/* Wait at least 2*bPwrOn2PwrGood for PP to change */
-	mdelay(pgood_delay);
+		/* Wait at least 2*bPwrOn2PwrGood for PP to change */
+		mdelay(pgood_delay);
 
-	for (i = 0; i < dev->maxchild; i++) {
 		ret = usb_get_port_status(dev, i + 1, portsts);
 		if (ret < 0) {
 			debug("port %d: get_port_status failed\n", i + 1);
@@ -145,9 +142,7 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
 			debug("port %d: Port power change failed\n", i + 1);
 			return;
 		}
-	}
 
-	for (i = 0; i < dev->maxchild; i++) {
 		usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
 		debug("port %d returns %lX\n", i + 1, dev->status);
 	}
-- 
1.7.10.4



More information about the U-Boot mailing list