This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

USB 2512 HUB to AM3354 not getting detected

Hi Guys,

Please help.USB_HUB.pdf

Our USB2512 HUB connected to USB0 is not getting detected. We are a little stuck and need to complete this spin to get to testing ASAP.

Please see attached schematics.

USB0_ID is pulled directly to gound - not shown on the attached sheet.

The USB0 mode in the kernel is set to MUSB_OTG.

USB0_VBUS is pulled to 5V with 1K.

We verified the input clk is 24MHz - we are not using a crystal.

Out put from  cat /proc/driver/musb_hdrc.0  (I'm not sure what it must be?):

Status: MHDRC, Mode=Peripheral (Power=e0, DevCtl=19)
OTG state: b_idle; active
Options: ?dma?, otg (peripheral+host), [eps=16]
Peripheral address: 00
Root port status: 00000100
CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
Gadget driver: android_usb

ep0 (hw0): 1buf, csr 0000 maxp 0000
        (queue empty)

Output in dmesg:

<6>[    1.374306] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
<6>[    1.374541] musb-hdrc musb-hdrc.0: dma type: dma-cppi41
<6>[    1.374707] MUSB0 controller's USBSS revision = 4ea20800
<7>[    1.374725] TxFifo Empty intr disabled
<6>[    1.374735] musb0: Enabled SW babble control
<7>[    1.375031] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
<7>[    1.375049] musb-hdrc: MHDRC RTL version 2.0
<7>[    1.375060] musb-hdrc: setup fifo_mode 4
<7>[    1.375088] musb-hdrc: 28/31 max ep, 16384/16384 memory
<7>[    1.375100] musb-hdrc.0: bulk split disabled
<7>[    1.375108] musb-hdrc.0: bulk combine disabled
<6>[    1.375528] musb-hdrc musb-hdrc.0: USB OTG mode controller at e083c000 using DMA, IRQ 18
<6>[    1.375770] musb-hdrc musb-hdrc.1: dma type: dma-cppi41
<6>[    1.375910] MUSB1 controller's USBSS revision = 4ea20800
<7>[    1.375924] TxFifo Empty intr disabled
<6>[    1.375933] musb1: Enabled SW babble control
<7>[    1.376208] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
<7>[    1.376224] musb-hdrc: MHDRC RTL version 2.0
<7>[    1.376234] musb-hdrc: setup fifo_mode 4
<7>[    1.376258] musb-hdrc: 28/31 max ep, 16384/16384 memory
<7>[    1.376268] musb-hdrc.1: bulk split disabled
<7>[    1.376276] musb-hdrc.1: bulk combine disabled
<6>[    1.376344] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
<7>[    1.376426] drivers/usb/core/inode.c: creating file 'devices'
<7>[    1.376451] drivers/usb/core/inode.c: creating file '001'
<6>[    1.376471] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
<7>[    1.376501] musb-hdrc musb-hdrc.1: supports USB remote wakeup
<7>[    1.376603] usb usb1: default language 0x0409
<7>[    1.376636] usb usb1: udev 1, busnum 1, minor = 0
<6>[    1.376647] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[    1.376660] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[    1.376672] usb usb1: Product: MUSB HDRC host driver
<6>[    1.376682] usb usb1: Manufacturer: Linux 3.2.0-00244-gcf99001-dirty musb-hcd
<6>[    1.376694] usb usb1: SerialNumber: musb-hdrc.1
<7>[    1.377001] usb usb1: usb_probe_device
<7>[    1.377017] usb usb1: configuration #1 chosen from 1 choice
<7>[    1.377061] usb usb1: adding 1-0:1.0 (config #1, interface 0)
<7>[    1.377191] hub 1-0:1.0: usb_probe_interface
<7>[    1.377204] hub 1-0:1.0: usb_probe_interface - got id
<6>[    1.377218] hub 1-0:1.0: USB hub found
<6>[    1.377242] hub 1-0:1.0: 1 port detected
<7>[    1.377252] hub 1-0:1.0: standalone hub
<7>[    1.377261] hub 1-0:1.0: individual port power switching
<7>[    1.377271] hub 1-0:1.0: no over-current protection
<7>[    1.377280] hub 1-0:1.0: Single TT
<7>[    1.377291] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
<7>[    1.377302] hub 1-0:1.0: power on to power good time: 10ms
<7>[    1.377324] hub 1-0:1.0: local power source is good
<7>[    1.377337] hub 1-0:1.0: enabling power on all ports
<7>[    1.377535] drivers/usb/core/inode.c: creating file '001'
<6>[    1.377697] musb-hdrc musb-hdrc.1: USB Host mode controller at e083e800 using DMA, IRQ 19

We also applied this patch:

diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c
index 13bfef3..e41b224 100644
--- a/arch/arm/mach-omap2/omap_phy_internal.c
+++ b/arch/arm/mach-omap2/omap_phy_internal.c
@@ -288,8 +288,17 @@ void ti81xx_musb_phy_power(u8 id, u8 on , bool wkup)
                                                TI816X_USBPHY0_NORMAL_MODE;
                        usbphycfg &= ~TI816X_USBPHY_REFCLK_OSC;
                } else if (cpu_is_am33xx()) {
-                       usbphycfg &= ~(USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN);
-                       usbphycfg |= (USBPHY_OTGVDET_EN | USBPHY_OTGSESSEND_EN);
+                       usbphycfg &= ~(USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN | USBPHY_OTGVDET_EN);
+
+                       /* HACK: If USB0 port is in host-only mode, clear its
+                        * USBPHY_OTGVDET_EN bit to ignore first VBUS sensing.
+                        * Change 0 to 1 if USB1 port is in host-only mode.
+                        */
+                       if (id == 0)
+                               usbphycfg |= USBPHY_OTGSESSEND_EN;
+                       else
+                               usbphycfg |= (USBPHY_OTGVDET_EN | USBPHY_OTGSESSEND_EN);
+
                        usbwkupctrl = AM33XX_USB_WKUP_CTRL_DISABLE;
                }
        } else {

Please help.

Thank you very much

  • We found an issue on the reset line.

    The USB2512 hub seems to be detected now - but not supported?
    Do we need an special driver?

    Please see log below:

    <6>[ 7.322514] usb 2-1: new high-speed USB device number 2 using musb-hdrc
    <3>[ 7.462666] usb 2-1: device v0424 p2512 is not supported
    <3>[ 7.468242] hub 2-0:1.0: unable to enumerate USB device on port 1
    <7>[ 7.474636] hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0002
    <7>[ 7.474654] hub 2-0:1.0: port 1 enable change, status 00000501



    root@android:/ # cat /proc/driver/musb_hdrc.0
    Status: MHDRC, Mode=Host (Power=f0, DevCtl=5d)
    OTG state: a_host; active
    Options: ?dma?, otg (peripheral+host), [eps=16]
    Peripheral address: 00
    Root port status: 00000501
    CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
    Gadget driver: android_usb


    root@android:/ # cat /proc/driver/musb_hdrc.1
    Status: MHDRC, Mode=Host (Power=e0, DevCtl=19)
    OTG state: a_idle; inactive
    Options: ?dma?, otg (peripheral+host), [eps=16]
    Peripheral address: 00
    Root port status: 00000100
    CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
    root@android:/ #
  • We found and fixed the issue.

    The CONFIG_USB_OTG_WHITELIST configuration was set; causing the enumeration to be "rejected".
  • Hi Louis,

    Thanks for updating the thread with your results. This will help other people with similar issues.