diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-05-28 12:14:59 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-05-31 15:55:58 +0200 |
commit | 76e4198d895aa12395a58aceb96811ccf191bc8c (patch) | |
tree | 6070b365a69646bd8548b080b324b2c0eefcaf96 | |
parent | 198263086608056334ee5500564c0939e4fdb146 (diff) | |
download | barebox-76e4198d895aa12395a58aceb96811ccf191bc8c.tar.gz |
usb: i.MX chipidea: Add overcurrent disable flag for i.MX6
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/usb/imx/chipidea-imx.c | 3 | ||||
-rw-r--r-- | drivers/usb/imx/imx-usb-misc.c | 10 | ||||
-rw-r--r-- | include/usb/chipidea-imx.h | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c index 508dbd8a08..928ebf31d9 100644 --- a/drivers/usb/imx/chipidea-imx.c +++ b/drivers/usb/imx/chipidea-imx.c @@ -108,6 +108,9 @@ static int imx_chipidea_probe_dt(struct imx_chipidea *ci) return -EINVAL; } + if (of_find_property(ci->dev->device_node, "disable-over-current")) + ci->flags |= MXC_EHCI_DISABLE_OVERCURRENT; + return 0; } diff --git a/drivers/usb/imx/imx-usb-misc.c b/drivers/usb/imx/imx-usb-misc.c index 647f6b3c55..51d549c2c5 100644 --- a/drivers/usb/imx/imx-usb-misc.c +++ b/drivers/usb/imx/imx-usb-misc.c @@ -347,6 +347,9 @@ static __maybe_unused struct imx_usb_misc_data mx5_data = { .init = mx5_initialize_usb_hw, }; +#define MX6_USB_CTRL(n) ((n) * 4) +#define MX6_USB_CTRL_OVER_CUR_DIS (1 << 7) + static void mx6_hsic_pullup(unsigned long reg, int on) { u32 val; @@ -364,10 +367,15 @@ static void mx6_hsic_pullup(unsigned long reg, int on) static __maybe_unused int mx6_initialize_usb_hw(void __iomem *base, int port, unsigned int flags) { + u32 val; + switch (port) { case 0: - break; case 1: + val = readl(base + MX6_USB_CTRL(port)); + if (flags & MXC_EHCI_DISABLE_OVERCURRENT) + val |= MX6_USB_CTRL_OVER_CUR_DIS; + writel(val, base + MX6_USB_CTRL(port)); break; case 2: /* HSIC port */ mx6_hsic_pullup(0x388, 0); diff --git a/include/usb/chipidea-imx.h b/include/usb/chipidea-imx.h index 3f9f61ee17..5801cf15e7 100644 --- a/include/usb/chipidea-imx.h +++ b/include/usb/chipidea-imx.h @@ -32,6 +32,8 @@ #define MXC_EHCI_WAKEUP_ENABLED (1 << 12) #define MXC_EHCI_ITC_NO_THRESHOLD (1 << 13) +#define MXC_EHCI_DISABLE_OVERCURRENT (1 << 14) + enum imx_usb_mode { IMX_USB_MODE_HOST, IMX_USB_MODE_DEVICE, |