usb: chipidea: usbmisc: evdo can be set e/o reset
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>
This commit is contained in:
Родитель
9618d09349
Коммит
26250d540d
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче