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

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to