diff options
Diffstat (limited to 'drivers/usb/chipidea/usbmisc_imx.c')
-rw-r--r-- | drivers/usb/chipidea/usbmisc_imx.c | 20 |
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 | } |