diff options
Diffstat (limited to 'drivers/usb/musb/ux500.c')
-rw-r--r-- | drivers/usb/musb/ux500.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/musb/ux500.c b/drivers/usb/musb/ux500.c index 2f089ddcd46..c1a205cd5e3 100644 --- a/drivers/usb/musb/ux500.c +++ b/drivers/usb/musb/ux500.c @@ -311,6 +311,7 @@ static void ux500_musb_set_vbus(struct musb *musb, int is_on) u8 devctl; unsigned long timeout = jiffies + msecs_to_jiffies(1000); int ret = 1; + struct musb_hdrc_platform_data *plat = musb->controller->platform_data; #ifdef CONFIG_USB_OTG_20 int val = 0; #endif @@ -323,6 +324,17 @@ static void ux500_musb_set_vbus(struct musb *musb, int is_on) val |= 0x1C; musb_writeb(musb->mregs, MUSB_MISC, val); #endif + + /* Use EXTVBUS */ + u8 busctl = musb_read_ulpi_buscontrol(musb->mregs); + if (plat->extvbus) { + busctl |= MUSB_ULPI_USE_EXTVBUS; + musb_write_ulpi_buscontrol(musb->mregs, busctl); + } else { + busctl &= ~MUSB_ULPI_USE_EXTVBUS; + musb_write_ulpi_buscontrol(musb->mregs, busctl); + } + devctl = musb_readb(musb->mregs, MUSB_DEVCTL); if (is_on) { |