usb: chipidea: imx: allow to configure oc polarity on i.MX25
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 4 Dec 2018 08:31:31 +0000 (09:31 +0100)
committerPeter Chen <peter.chen@nxp.com>
Tue, 11 Dec 2018 01:13:11 +0000 (09:13 +0800)
Up to now the polarity of the over current pin was hard coded to active
high. Use the already defined device tree properties to configure polarity
on i.MX25, too. In difference to i.MX6/7 use active high behavior if the
polarity is unspecified to keep compatibility to existing device trees.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
drivers/usb/chipidea/usbmisc_imx.c

index 4c3839d345cd3abd06716d68895e72b8dfc65ee8..097ffbca0bd9b0a6b6415fbfc11d5c1f562692c6 100644 (file)
@@ -136,6 +136,14 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
                val &= ~(MX25_OTG_SIC_MASK | MX25_OTG_PP_BIT);
                val |= (MX25_EHCI_INTERFACE_DIFF_UNI & MX25_EHCI_INTERFACE_MASK) << MX25_OTG_SIC_SHIFT;
                val |= (MX25_OTG_PM_BIT | MX25_OTG_OCPOL_BIT);
+
+               /*
+                * If the polarity is not configured assume active high for
+                * historical reasons.
+                */
+               if (data->oc_pol_configured && data->oc_pol_active_low)
+                       val &= ~MX25_OTG_OCPOL_BIT;
+
                writel(val, usbmisc->base);
                break;
        case 1:
@@ -145,6 +153,13 @@ static int usbmisc_imx25_init(struct imx_usbmisc_data *data)
                val |= (MX25_H1_PM_BIT | MX25_H1_OCPOL_BIT | MX25_H1_TLL_BIT |
                        MX25_H1_USBTE_BIT | MX25_H1_IPPUE_DOWN_BIT);
 
+               /*
+                * If the polarity is not configured assume active high for
+                * historical reasons.
+                */
+               if (data->oc_pol_configured && data->oc_pol_active_low)
+                       val &= ~MX25_H1_OCPOL_BIT;
+
                writel(val, usbmisc->base);
 
                break;