summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2020-12-11 13:31:13 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2020-12-11 13:31:13 +0100
commit5530a4248036e3d873aee816e4ce596aa2aff600 (patch)
tree6df29a44a3c84a81dc6d5f30d57c586c8140810e /drivers/usb
parent5264daae51117bce522333b3b9a797bbac29edc9 (diff)
parenteca2a6194514a6decd798c9a235fbb2f3f5258ab (diff)
downloadbarebox-5530a4248036e3d873aee816e4ce596aa2aff600.tar.gz
barebox-5530a4248036e3d873aee816e4ce596aa2aff600.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/imx/chipidea-imx.c3
-rw-r--r--drivers/usb/imx/imx-usb-misc.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/imx/chipidea-imx.c b/drivers/usb/imx/chipidea-imx.c
index b1a77a1637..b144f41437 100644
--- a/drivers/usb/imx/chipidea-imx.c
+++ b/drivers/usb/imx/chipidea-imx.c
@@ -168,6 +168,9 @@ static int imx_chipidea_probe_dt(struct imx_chipidea *ci)
"over-current-active-high", NULL))
ci->flags |= MXC_EHCI_OC_PIN_ACTIVE_LOW;
+ if (of_find_property(ci->dev->device_node, "power-active-high", NULL))
+ ci->flags |= MXC_EHCI_PWR_PIN_ACTIVE_HIGH;
+
if (of_usb_get_maximum_speed(ci->dev->device_node, NULL) ==
USB_SPEED_FULL)
ci->flags |= MXC_EHCI_PFSC;
diff --git a/drivers/usb/imx/imx-usb-misc.c b/drivers/usb/imx/imx-usb-misc.c
index 3a5ec236e5..b663d073aa 100644
--- a/drivers/usb/imx/imx-usb-misc.c
+++ b/drivers/usb/imx/imx-usb-misc.c
@@ -354,6 +354,7 @@ static __maybe_unused struct imx_usb_misc_data mx5_data = {
#define MX6_USB_CTRL(n) ((n) * 4)
#define MX6_USB_CTRL_OVER_CUR_DIS (1 << 7)
#define MX6_USB_CTRL_OVER_CUR_ACT_HIGH (1 << 8)
+#define MX6_USB_CTRL_PWR_POLARITY (1 << 9)
static void mx6_hsic_pullup(unsigned long reg, int on)
{
@@ -380,6 +381,8 @@ static __maybe_unused int mx6_initialize_usb_hw(void __iomem *base, int port,
val = readl(base + MX6_USB_CTRL(port));
if (flags & MXC_EHCI_DISABLE_OVERCURRENT)
val |= MX6_USB_CTRL_OVER_CUR_DIS;
+ if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
+ val |= MX6_USB_CTRL_PWR_POLARITY;
writel(val, base + MX6_USB_CTRL(port));
break;
case 2: /* HSIC port */
@@ -454,6 +457,8 @@ static int usbmisc_imx7d_init(void __iomem *base, int port,
else
reg |= MX6_USB_CTRL_OVER_CUR_ACT_HIGH;
}
+ if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
+ reg |= MX6_USB_CTRL_PWR_POLARITY;
writel(reg, base);
reg = readl(base + MX7D_USBNC_USB_CTRL2);