diff options
author | Haoran.Wang <elven.wang@nxp.com> | 2017-09-05 19:12:23 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-09-05 19:12:23 +0000 |
commit | fa6989e0268381a1ba83da50807304eb55a8a03a (patch) | |
tree | af084ccf96b2a5a67ae87f23c745177bcfec7e0a | |
parent | 868bc838d37318c6de03d504ca70f48dfb2e0287 (diff) | |
parent | 4a319775244435c37542f2c1a8768c69c7bbe040 (diff) | |
download | imx-v4.1-o-mr1-iot-preview-7.tar.gz |
chipidea: imx: add usb vbus power polarity setting am: 11c709d2e7android-o-mr1-iot-preview-8android-o-mr1-iot-preview-7android-o-mr1-iot-preview-6o-mr1-iot-preview-8o-mr1-iot-preview-7o-mr1-iot-preview-6
am: 4a31977524
Change-Id: I1b65bf7932e8569e1d4e1182021b08e2e10c54c4
-rw-r--r-- | arch/arm/boot/dts/imx6ul-nxpu-iopb.dts | 2 | ||||
-rw-r--r-- | drivers/usb/chipidea/ci_hdrc_imx.c | 3 | ||||
-rw-r--r-- | drivers/usb/chipidea/ci_hdrc_imx.h | 1 | ||||
-rw-r--r-- | drivers/usb/chipidea/usbmisc_imx.c | 7 |
4 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/imx6ul-nxpu-iopb.dts b/arch/arm/boot/dts/imx6ul-nxpu-iopb.dts index 0fef6acedd2a..49009eeb7432 100644 --- a/arch/arm/boot/dts/imx6ul-nxpu-iopb.dts +++ b/arch/arm/boot/dts/imx6ul-nxpu-iopb.dts @@ -230,6 +230,7 @@ imx6ul-nxpu-iopb { pinctrl_hog_1: hoggrp-1 { fsl,pins = < + MX6UL_PAD_ENET2_TX_DATA1__USB_OTG2_PWR 0x80000000 MX6UL_PAD_CSI_DATA01__SAI1_MCLK 0x17088 >; }; @@ -461,6 +462,7 @@ &usbotg2 { dr_mode = "host"; disable-over-current; + power-polarity-active-high; status = "okay"; }; diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index d3b1e77cb4ec..07f2bd2f3b31 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -196,6 +196,9 @@ static struct imx_usbmisc_data *usbmisc_get_init_data(struct device *dev) if (of_find_property(np, "disable-over-current", NULL)) data->disable_oc = 1; + if (of_find_property(np, "power-polarity-active-high", NULL)) + data->pwr_polarity = 1; + if (of_find_property(np, "external-vbus-divider", NULL)) data->evdo = 1; diff --git a/drivers/usb/chipidea/ci_hdrc_imx.h b/drivers/usb/chipidea/ci_hdrc_imx.h index bdcf1b724abe..f4e29f14adff 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.h +++ b/drivers/usb/chipidea/ci_hdrc_imx.h @@ -45,6 +45,7 @@ struct imx_usbmisc_data { struct usb_charger *charger; unsigned int disable_oc:1; /* over current detect disabled */ + unsigned int pwr_polarity:1; /* polarity of enable vbus from pmic */ unsigned int evdo:1; /* set external vbus divider option */ /* * Specifies the delay between powering up the xtal 24MHz clock diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 840a10805af4..ae8bad3e89de 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -58,6 +58,7 @@ #define MX6_BM_NON_BURST_SETTING BIT(1) #define MX6_BM_OVER_CUR_DIS BIT(7) +#define MX6_BM_PRW_POLARITY BIT(9) #define MX6_BM_WAKEUP_ENABLE BIT(10) #define MX6_BM_UTMI_ON_CLOCK BIT(13) #define MX6_BM_ID_WAKEUP BIT(16) @@ -399,6 +400,12 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data) writel(reg | MX6_BM_NON_BURST_SETTING, usbmisc->base + data->index * 4); + if (data->pwr_polarity) { + reg = readl(usbmisc->base + data->index * 4); + reg |= MX6_BM_PRW_POLARITY; + writel(reg, usbmisc->base + data->index * 4); + } + /* For HSIC controller */ if (data->index == 2 || data->index == 3) { val = readl(usbmisc->base + data->index * 4); |