[U-Boot] [PATCH 09/14] usb: hub: Clear port reset before usb_hub_port_connect_change()

Stefan Roese sr at denx.de
Fri Sep 22 05:03:55 UTC 2017


On 18.09.2017 15:40, Bin Meng wrote:
> During usb_hub_port_connect_change(), a port reset set feature
> request is issued to the port, and later a port reset clear feature
> is done to the same port before the function returns. However at
> the end of usb_scan_port(), we attempt to clear port reset again
> on a cached port status change variable, which should not be done.
> 
> Adjust the call to clear port reset to right before the call to
> usb_hub_port_connect_change().
> 
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
> 
>   common/usb_hub.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/common/usb_hub.c b/common/usb_hub.c
> index 86a3477..a9d21bc 100644
> --- a/common/usb_hub.c
> +++ b/common/usb_hub.c
> @@ -489,6 +489,11 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
>   		return 0;
>   	}
>   
> +	if (portchange & USB_PORT_STAT_C_RESET) {
> +		debug("port %d reset change\n", i + 1);
> +		usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_RESET);
> +	}
> +
>   	/* A new USB device is ready at this point */
>   	debug("devnum=%d port=%d: USB dev found\n", dev->devnum, i + 1);
>   
> @@ -543,11 +548,6 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
>   		       hub->overcurrent_count[i]);
>   	}
>   
> -	if (portchange & USB_PORT_STAT_C_RESET) {
> -		debug("port %d reset change\n", i + 1);
> -		usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_RESET);
> -	}
> -
>   	/*
>   	 * We're done with this device, so let's remove this device from
>   	 * scanning list
> 

Reviewed-by: Stefan Roese <sr at denx.de>
Tested-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan


More information about the U-Boot mailing list