* [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