On 11/22/2017 05:15 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. > > 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.toms...@theobroma-systems.com> > Tested-by: Jakob Unterwurzacher <jakob.unterwurzac...@theobroma-systems.com>
Reviewed-by: Marek Vasut <ma...@denx.de> This is part of a series, what;s the plan here. Pull it via usb or some other tree ? > --- > > Changes in v3: > - updated commit message > > 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