[PATCH v1 2/7] usb: ehci-mx6: Fix usb_oc_config() for i.MX7/8M/9/7ULP/8 and 8ULP platforms

alice.guo at oss.nxp.com alice.guo at oss.nxp.com
Tue Dec 16 07:38:34 CET 2025


From: Alice Guo <alice.guo at nxp.com>

The usb_oc_config() function previously assumed that the overcurrent
control register index always matches the USB controller index, which is
true for i.MX6 but not for i.MX7/8M/9/7ULP/8/8ULP. On these platforms,
the overcurrent control is located in the USB OTG Control 1 register,
which is always at index 0.

Signed-off-by: Alice Guo <alice.guo at nxp.com>
---
 drivers/usb/host/ehci-mx6.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index cfaf49d67f0..03ff4ce10d5 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -280,7 +280,12 @@ static void ehci_mx6_powerup_fixup(struct ehci_ctrl *ctrl, uint32_t *status_reg,
 /* Should be done in the MXS PHY driver */
 static void usb_oc_config(struct usbnc_regs *usbnc, int index)
 {
+#if defined(CONFIG_MX6)
 	void __iomem *ctrl = (void __iomem *)(&usbnc->ctrl[index]);
+#elif defined(CONFIG_USB_EHCI_MX7) || defined(CONFIG_MX7ULP) || defined(CONFIG_IMX8) || \
+      defined(CONFIG_IMX8ULP)
+	void __iomem *ctrl = (void __iomem *)(&usbnc->ctrl[0]);
+#endif
 
 	setbits_le32(ctrl, UCTRL_OVER_CUR_POL);
 

-- 
2.43.0



More information about the U-Boot mailing list