[U-Boot] [PATCH] dm: usb: setup ehci gadget before usb is probed
Ramon Fried
ramon.fried at gmail.com
Mon May 21 15:00:06 UTC 2018
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.
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;
--
2.17.0
More information about the U-Boot
mailing list