]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
usb: chipidea: usbmisc: evdo can be set e/o reset
authorMichael Trimarchi <michael@amarulasolutions.com>
Thu, 29 Mar 2018 09:52:46 +0000 (17:52 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Mar 2018 10:03:01 +0000 (12:03 +0200)
evdo bit can be set or reset. We can not trust evdo bit
status after bootloader stage

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/chipidea/usbmisc_imx.c

index a52f5a86f1770e4c4e106824cffd01d9cea9ce11..1f47ef6250693cfc724bc8acc9cd12ae15fdff94 100644 (file)
@@ -151,14 +151,18 @@ static int usbmisc_imx25_post(struct imx_usbmisc_data *data)
        if (data->index)
                return 0;
 
-       if (data->evdo) {
-               spin_lock_irqsave(&usbmisc->lock, flags);
-               reg = usbmisc->base + MX25_USB_PHY_CTRL_OFFSET;
-               val = readl(reg);
-               writel(val | MX25_BM_EXTERNAL_VBUS_DIVIDER, reg);
-               spin_unlock_irqrestore(&usbmisc->lock, flags);
-               usleep_range(5000, 10000); /* needed to stabilize voltage */
-       }
+       spin_lock_irqsave(&usbmisc->lock, flags);
+       reg = usbmisc->base + MX25_USB_PHY_CTRL_OFFSET;
+       val = readl(reg);
+
+       if (data->evdo)
+               val |= MX25_BM_EXTERNAL_VBUS_DIVIDER;
+       else
+               val &= ~MX25_BM_EXTERNAL_VBUS_DIVIDER;
+
+       writel(val, reg);
+       spin_unlock_irqrestore(&usbmisc->lock, flags);
+       usleep_range(5000, 10000); /* needed to stabilize voltage */
 
        return 0;
 }