aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/usbmisc_imx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/chipidea/usbmisc_imx.c')
-rw-r--r--drivers/usb/chipidea/usbmisc_imx.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index a52f5a86f177..1f47ef625069 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -151,14 +151,18 @@ static int usbmisc_imx25_post(struct imx_usbmisc_data *data)
151 if (data->index) 151 if (data->index)
152 return 0; 152 return 0;
153 153
154 if (data->evdo) { 154 spin_lock_irqsave(&usbmisc->lock, flags);
155 spin_lock_irqsave(&usbmisc->lock, flags); 155 reg = usbmisc->base + MX25_USB_PHY_CTRL_OFFSET;
156 reg = usbmisc->base + MX25_USB_PHY_CTRL_OFFSET; 156 val = readl(reg);
157 val = readl(reg); 157
158 writel(val | MX25_BM_EXTERNAL_VBUS_DIVIDER, reg); 158 if (data->evdo)
159 spin_unlock_irqrestore(&usbmisc->lock, flags); 159 val |= MX25_BM_EXTERNAL_VBUS_DIVIDER;
160 usleep_range(5000, 10000); /* needed to stabilize voltage */ 160 else
161 } 161 val &= ~MX25_BM_EXTERNAL_VBUS_DIVIDER;
162
163 writel(val, reg);
164 spin_unlock_irqrestore(&usbmisc->lock, flags);
165 usleep_range(5000, 10000); /* needed to stabilize voltage */
162 166
163 return 0; 167 return 0;
164} 168}