> On 22 Nov 2017, at 16:59, Marek Vasut <ma...@denx.de> wrote: > > On 11/22/2017 04:57 PM, Philipp Tomsich wrote: >> 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. > > Why ?
Simply because there will be multiple root hubs in the system, which may have multiple hubs attached. And the usb_hub_reset_devices() function was being called for every hub with just a port-number, but without the context of what number-space (i.e. hub) that port-number belonged to. The code in usb_hub previously was: /* * 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); So it would call usb_hub_reset_devices(1) for the first port of every attached hub (including the root-hubs). I.e. the implementation of usb_hub_reset_devices had no idea what (hub, port)-combination it was dealing with... > >> This adds an additional 'hub' parameter to usb_hub_reset_devices. >> Existing implementations are changed to simply ignore the new >> parameter. >> >> Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com> >> >> --- >> >> Changes in v2: >> - new in v2 >> >> board/compulab/cm_t54/cm_t54.c | 2 +- >> board/ti/omap5_uevm/evm.c | 2 +- >> common/usb_hub.c | 4 ++-- >> 3 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/board/compulab/cm_t54/cm_t54.c b/board/compulab/cm_t54/cm_t54.c >> index 31730a4..3e6235a 100644 >> --- a/board/compulab/cm_t54/cm_t54.c >> +++ b/board/compulab/cm_t54/cm_t54.c >> @@ -246,7 +246,7 @@ int ehci_hcd_stop(void) >> return ret; >> } >> >> -void usb_hub_reset_devices(int port) >> +void usb_hub_reset_devices(struct usb_hub_device *hub, int port) >> { >> /* The LAN9730 needs to be reset after the port power has been set. */ >> if (port == 3) { >> diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c >> index 4b25cc2..67242f5 100644 >> --- a/board/ti/omap5_uevm/evm.c >> +++ b/board/ti/omap5_uevm/evm.c >> @@ -249,7 +249,7 @@ int ehci_hcd_stop(void) >> return omap_ehci_hcd_stop(); >> } >> >> -void usb_hub_reset_devices(int port) >> +void usb_hub_reset_devices(struct usb_hub_device *hub, int port) >> { >> /* The LAN9730 needs to be reset after the port power has been set. */ >> if (port == 3) { >> diff --git a/common/usb_hub.c b/common/usb_hub.c >> index 325d16d..024dadb 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, >> > > > -- > Best regards, > Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot