[meta-ti] USB OTG not working for linux-mainline-3.2 (was [Angstrom-devel] Problem with usbhid kernel module)

Andreas Müller schnitzeltony at googlemail.com
Wed May 23 04:05:02 PDT 2012


On Wed, May 23, 2012 at 10:16 AM, Gyorgy Kovesdi <kgy at teledigit.eu> wrote:
> Hi,
>
> I have a Beagleboard C4, using it with USB keyboard and mouse.
> Building the current version of Angstrom results a non-functional keyboard and mouse at the first boot.
> After some digging, i found that the kernel module "usbhid" is not compiled in. It is built as a module (m), but
> is not loaded during startup. Some weeks ago, it was compiled in (y) in the default kernel config of Beagle.
>
> This way the only possibility to get it working is to log in using the serial port, and set up manually.
> I think it is related to other Beagle boards (e.g. xM), however, other people reported that it is working. Do they
> use it other way, or do i made something wrong?
>
> Regards
> Gyorgy Kovesdi
>
>
One hint first: to discuss TI-BSP issues you will have more feedback -
hopefully :) - on meta-ti at yoctoproject.org mailing list.

Back to topic: I have trouble getting OTG USB working in host mode and
think that this is the same issue as reported in [1]. Connecting to
USB-host interface everything works as expected - so I don't think is
related to usbhid.
AFAIK non XM Beagleboards only have an OTG port - so Gyorgy falls
victim on that.
I investigated this issue a bit: It seems the reason for this mess is
that the Kconfig names have changed some when between 3.0 and 3.2:

1. In 3.0 there was a constant (CONFIG_)USB_MUSB_HDRC_HCD. This is no
more part of 3.2 KCONFIG but is heavily used in code

grep -r USB_MUSB_HDRC_HCD *
| arch/arm/mach-omap2/omap_phy_internal.c:#ifdef	CONFIG_USB_MUSB_HDRC_HCD
| arch/arm/mach-omap2/usb-musb.c:#elif defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf548/boards/ezkit.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf548/boards/cm_bf548.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf527/boards/ad7160eval.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf527/boards/tll6527m.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf527/boards/ezkit.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf527/boards/ezbrd.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)
| arch/blackfin/mach-bf527/boards/cm_bf527.c:#elif
defined(CONFIG_USB_MUSB_HDRC_HCD)

Inside of arch/arm/mach-omap2/usb-musb.c there is

static struct musb_hdrc_platform_data musb_plat = {
#ifdef CONFIG_USB_MUSB_OTG
	.mode		= MUSB_OTG,
#elif defined(CONFIG_USB_MUSB_HDRC_HCD)
	.mode		= MUSB_HOST,
#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
	.mode		= MUSB_PERIPHERAL,
#endif

So the host mode will never be activated. Strange:
CONFIG_USB_MUSB_HDRC_HCD is still in beagleboard's defconfig but
Kconfig removes it during build (see .config in build dir). Seems
defconfig was handmade..

2. Same for (CONFIG_)USB_GADGET_OMAP. (I think this is unrelated to
host mode but yet another example):

| grep -r USB_GADGET_OMAP *
| arch/arm/mach-omap1/board-h2.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap1/usb.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap1/usb.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap1/board-innovator.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap1/board-h3.c:#ifdef CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap1/board-osk.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/plat-omap/usb.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/plat-omap/include/plat/usb.h:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap2/usb-fs.c:#ifdef	CONFIG_USB_GADGET_OMAP
| arch/arm/mach-omap2/board-2430sdp.c:#ifdef  CONFIG_USB_GADGET_OMAP
| drivers/usb/otg/isp1301_omap.c:#elif	!defined(CONFIG_USB_GADGET_OMAP)
USB_GADGET_OMAP is not defined for Kconfig but used in source code

I would like to check this hypotheses but currently don't have time to..

Andreas



More information about the meta-ti mailing list