From: Alice Guo <[email protected]> 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 <[email protected]> --- 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

