[U-Boot] USB Host not enumerating properly on AM335x-based board

Marek Vasut
2014-12-14T19:18:26Z

On Thursday, December 11, 2014 at 04:44:33 PM, Maxime Ripard wrote:
> Hi,
>
> On Thu, Dec 11, 2014 at 02:09:30PM +0100, Marek Vasut wrote:
> > On Wednesday, December 10, 2014 at 04:23:49 PM, Maxime Ripard wrote:
> > > Hi,
> > >
> > > On Thu, Nov 20, 2014 at 05:49:17PM +0100, Maxime Ripard wrote:
> > > > Hi,
> > > >
> > > > I'm currently working on 2014.07, on a custom TI AM335x based board.
> > > >
> > > > Everything works great so far, except when we're trying to have USB
> > > > host working.
> > > >
> > > > The board has the MUSB1 controller wired as USB Host only, with the
> > > > following configuration:
> > > >
> > > > #define CONFIG_USB_MUSB_DSPS
> > > > #define CONFIG_ARCH_MISC_INIT
> > > > #define CONFIG_MUSB_PIO_ONLY
> > > > #define CONFIG_MUSB_DISABLE_BULK_COMBINE_SPLIT
> > > > #define CONFIG_MUSB_HOST
> > > > #define CONFIG_MUSB_DSPS
> > > > #define CONFIG_AM335X_USB1
> > > > #define CONFIG_AM335X_USB1_MODE MUSB_HOST
> > > >
> > > > #ifdef CONFIG_MUSB_HOST
> > > > #define CONFIG_CMD_USB
> > > > #define CONFIG_USB_STORAGE
> > > > #define CONFIG_USB_HOST_ETHER
> > > > #define CONFIG_USB_ETHER_ASIX
> > > > #endif
> > > >
> > > > Whenever we try to scan the USB controller and that a device is
> > > > attached, we get the following output:
> > > >
> > > > U-Boot# usb start
> > > > (Re)start USB...
> > > > USB0: scanning bus 0 for devices... 1 USB Device(s) found
> > > >
> > > > scanning usb for storage devices... 0 Storage Device(s) found
> > > > scanning usb for ethernet devices... 0 Ethernet Device(s)
> > > > found
> > >
> > > Just an update on this one.
> > >
> > > Our configuration was missing CONFIG_USB_GADGET_DUALSPEED that, even
> > > though its name suggest otherwise, seems to be needed to enable USB2.0
> > > devices support in the musb-new driver.
> > >
> > > With this additional configuration option, everything works as
> > > expected.
> >
> > Wow, this is excellent news, good job finding this!
> >
> > On the other hand, this behavior is very braindead and should be fixed
> > before someone else gets burnt.
>
> I agree :)
>
> > Do you have any ideas for a patch please ?
>
> It's really used by two drivers: musb-new and gadget/ether.c
>
> The ethernet driver seems to be doing the right thing: this option
> controls wether the gadget should use high or full speed.
>
> musb-new on the other hand seems to be using it to set up the actual
> controller speed, disregarding wether it's running in host or device
> mode.
>
> So I guess we could split these two apart, and introduce an option
> called CONFIG_MUSB_DUALSPEED?

I'd rather see CONFIG_MUSB_FORCE_SPEED or somesuch.

> The tricky thing will be to convert the configurations using this
> option, since you can't really know with a grep / sed what they are
> using it for: ethernet, musb, both?

I hope Heiko can chime in, I believe it's only the siemens board which
needs to force the musb into full-speed operation ; the other boards
should be fine with dualspeed.