diff options
Diffstat (limited to 'drivers/usb')
| -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 | } |
