[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