diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index fcc1803bcd4f1a221f529949791f63c6631c9e87..9948b9cd30e7742354f31a829ddd6c8c7da25e5e 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -64,6 +64,19 @@ static void omap3_evm_get_revision(void) } } +/* + * MUSB port on OMAP3EVM Rev >= E requires extvbus programming. + */ +u8 omap3_evm_need_extvbus(void) +{ + u8 retval = 0; + + if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) + retval = 1; + + return retval; +} + /* * Routine: board_init * Description: Early hardware init. diff --git a/drivers/usb/musb/omap3.c b/drivers/usb/musb/omap3.c index 785629cb7baf5627f1c76606d42fcad7cfa44868..a983552357c16e185064a71a9a7f79d2b553089b 100644 --- a/drivers/usb/musb/omap3.c +++ b/drivers/usb/musb/omap3.c @@ -119,6 +119,9 @@ int musb_platform_init(void) stdby &= ~OMAP3_OTG_FORCESTDBY_STANDBY; writel(stdby, &otg->forcestdby); +#ifdef CONFIG_OMAP3_EVM + musb_cfg.extvbus = omap3_evm_need_extvbus(); +#endif platform_needs_initialization = 0; } diff --git a/drivers/usb/musb/omap3.h b/drivers/usb/musb/omap3.h index b591862b2d2b6262ce0bb5471e397c40c6c01506..c934e0cadd1b49316bb410d42bc056780f6572ae 100644 --- a/drivers/usb/musb/omap3.h +++ b/drivers/usb/musb/omap3.h @@ -44,4 +44,8 @@ int musb_platform_init(void); +#ifdef CONFIG_OMAP3_EVM +extern u8 omap3_evm_use_extvbus(void); +#endif + #endif /* _MUSB_OMAP3_H */