[U-Boot] [PATCH v3 1/3] usb: hub: identify the hub-device to usb_hub_reset_devices

Marek Vasut marex at denx.de
Wed Nov 22 16:23:51 UTC 2017


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.tomsich at theobroma-systems.com>
> Tested-by: Jakob Unterwurzacher <jakob.unterwurzacher at theobroma-systems.com>

Reviewed-by: Marek Vasut <marex at 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


More information about the U-Boot mailing list