
On Tuesday, June 08, 2010 05:05:54 Ajay Kumar Gupta wrote:
MUSB PHY on OMAP3EVM Rev >= E uses external Vbus supply to support 500mA of power.We need to program MUSB PHY to use external Vbus for this purpose.
Adding 'extvbus' member in musb_config structure which should be set by all the boards where MUSB interface is using external Vbus supply. Default value of 'extvbus' is being set to '0'.
*sigh* it looks like we're going to start hit the cross-platform build warnings/failures in u-boot that we're already hitting under Linux
--- a/drivers/usb/musb/davinci.c +++ b/drivers/usb/musb/davinci.c @@ -30,6 +30,7 @@ struct musb_config musb_cfg = { (struct musb_regs *)MENTOR_USB0_BASE, DAVINCI_USB_TIMEOUT,
- 0, 0
};
we should probably update the musb_cfg assignment style to used named members so that adding new fields doesnt screw up (as much) existing ports. by using unamed initializers, a new field in the struct requires all assignments to be updated. but if we used names here, than new fields are automatically assigned a value of 0.
--- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -34,6 +34,7 @@ void musb_start(void) { #if defined(CONFIG_MUSB_HCD) u8 devctl;
- u8 busctl;
#endif
/* disable all interrupts */ @@ -45,6 +46,12 @@ void musb_start(void) /* put into basic highspeed mode and start session */ writeb(MUSB_POWER_HSENAB, &musbr->power); #if defined(CONFIG_MUSB_HCD)
- /* Program PHY to use EXT VBUS if required */
- if (musb_cfg.extvbus == 1) {
busctl = readb(&musbr->ulpi_busctl);
writeb(busctl | ULPI_USE_EXTVBUS, &musbr->ulpi_busctl);
- }
not all MUSB users have ulpi support, so this needs to be abstracted out
--- a/drivers/usb/musb/musb_core.h +++ b/drivers/usb/musb/musb_core.h @@ -112,7 +112,10 @@ struct musb_regs { u16 rxfifoadd; u32 vcontrol; u16 hwvers;
- u16 reserved2[5];
- u16 reserved2a[1];
- u8 ulpi_busctl;
- u8 reserved2b[1];
- u16 reserved2[3]; u8 epinfo; u8 raminfo; u8 linkinfo;
if you look just above the musb_regs struct, you'll see there is a hook for people to declare their own layout. so the ulpi abstraction should be inside of this #ifdef. -mike