summaryrefslogtreecommitdiff
path: root/common/usb_hub.c
diff options
context:
space:
mode:
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>2017-11-22 17:15:17 +0100
committerMarek Vasut <marek.vasut+renesas@gmail.com>2017-11-26 02:22:36 +0100
commit883946e8e7c5dacb5e12f18703e20d49a4886f0e (patch)
treedc763ce48174685b87c9001fff21ff85149f3ba8 /common/usb_hub.c
parentb3cbcd902db7019410dfe3729a660abcb1f03ffb (diff)
usb: hub: identify the hub-device to usb_hub_reset_devices
When usb_hub_reset_devices is called, it should be passed both an indicator which hub it should operate on and what port number (local to that hub) should be reset. Previously, the usb_hub.c code did not include such context and always started resets from port number 1, performing multiple reset-requests for the same devices: /* * Reset any devices that may be in a bad state when applying * the power. This is a __weak function. Resetting of the devices * should occur in the board file of the device. */ for (i = 0; i < dev->maxchild; i++) usb_hub_reset_devices(i + 1); This adds an additional 'hub' parameter to usb_hub_reset_devices that provides the context to fully qualify the port-number in. Existing implementations are changed to accept and ignore the new parameter. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
Diffstat (limited to 'common/usb_hub.c')
-rw-r--r--common/usb_hub.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/common/usb_hub.c b/common/usb_hub.c
index 325d16dfc8..024dadb277 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -57,7 +57,7 @@ struct usb_device_scan {
static LIST_HEAD(usb_scan_list);
-__weak void usb_hub_reset_devices(int port)
+__weak void usb_hub_reset_devices(struct usb_hub_device *hub, int port)
{
return;
}
@@ -853,7 +853,7 @@ static int usb_hub_configure(struct usb_device *dev)
* should occur in the board file of the device.
*/
for (i = 0; i < dev->maxchild; i++)
- usb_hub_reset_devices(i + 1);
+ usb_hub_reset_devices(hub, i + 1);
/*
* Only add the connected USB devices, including potential hubs,