Hi,
we are using a custom OMAP4460 board based on the Variscite VAR-SOM-OM44 module [1]. The linux kernel is based on the ti-ubuntu-3.4-stable kernel [2] modified for our board.
The OTG port shall be used only in host mode for mass storage devices. When booting the kernel (musb-hdrc, omap2430 are builtin), loading the g_mass_storage module and inserting a mass storage device, everything
works as expected. If the device was inserted before loading the g_mass_storage module we are receiving a babble interrupt (log output below).
We tried setting the SOFTRESET bit in the OTG_SYSCONFIG register followed by musb_restart() in this case, but this only leads to VBUS errors.
The OMAP4460 Silicon Errata lists the Errata ID: i661 which causes babble interrupts, but we are using the port in UTMI mode, so we can exclude this case.
The image shows the connection of the OTG port on our board. The USB power comes from an external voltage regulator and is not switchable.
Do you have any hints regarding this problem?
Best regards,
Matthias
Kernel messages when loading the g_mass_storage module with memory device already inserted (BUS RESET == babble interrupt):
[ 9.565093] udc musb-hdrc: registering UDC driver [g_mass_storage]
[ 9.572723] gadget: Mass Storage Function, version: 2009/09/11
[ 9.579071] gadget: Number of LUNs=1
[ 9.583679] lun0: LUN: removable file: (no medium)
[ 9.588897] gadget: Mass Storage Gadget, version: 2009/09/11
[ 9.595123] gadget: userspace failed to provide iSerialNumber
[ 9.601379] gadget: g_mass_storage ready
[ 9.857971] musb-hdrc musb-hdrc: MUSB HDRC host driver
[ 9.864532] musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 2
[ 9.872589] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 9.879974] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 9.887817] usb usb2: Product: MUSB HDRC host driver
[ 9.893249] usb usb2: Manufacturer: Linux 3.4.62-blx1+ musb-hcd
[ 9.899749] usb usb2: SerialNumber: musb-hdrc
[ 9.907135] hub 2-0:1.0: USB hub found
[ 9.911315] hub 2-0:1.0: 1 port detected
[ 9.915771] musb-hdrc musb-hdrc: <== devctl 80
[ 10.092895] musb-hdrc musb-hdrc: ** IRQ host usb0010 tx0000 rx0000
[ 10.099426] musb-hdrc musb-hdrc: <== Power=e0, DevCtl=5d, int_usb=0x10
[ 10.106323] musb-hdrc musb-hdrc: CONNECT (a_host) devctl 5d
[ 10.380065] musb-hdrc musb-hdrc: ** IRQ peripheral usb000c tx0000 rx0000
[ 10.387145] musb-hdrc musb-hdrc: <== Power=f0, DevCtl=98, int_usb=0xc
[ 10.393951] musb-hdrc musb-hdrc: BUS RESET as a_host
[ 10.399169] musb-hdrc musb-hdrc: Unhandled BUS RESET as a_host
[ 10.405487] usb 2-1: new high-speed USB device number 2 using musb-hdrc
[ 10.414154] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea82d8c0
[ 15.425567] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea8d2800
[ 20.425842] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf eb5e7980
[ 25.558410] usb 2-1: device descriptor read/64, error -110
[ 25.668182] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf eb441080
[ 30.675628] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf eb441080
[ 35.675659] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea8d79c0
[ 40.800567] usb 2-1: device descriptor read/64, error -110
[ 41.035003] usb 2-1: new high-speed USB device number 3 using musb-hdrc
[ 41.042144] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea8d7d40
[ 46.050689] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea8d7d40
[ 51.050598] musb-hdrc musb-hdrc: TX ep0 fifo fc0ab020 count 8 buf ea8d7d40
[ 56.175598] usb 2-1: device descriptor read/64, error -110
References:
[1] http://www.variscite.com/products/system-on-module-som/cortex-a9/var-som-om44-cpu-ti-omap-4-omap4460
[2] http://dev.omapzoom.org/?p=integration/kernel-ubuntu.git;a=shortlog;h=refs/heads/ti-ubuntu-3.4-stable