[PATCH 2/7] usb: ehci-omap: Move omap_ehci_hcd_init to omap_ehci_probe

Adam Ford aford173 at gmail.com
Sun Feb 20 00:08:42 CET 2022


The OMAP3 hierarchy has the ehci node as a sub-node of the
usbhshost. The usbhshost node contains an ohci and an ehci
subnode.  The configuration of the ehci belongs in the
EHCI node and not its parent.  Move it to the proper probe.

usb start
  starting USB...
  Bus ehci at 48064800: USB EHCI 1.00
  Bus usb_otg_hs at 480ab000: Port not available.
  scanning bus ehci at 48064800 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found

Signed-off-by: Adam Ford <aford173 at gmail.com>
---
 drivers/usb/host/ehci-omap.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index d34c0add4a..5f79279fe2 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -312,7 +312,7 @@ static int omap_usbhs_probe(struct udevice *dev)
 			omap_usbhs_set_mode(i, mode);
 	}
 
-	return omap_ehci_hcd_init(0, &usbhs_bdata);
+	return 0;
 }
 
 static const struct udevice_id omap_usbhs_dt_ids[] = {
@@ -355,6 +355,7 @@ static int omap_ehci_probe(struct udevice *dev)
 	struct ehci_omap_priv_data *priv = dev_get_priv(dev);
 	struct ehci_hccr *hccr;
 	struct ehci_hcor *hcor;
+	int ret;
 
 	priv->ehci = dev_read_addr_ptr(dev);
 	priv->portnr = dev_seq(dev);
@@ -363,6 +364,10 @@ static int omap_ehci_probe(struct udevice *dev)
 	hccr = (struct ehci_hccr *)&priv->ehci->hccapbase;
 	hcor = (struct ehci_hcor *)&priv->ehci->usbcmd;
 
+	ret = omap_ehci_hcd_init(0, &usbhs_bdata);
+	if (ret)
+		return ret;
+
 	return ehci_register(dev, hccr, hcor, NULL, 0, USB_INIT_HOST);
 }
 
-- 
2.32.0



More information about the U-Boot mailing list