public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/2] Misc. USB fixes
@ 2014-09-20 15:03 Hans de Goede
  2014-09-20 15:03 ` [U-Boot] [PATCH 1/2] usb: Remove unnecessary portnr lookup from usb_new_device Hans de Goede
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Hans de Goede @ 2014-09-20 15:03 UTC (permalink / raw)
  To: u-boot

Hi Marek,

And last 2 misc. fixes for USB for next. The first patch is self explanatory,
the second patch is a result of me looking into why u-boot's usb scanning
is so sloooowwwwww, not that it really helps there, but it is a tiny start.

I've several other ideas how to speed things up, but those are more work,
I've written them down for now, I've no idea if / when I'll have time to
work on them.

Regards,

Hans

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH 1/2] usb: Remove unnecessary portnr lookup from usb_new_device
  2014-09-20 15:03 [U-Boot] [PATCH 0/2] Misc. USB fixes Hans de Goede
@ 2014-09-20 15:03 ` Hans de Goede
  2014-09-20 15:03 ` [U-Boot] [PATCH 2/2] usb: Do not power-cycle usb devices on init Hans de Goede
  2014-09-21 10:48 ` [U-Boot] [PATCH 0/2] Misc. USB fixes Marek Vasut
  2 siblings, 0 replies; 4+ messages in thread
From: Hans de Goede @ 2014-09-20 15:03 UTC (permalink / raw)
  To: u-boot

If the device has a parent, it is instantiated from usb_hub_port_connect_change
and the portnr is right there in dev->portnr, so there is no need for this
whole dance to look it up.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 common/usb.c | 19 ++-----------------
 1 file changed, 2 insertions(+), 17 deletions(-)

diff --git a/common/usb.c b/common/usb.c
index bd0f8d5..7d33a0f 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -927,7 +927,6 @@ int usb_new_device(struct usb_device *dev)
 	 * thread_id=5729457&forum_id=5398
 	 */
 	__maybe_unused struct usb_device_descriptor *desc;
-	int port = -1;
 	struct usb_device *parent = dev->parent;
 	unsigned short portstatus;
 
@@ -965,24 +964,10 @@ int usb_new_device(struct usb_device *dev)
 #endif
 
 	if (parent) {
-		int j;
-
-		/* find the port number we're at */
-		for (j = 0; j < parent->maxchild; j++) {
-			if (parent->children[j] == dev) {
-				port = j;
-				break;
-			}
-		}
-		if (port < 0) {
-			printf("usb_new_device:cannot locate device's port.\n");
-			return 1;
-		}
-
 		/* reset the port for the second time */
-		err = hub_port_reset(dev->parent, port, &portstatus);
+		err = hub_port_reset(dev->parent, dev->portnr - 1, &portstatus);
 		if (err < 0) {
-			printf("\n     Couldn't reset port %i\n", port);
+			printf("\n     Couldn't reset port %i\n", dev->portnr);
 			return 1;
 		}
 	}
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH 2/2] usb: Do not power-cycle usb devices on init
  2014-09-20 15:03 [U-Boot] [PATCH 0/2] Misc. USB fixes Hans de Goede
  2014-09-20 15:03 ` [U-Boot] [PATCH 1/2] usb: Remove unnecessary portnr lookup from usb_new_device Hans de Goede
@ 2014-09-20 15:03 ` Hans de Goede
  2014-09-21 10:48 ` [U-Boot] [PATCH 0/2] Misc. USB fixes Marek Vasut
  2 siblings, 0 replies; 4+ messages in thread
From: Hans de Goede @ 2014-09-20 15:03 UTC (permalink / raw)
  To: u-boot

Do as the Linux kernel does and power on any ports which are not yet one,
this is enough.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 common/usb_hub.c | 39 ---------------------------------------
 1 file changed, 39 deletions(-)

diff --git a/common/usb_hub.c b/common/usb_hub.c
index c416e5e..0f1eab4 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -86,50 +86,11 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
 	int i;
 	struct usb_device *dev;
 	unsigned pgood_delay = hub->desc.bPwrOn2PwrGood * 2;
-	ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);
-	unsigned short portstatus;
-	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.
-	 */
 	debug("enabling power on all ports\n");
 	for (i = 0; i < dev->maxchild; i++) {
-		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);
-
-	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);
-			continue;
-		}
-
-		/*
-		 * Check to confirm the state of Port Power:
-		 * xHCI says "After modifying PP, s/w shall read
-		 * PP and confirm that it has reached the desired state
-		 * before modifying it again, undefined behavior may occur
-		 * if this procedure is not followed".
-		 * EHCI doesn't say anything like this, but no harm in keeping
-		 * this.
-		 */
-		portstatus = le16_to_cpu(portsts->wPortStatus);
-		if (portstatus & (USB_PORT_STAT_POWER << 1)) {
-			debug("port %d: Port power change failed\n", i + 1);
-			continue;
-		}
-	}
-
-	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);
 	}
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH 0/2] Misc. USB fixes
  2014-09-20 15:03 [U-Boot] [PATCH 0/2] Misc. USB fixes Hans de Goede
  2014-09-20 15:03 ` [U-Boot] [PATCH 1/2] usb: Remove unnecessary portnr lookup from usb_new_device Hans de Goede
  2014-09-20 15:03 ` [U-Boot] [PATCH 2/2] usb: Do not power-cycle usb devices on init Hans de Goede
@ 2014-09-21 10:48 ` Marek Vasut
  2 siblings, 0 replies; 4+ messages in thread
From: Marek Vasut @ 2014-09-21 10:48 UTC (permalink / raw)
  To: u-boot

On Saturday, September 20, 2014 at 05:03:51 PM, Hans de Goede wrote:
> Hi Marek,
> 
> And last 2 misc. fixes for USB for next. The first patch is self
> explanatory, the second patch is a result of me looking into why u-boot's
> usb scanning is so sloooowwwwww, not that it really helps there, but it is
> a tiny start.
> 
> I've several other ideas how to speed things up, but those are more work,
> I've written them down for now, I've no idea if / when I'll have time to
> work on them.

Applied both, thanks a lot!

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-09-21 10:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-20 15:03 [U-Boot] [PATCH 0/2] Misc. USB fixes Hans de Goede
2014-09-20 15:03 ` [U-Boot] [PATCH 1/2] usb: Remove unnecessary portnr lookup from usb_new_device Hans de Goede
2014-09-20 15:03 ` [U-Boot] [PATCH 2/2] usb: Do not power-cycle usb devices on init Hans de Goede
2014-09-21 10:48 ` [U-Boot] [PATCH 0/2] Misc. USB fixes Marek Vasut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox