diff mbox

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

Message ID 1373302969-9794-1-git-send-email-marex@denx.de
State Not Applicable
Delegated to: Marek Vasut
Headers show

Commit Message

Marek Vasut July 8, 2013, 5:02 p.m. UTC
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@denx.de>
Cc: Vivek Gautam <gautamvivek1987@gmail.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
---
 common/usb_hub.c |   19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

Comments

Marek Vasut July 9, 2013, 1:15 p.m. UTC | #1
Hi,

> 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@denx.de>
> Cc: Vivek Gautam <gautamvivek1987@gmail.com>
> Cc: Stephen Warren <swarren@wwwdotorg.org>
> ---
>  common/usb_hub.c |   19 +++++++------------
>  1 file changed, 7 insertions(+), 12 deletions(-)

Please ignore both patches, the problem was resolved by:

http://www.mail-archive.com/u-boot@lists.denx.de/msg112944.html

Best regards,
Marek Vasut
diff mbox

Patch

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);
 	}