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

Maxime Ripard
2014-12-11T15:44:33Z

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?

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?

Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20141211/a21f9816/attachment.pgp>