[U-Boot] [PATCH] dm: usb: setup ehci gadget before usb is probed

Marek Vasut marex at denx.de
Mon May 21 15:08:14 UTC 2018


On 05/21/2018 05:00 PM, Ramon Fried wrote:
> usb_setup_ehci_gadget() looks for a loaded USB class driver,
> then it unloads it and loads it again as a device instead of host.
> This change loads the USB class driver as device if it wasn't loaded
> in the first place.

To achieve what ? What is the purpose of this patch ? Are you fixing a
bug or improving the code or what ?

> Signed-off-by: Ramon Fried <ramon.fried at gmail.com>
> ---
>  drivers/usb/host/usb-uclass.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
> index 611ea97a72..7ab7e8990c 100644
> --- a/drivers/usb/host/usb-uclass.c
> +++ b/drivers/usb/host/usb-uclass.c
> @@ -380,17 +380,22 @@ struct usb_device *usb_get_dev_index(struct udevice *bus, int index)
>  
>  int usb_setup_ehci_gadget(struct ehci_ctrl **ctlrp)
>  {
> +	TRACE();
>  	struct usb_platdata *plat;
>  	struct udevice *dev;
>  	int ret;
>  
>  	/* Find the old device and remove it */
>  	ret = uclass_find_device_by_seq(UCLASS_USB, 0, true, &dev);
> -	if (ret)
> -		return ret;
> -	ret = device_remove(dev, DM_REMOVE_NORMAL);
> -	if (ret)
> -		return ret;
> +	if (ret) {
> +		ret = uclass_find_device(UCLASS_USB, 0, &dev);
> +		if (ret)
> +			return ret;
> +	} else {
> +		ret = device_remove(dev, DM_REMOVE_NORMAL);
> +		if (ret)
> +			return ret;
> +	}
>  
>  	plat = dev_get_platdata(dev);
>  	plat->init_type = USB_INIT_DEVICE;
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list