14 Replies Latest reply on Aug 27, 2014 2:36 AM by felix.siebel

    CY7C65642 hub in Linux

    adriana.gonzalez

      We have a new board design using the CY7C65642 hub chip connected to USB0 of the AM3356 CPU and a type B connector to USB1. I can see that linux detects the hub during boot-up, but nothing plugged into the hub's USB ports is detected.

         

      This is my output:

         

      [    0.171477] usbcore: registered new interface driver hub
      [    0.171924] usbcore: registered new device driver usb
      [    0.172568] registerd cppi-dma Intr @ IRQ 17
      [    0.172601] Cppi41 Init Done Qmgr-base(d083a000) dma-base(d0838000)
      [    0.172623] Cppi41 Init Done
      [    0.172676] musb-ti81xx musb-ti81xx: musb0, board_mode=0x21, plat_mode=0x1
      [    0.173274] musb-ti81xx musb-ti81xx: musb1, board_mode=0x21, plat_mode=0x2
      [    0.177398] Advanced Linux Sound Architecture Driver Version 1.0.24.
      [    0.179943] Switching to clocksource gp timer
      [    0.219111] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
      [    0.219452] musb-hdrc musb-hdrc.0: dma type: dma-cppi41
      [    0.220994] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
      [    0.221182] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
      [    0.221403] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
      [    0.221439] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
      [    0.221472] usb usb1: Product: MUSB HDRC host driver
      [    0.221497] usb usb1: Manufacturer: Linux 3.2.0-ts-armv7l musb-hcd
      [    0.221524] usb usb1: SerialNumber: musb-hdrc.0
      [    0.223284] hub 1-0:1.0: USB hub found
      [    0.223351] hub 1-0:1.0: 1 port detected

      [    0.224546] musb-hdrc musb-hdrc.0: USB Host mode controller at d081e000 using DMA, IRQ 18
      [    0.224885] musb-hdrc musb-hdrc.1: dma type: dma-cppi41
      [    0.227153] musb-hdrc musb-hdrc.1: USB Peripheral mode controller at d0832800 using DMA, IRQ 19

         

      SET_PORT_NUM1 and SET_PORT_NUM2 are connected to GND so the hub should be using all 4 ports, but it doesn't seem to me like it's detecting the 4 ports of the USB hub.

         

      Also, is the VID and PID detected related to this hub? From the documentation it looks like a different VID/PID: 0x04B4 and 0x6572.

         

      Thanks in advance for any help or suggestions.

        • 1. Re: CY7C65642 hub in Linux
          vavc

           Hi

             

          If the HUB is not programmed then it should have the VID/PID 04B4/6572. In case if you have programmed the HUB, then it will vary as per your VId/PID.

             

           

             

          It seems that the device is not detected.

             

           

             

          Are you using the DVK or your own board?

             

           

             

          Regards,

             

          Vikas.

          • 2. Re: CY7C65642 hub in Linux
            adriana.gonzalez

            We are using our own board design. I'll check with the HW team, but I don't think the hub would've been programmed.

               

            I had a look for this Cypress VID/PID combo and can't find it anywhere in our Linux kernel src (I can find a few instances of the VID but not the PID); Therefore, I'm wondering whether that means that it's not finding the right driver for the Cypress VID/PID because it doesn't recognise it (and thus I don't see it in the kernel logs), and the 1d6b:0002 VID:PID that I'm seeing has nothing to do with this hub...?

               

            # lsusb
            Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
            #
            #
            # cat  /proc/driver/musb_hdrc.0
            Status: MHDRC, Mode=Host (Power=e0, DevCtl=99)
            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
            #
            # cat  /proc/driver/musb_hdrc.1
            Status: MHDRC, Mode=Peripheral (Power=20, DevCtl=80)
            OTG state: b_idle; inactive
            Options: ?dma?, otg (peripheral+host), [eps=16]
            Peripheral address: 00
            Root port status: 00000000
            CPPI: txcr=0 txsrc=0 txena=0; rxcr=0 rxsrc=280de80 rxena=0
            Gadget driver: (none)

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

               


            Does this output give any further useful information?

               

            Many thanks....

            • 3. Re: CY7C65642 hub in Linux
              vavc

               Hi

                 

               

                 

               Please share the schematics. Have you tried in widows OS?.

                 

               

                 

              Regards,

                 

              Vikas.

              • 4. Re: CY7C65642 hub in Linux
                adriana.gonzalez

                Thank you for your reply. Could you please give an email or contact where I can send the schematic as I don't want to post it on a public forum.

                   

                We have only tried Linux because it's an ARM embedded platform and there are no plans to get any other OS running on that board. I have added a microcontroller USB0 hack from TI, because we have the VBUS pin pulled up on the CPU:

                   

                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 {

                   

                 

                   

                This hasn't made it work yet unfortunately.

                • 5. Re: CY7C65642 hub in Linux
                  vavc

                  Hi

                     

                   

                     

                  Please send the schematics to vavc@cypress.com or create tech support case    

                     

                            http://www.cypress.com/support

                     

                   

                     

                  Regards,

                     

                  Vikas.

                  • 6. Re: CY7C65642 hub in Linux
                    adriana.gonzalez

                    Turns out it was a design issue alright. There was a mistake on both upstream on downstream lines, the DP and DM lines were being swapped between master/slave, i.e. DP was going to DM and so on, rather than DP to DP.

                       

                    In addition I modified the board as per the AN72332 application note and CY7C65642 datasheet:

                       
                          
                    •  5K resistor to GND from POW_PIN_POL pin 36, to configure active low power enable
                    •     
                    • "Fixed" the reset circuit and instead of pulling up Reset\ pin 26 to 3.3V (which didn't look right), pulled up to 5V (instead of recommended VBUS) using 10K, and 50K (instead of recommended 47k) to GND (also omitted the recommended 1uF Cap).
                    •     
                    • As recommended I also removed shunt and series resistors on the data lines.
                    •     
                    • put a 9K (instead of recommended 10K) resistor to GND at AM335x processor pin USB0_ID (pin/ball P16). I've also a SW patch for this in arch/arm/mach-omap2/omap_phy_internal.c in ti81xx_musb_phy_power() function, so it may not be a required HW change:
                    •    
                       

                    if (cpu_is_am33xx()) {
                                /* Disable VBUS detect */
                                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);
                            }
                     

                       

                    and added to same function:

                       

                        u32 usbphymode;

                        scm_base = ioremap((id ? AM33XX_USB1_BASE : AM33XX_USB0_BASE), 0x2FF);

                        if (on && cpu_is_am33xx()) {
                            usbphymode = __raw_readl(scm_base + USB_MODE_REG); /* 0x47401000 + 0xE8*/

                            usbphymode &= ~ USB_PHY_LOOPBACK | IDDIG;
                        }

                        __raw_writel(usbphycfg, scm_base + USB_MODE_REG);
                        iounmap(scm_base);

                    • 7. Re: CY7C65642 hub in Linux
                      felix.siebel

                      Hi, i also have an issue with this chip on a custom Board connected to an phyCORE-AM3352 (Phytec).

                         

                      My schematic is attached. The IOUSBEN signals are connected to some GPIOs.

                         

                      My board file looks like this:

                         
                      /* pinmux for usb0 drvvbus */ static struct pinmux_config usb0_pin_mux[] = {  {"usb0_drvvbus.usb0_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},  {NULL, 0}, };  /* pinmux for usb1 drvvbus */ static struct pinmux_config usb1_pin_mux[] = {  {"gpmc_ad8.gpio0_22", OMAP_MUX_MODE7 |  AM33XX_PULL_ENBL |      AM33XX_PIN_OUTPUT_PULLUP},  {"gpmc_ad9.gpio0_23", OMAP_MUX_MODE7 |  AM33XX_PULL_ENBL |      AM33XX_PIN_OUTPUT_PULLUP},  {"lcd_vsync.gpio2_22", OMAP_MUX_MODE7 |  AM33XX_PULL_ENBL |      AM33XX_PIN_OUTPUT_PULLUP},  {"lcd_ac_bias_en.gpio2_25", OMAP_MUX_MODE7 |  AM33XX_PULL_ENBL |      AM33XX_PIN_OUTPUT_PULLUP},  {"usb1_drvvbus.usb1_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},  {NULL, 0}, };    static void usb0_init(void) {  setup_pin_mux(usb0_pin_mux);  return; }  static void usb1_init(void) {  setup_pin_mux(usb1_pin_mux);  return; } 
                         

                      static struct omap_musb_board_data musb_board_data = {
                      .interface_type = MUSB_INTERFACE_ULPI,
                      /*
                      * mode[0:3] = USB0PORT's mode
                      * mode[4:7] = USB1PORT's mode
                      * PCM051 has USB0 in OTG mode and USB1 in host mode.
                      */
                      .mode = (MUSB_HOST << 4) | MUSB_OTG,
                      .power = 500,
                      .instances = 1,
                      };

                         
                      The inits are called correctly. First i get this message polling: ti81xx_interrupt 1146: VBUS error workaround (delay coming)  Then i used this patch:         6378.0001-Revert-usb-musb-ti81xx-fix-for-handling-vbus-error.zip from Bin Liu in this Forum. It stopped polling but is still in the dmesg log.  Then I also tried to not use the USB_DRVV Pin and connected the Reset Pin directly to 3.3V and tried this hack:  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 {  Nothing helped. I disabled the hack and soldered all changes back. My Board looks like the schematic. Linux posted with cat /proc/drivers/musb_hdrc.1 root@phyCORE-AM335x:~  cat /proc/driver/musb_hdrc.1 Status: MHDRC, Mode=Host (Power=e0, DevCtl=88) OTG state: a_wait_vfall; inactive Options: pio, otg (peripheral+host), [eps=16] Peripheral address: 00 Root port status: 00000100  dmesg said: [    0.000000] pcpu-alloc: [0] 0 [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024 [    0.000000] Kernel command line: console=ttyO0,115200 ip=none:::::eth0: root=/dev/mmcblk0p2 rootfstype=ext3 rootwait [    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [    0.000000] Memory: 256MB = 256MB total [    0.000000] Memory: 254280k/254280k available, 7864k reserved, 0K highmem [    0.000000] Virtual kernel memory layout: [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB) [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB) [    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB) [    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB) [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB) [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB) [    0.000000]       .text : 0xc0008000 - 0xc04bb000   (4812 kB) [    0.000000]       .init : 0xc04bb000 - 0xc04ef000   ( 208 kB) [    0.000000]       .data : 0xc04f0000 - 0xc05451f8   ( 341 kB) [    0.000000]        .bss : 0xc054521c - 0xc057083c   ( 174 kB) [    0.000000] NR_IRQS:396 [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts [    0.000000] Total of 128 interrupts on 1 active controller [    0.000000] OMAP clockevent source: GPTIMER2 at 25000000 Hz [    0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz [    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms [    0.000000] Console: colour dummy device 80x30 [    0.000122] Calibrating delay loop... 597.60 BogoMIPS (lpj=2988032) [    0.058746] pid_max: default: 32768 minimum: 301 [    0.058898] Security Framework initialized [    0.058990] Mount-cache hash table entries: 512 [    0.059417] CPU: Testing write buffer coherency: ok [    0.060241] devtmpfs: initialized [    0.080505] omap_hwmod: gfx: failed to hardreset [    0.096923] omap_hwmod: pruss: failed to hardreset [    0.098114] print_constraints: dummy: [    0.098541] NET: Registered protocol family 16 [    0.101013] OMAP GPIO hardware version 0.1 [    0.103729] omap_mux_init: Add partition: #1: core, flags: 0 [    0.104095] The board is a PCM051 phyCORE-AM335x [    0.104309]  omap_hsmmc.0: alias fck already exists [    0.106872]  omap_i2c.1: alias fck already exists [    0.108673]  omap2_mcspi.1: alias fck already exists [    0.108978]  omap2_mcspi.2: alias fck already exists [    0.109283]  edma.0: alias fck already exists [    0.109313]  edma.0: alias fck already exists [    0.109344]  edma.0: alias fck already exists [    0.134246] bio: create slab                   at 0 [    0.136535] SCSI subsystem initialized [    0.138702] usbcore: registered new interface driver usbfs [    0.139129] usbcore: registered new interface driver hub [    0.139373] usbcore: registered new device driver usb [    0.139556] musb-ti81xx musb-ti81xx: musb0, board_mode=0x13, plat_mode=0x3 [    0.139862] musb-ti81xx musb-ti81xx: musb1, board_mode=0x13, plat_mode=0x1 [    0.141113] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz [    0.142333] tps65910 1-002d: JTAGREVNUM 0x1 [    0.146240] print_constraints: VRTC: [    0.147735] print_constraints: VIO: at 1500 mV [    0.150085] print_constraints: VDD1: 600 <--> 1500 mV at 1100 mV normal [    0.152404] print_constraints: VDD2: at 1100 mV [    0.153472] print_constraints: VDD3: 5000 mV [    0.154937] print_constraints: VDIG1: at 1800 mV [    0.156372] print_constraints: VDIG2: at 1800 mV [    0.157836] print_constraints: VPLL: at 1800 mV [    0.159301] print_constraints: VDAC: at 1800 mV [    0.160766] print_constraints: VAUX1: at 1800 mV [    0.162231] print_constraints: VAUX2: at 3300 mV [    0.163696] print_constraints: VAUX33: at 3300 mV [    0.165161] print_constraints: VMMC: at 3300 mV [    0.183563] cfg80211: Calling CRDA to update world regulatory domain [    0.184844] Switching to clocksource gp timer [    0.205932] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host) [    0.206085] musb-hdrc musb-hdrc.0: dma type: pio [    0.206420] MUSB0 controller's USBSS revision = 4ea20800 [    0.206451] musb0: Enabled SW babble control [    0.206481] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) [    0.206512] musb-hdrc: MHDRC RTL version 2.0 [    0.206512] musb-hdrc: setup fifo_mode 4 [    0.206542] musb-hdrc: 28/31 max ep, 16384/16384 memory [    0.206573] musb-hdrc.0: bulk split disabled [    0.206573] musb-hdrc.0: bulk combine disabled [    0.207122] musb-hdrc musb-hdrc.0: USB OTG mode controller at d083c000 using PIO, IRQ 18 [    0.207305] musb-hdrc musb-hdrc.1: dma type: pio [    0.207641] MUSB1 controller's USBSS revision = 4ea20800 [    0.207672] musb1: Enabled SW babble control [    0.207672] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) [    0.207702] musb-hdrc: MHDRC RTL version 2.0 [    0.207702] musb-hdrc: setup fifo_mode 4 [    0.207733] musb-hdrc: 28/31 max ep, 16384/16384 memory [    0.207763] musb-hdrc.1: bulk split disabled [    0.207763] musb-hdrc.1: bulk combine disabled [    0.207794] musb-hdrc musb-hdrc.1: MUSB HDRC host driver [    0.207885] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1 [    0.208038] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [    0.208068] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [    0.208068] usb usb1: Product: MUSB HDRC host driver [    0.208068] usb usb1: Manufacturer: Linux 3.2.0-SMA musb-hcd [    0.208099] usb usb1: SerialNumber: musb-hdrc.1 [    0.209136] hub 1-0:1.0: USB hub found [    0.209167] hub 1-0:1.0: 1 port detected [    0.209808] musb-hdrc musb-hdrc.1: USB Host mode controller at d083e800 using PIO, IRQ 19 [    0.210296] NET: Registered protocol family 2 [    0.210510] IP route cache hash table entries: 2048 (order: 1, 8192 bytes) [    0.210815] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [    0.211029] TCP bind hash table entries: 8192 (order: 3, 32768 bytes) [    0.211120] TCP: Hash tables configured (established 8192 bind 8192) [    0.211151] TCP reno registered [    0.211151] UDP hash table entries: 256 (order: 0, 4096 bytes) [    0.211181] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [    0.211395] NET: Registered protocol family 1 [    0.211669] NetWinder Floating Point Emulator V0.97 (double precision) [    0.223999] VFS: Disk quotas dquot_6.5.2 [    0.224060] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [    0.224426] msgmni has been set to 496 [    0.225402] io scheduler noop registered [    0.225433] io scheduler deadline registered [    0.225494] io scheduler cfq registered (default) [    0.226654] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [    0.228576] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0 [    0.858093] ti81xx_interrupt 1139: VBUS error workaround (delay coming) [    0.865081] console [ttyO0] enabled [    0.869445] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1 [    0.877380] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2 [    0.885253] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3 [    0.893157] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4 [    0.901031] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5 [    0.920227] brd: module loaded [    0.929626] loop: module loaded [    0.933013] at24 1-0052: 4096 byte 24c32 EEPROM, writable, 32 bytes/write [    0.942321] Fixed MDIO Bus: probed [    0.945953] CAN device driver interface [    0.949981] CAN bus driver for Bosch D_CAN controller 1.0 [    0.956176] ------------[ cut here ]------------ [    0.961059] WARNING: at fs/sysfs/dir.c:481 sysfs_add_one+0x88/0xa8() [    0.967773] sysfs: cannot create duplicate filename '/class/mdio_bus/0' [    0.974731] Modules linked in: [    0.977935] Backtrace: [    0.980560] [                ] (dump_backtrace+0x0/0x10c) from [              ] (dump_stack+0x18/0x1c) [ 0.989440] r6:c00f8384 r5:00000009 r4:cf01dd28 r3:c0510014 [ 0.995422] [                ] (dump_stack+0x0/0x1c) from [                  ] (warn_slowpath_common+0x54/0x6c) [ 1.004760] [                    ] (warn_slowpath_common+0x0/0x6c) from [                      ] (warn_slowpath_fmt+0x38/0x40) [ 1.014739] r8:00000001 r7:cf029000 r6:cf029000 r5:cf1c2b80 r4:ffffffef [ 1.021636] r3:00000009 [ 1.024414] [                        ] (warn_slowpath_fmt+0x0/0x40) from [                          ] (sysfs_add_one+0x88/0xa8) [ 1.033752] r3:cf029000 r2:c0458a00 [ 1.037536] [                            ] (sysfs_add_one+0x0/0xa8) from [                              ] (sysfs_do_create_link+0xf8/0x1e0) [ 1.047241] r7:cf01dd80 r6:cf0acbd0 r5:cf1c2b80 r4:cf1c2cc0 [ 1.053222] [                                ] (sysfs_do_create_link+0x0/0x1e0) from [                                  ] (sysfs_create_link+0x14/0x18) [ 1.063293] [                                    ] (sysfs_create_link+0x0/0x18) from [                                      ] (device_add+0x300/0x594) [ 1.072570] [                                        ] (device_add+0x0/0x594) from [                                          ] (device_register+0x1c/0x20) [ 1.081542] [                                            ] (device_register+0x0/0x20) from [                                              ] (mdiobus_register+0x80/0x174) [ 1.091064] r4:cf1b9004 r3:cf1bf1c0 [ 1.094848] [                                                ] (mdiobus_register+0x0/0x174) from [                                                  ] (davinci_mdio_probe+0x1e4/0x2d0) [ 1.104827] r8:00000000 r7:cf06df80 r6:cf06a808 r5:cf1bf300 r4:cf06a800 [ 1.111724] r3:00000000 [ 1.114501] [                                                    ] (davinci_mdio_probe+0x0/0x2d0) from [                                                      ] (platform_drv_probe+0x20/0x24) [ 1.124481] r7:c052676c r6:c053f288 r5:c0569ab0 r4:cf06a808 [ 1.130462] [                                                        ] (platform_drv_probe+0x0/0x24) from [                                                          ] (driver_probe_device+0xb4/0x2c8) [ 1.140533] [                                                            ] (driver_probe_device+0x0/0x2c8) from [                                                              ] (__driver_attach+0x94/0x98) [ 1.150329] r8:00000000 r7:cf1beb40 r6:cf06a83c r5:c052676c r4:cf06a808 [ 1.157409] [                                                                ] (__driver_attach+0x0/0x98) from [                                                                  ] (bus_for_each_dev+0x4c/0x94) [ 1.166839] r6:c01a7558 r5:c052676c r4:00000000 r3:c01a7558 [ 1.172821] [                                                                    ] (bus_for_each_dev+0x0/0x94) from [                                                                      ] (driver_attach+0x24/0x28) [ 1.182067] r6:c05252c8 r5:c052676c r4:c052676c [ 1.186950] [                                                                        ] (driver_attach+0x0/0x28) from [                                                                          ] (bus_add_driver+0x188/0x270) [ 1.196197] [                                                                            ] (bus_add_driver+0x0/0x270) from [                                                                              ] (driver_register+0x80/0x144) [ 1.205657] [                                                                                ] (driver_register+0x0/0x144) from [                                                                                  ] (platform_driver_register+0x4c/0x60) [ 1.215911] [                                                                                    ] (platform_driver_register+0x0/0x60) from [                                                                                      ] (davinci_mdio_init+0x14/0x1c) [ 1.226287] [                                                                                        ] (davinci_mdio_init+0x0/0x1c) from [                                                                                          ] (do_one_initcall+0x128/0x1a8) [ 1.235992] [                                                                                            ] (do_one_initcall+0x0/0x1a8) from [                                                                                              ] (kernel_init+0x84/0x120) [ 1.245147] [                                                                                                ] (kernel_init+0x0/0x120) from [                                                                                                  ] (do_exit+0x0/0x654) [ 1.253479] r5:c04bb808 r4:00000000 [ 1.257293] ---[ end trace 17a705f9df929b66 ]--- [ 1.262512] mii_bus 0 failed to register [ 1.266723] davinci_mdio: probe of davinci_mdio.0 failed with error -22 [ 1.273864] PPP generic driver version 2.4.2 [ 1.279144] usbcore: registered new interface driver rtl8192cu [ 1.285522] usbcore: registered new interface driver cdc_ether [ 1.291687] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.298797] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.305755] usbcore: registered new interface driver cdc_acm [ 1.311706] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 1.320312] usbcore: registered new interface driver cdc_wdm [ 1.326263] Initializing USB Mass Storage driver... [ 1.331634] usbcore: registered new interface driver usb-storage [ 1.337982] USB Mass Storage support registered. [ 1.343048] usbcore: registered new interface driver libusual [ 1.349273] usbcore: registered new interface driver ums_eneub6250 [ 1.355957] usbcore: registered new interface driver ums-sddr09 [ 1.362365] usbcore: registered new interface driver ums-sddr55 [ 1.369018] usbcore: registered new interface driver usbserial [ 1.375305] USB Serial support registered for generic [ 1.380828] usbcore: registered new interface driver usbserial_generic [ 1.387725] usbserial: USB Serial Driver core [ 1.392456] USB Serial support registered for DeLorme Earthmate USB [ 1.399230] USB Serial support registered for HID->COM RS232 Adapter [ 1.406066] USB Serial support registered for Nokia CA-42 V2 Adapter [ 1.412933] usbcore: registered new interface driver cypress [ 1.418914] cypress_m8: v1.10:Cypress USB to Serial Driver [ 1.424835] USB Serial support registered for FTDI USB Serial Device [ 1.431823] usbcore: registered new interface driver ftdi_sio [ 1.437896] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver [ 1.444183] USB Serial support registered for IPWireless converter [ 1.450897] usbcore: registered new interface driver ipwtty [ 1.456756] ipw: v0.4:IPWireless tty driver [ 1.461303] USB Serial support registered for GSM modem (1-port) [ 1.467926] usbcore: registered new interface driver option [ 1.473785] option: v0.7.2:USB Driver for GSM modems [ 1.479187] USB Serial support registered for Qualcomm USB modem [ 1.485717] usbcore: registered new interface driver qcserial [ 1.491912] USB Serial support registered for Sierra USB modem [ 1.498260] usbcore: registered new interface driver sierra [ 1.504119] sierra: v.1.7.16:USB Driver for Sierra Wireless USB modems [ 1.511199] usbcore: registered new interface driver cypress_cy7c63 [ 1.518463] mousedev: PS/2 mouse device common for all mice [ 1.525665] omap_rtc am33xx-rtc: rtc core: registered am33xx-rtc as rtc0 [ 1.541046] tps65910-rtc tps65910-rtc: rtc core: registered tps65910-rtc as rtc1 [ 1.550750] i2c /dev entries driver [ 1.557128] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 1.565887] cpuidle: using governor ladder [ 1.570770] cpuidle: using governor menu [ 1.575256] sdhci: Secure Digital Host Controller Interface driver [ 1.581756] sdhci: Copyright(c) Pierre Ossman [ 1.591522] usbcore: registered new interface driver usbhid [ 1.597412] usbhid: USB HID core driver [ 1.601715] usbcore: registered new interface driver r8712u [ 1.608612] oprofile: hardware counters not available [ 1.613922] oprofile: using timer interrupt. [ 1.618469] nf_conntrack version 0.5.0 (3973 buckets, 15892 max) [ 1.625305] ip_tables: (C) 2000-2006 Netfilter Core Team [ 1.631042] TCP cubic registered [ 1.634460] NET: Registered protocol family 17 [ 1.639160] can: controller area network core (rev 20090105 abi 8) [ 1.645751] NET: Registered protocol family 29 [ 1.650421] can: raw protocol (rev 20090105) [ 1.654907] can: broadcast manager protocol (rev 20090105 t) [ 1.660888] Registering the dns_resolver key type [ 1.665924] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 1.673980] ThumbEE CPU extension supported. [ 1.679290] Power Management for AM33XX family [ 1.689544] Detected MACID=1c:ba:8c:97:c3:ed [ 1.696441] input: gpio-keys as /devices/platform/gpio-keys/input/input0 [ 1.710021] tps65910-rtc tps65910-rtc: setting system clock to 2000-01-01 05:00:11 UTC (946702811) [ 1.722137] PHY 0:00 not found [ 1.725372] PHY 0:02 not found [ 1.766326] mmc0: host does not support reading read-only switch. assuming write-enable. [ 1.776824] mmc0: new high speed SDHC card at address 0007 [ 1.783355] mmcblk0: mmc0:0007 SD4GB 3.70 GiB [ 1.790191] mmcblk0: p1 p2 [ 2.745971] IP-Config: Guessing netmask 255.0.0.0 [ 2.751281] IP-Config: Complete: [ 2.754699] device=eth0, addr=109.0.0.0, mask=255.0.0.0, gw=255.255.255.255, [ 2.762420] host=109.0.0.0, domain=, nis-domain=(none), [ 2.768432] bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= [ 6.790527] kjournald starting. Commit interval 5 seconds [ 6.800750] EXT3-fs (mmcblk0p2): using internal journal [ 6.806335] EXT3-fs (mmcblk0p2): recovery complete [ 6.827575] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode [ 6.834960] VFS: Mounted root (ext3 filesystem) on device 179:2. [ 6.843780] devtmpfs: mounted [ 6.847686] Freeing init memory: 208K >[ 7.304687] udevd[589]: starting version 182 lsusb this:                                                  root@phyCORE-AM335x:~ lsusb Bus 001 Device 001: ID 1d6b:0002 Can anybody help me? At boot time USB_DRVV changed shortly to high and then back to low. USB_VBUS is already high at this time and goes low when the USB_DRVV signal went low. After this VBUS is going back to high. I can't figue my issue out. I think my schematics are ok.[View:http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/791/0572.board_2D00_pcm051.c][View:http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/791/0753.SMA_5F00_Datenlogger_5F00_Rev_5F00_1_5F00_0_5F00_Final.pdf]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                      • 8. Re: CY7C65642 hub in Linux
                        vavc

                        Hi,

                           

                         

                           

                        Place a pull up resistor(2.2K ohm) on the I2C_SDA line.

                           

                         

                           

                        Regards,

                           

                        VIkas.

                        • 9. Re: CY7C65642 hub in Linux
                          felix.siebel

                          Hm, I did what you told me. But nothing changed. Also I'm not using I2C with this Chip. I tried also to place 100k pulldowns on all PWR# Pins so the Signals to the AND Gate aren't floating.  It didn't help.

                          • 10. Re: CY7C65642 hub in Linux
                            felix.siebel

                            Is it ok to pull the Rest Pin High with the USB_DRVV Signal? Its 3.3V from the Processor. My Problem is now if the PWR# Pins going high (tested it with a wire to 3.3V) my TPS Chips are powering the USB Ports. So with the AND Gate and the Linux GPIOs its fine. But if the USB_DRVV Pin is pulled high from the Processor (its 100ms high) the CY7G6... Chip does nothing. It has to Pullup the PWR# Pins within the 100ms and I think everything should work. But the chip only lights the suspend LED up. Nothing else. My USB Driver said that he is waiting for VBUS rising.

                            • 11. Re: CY7C65642 hub in Linux
                              felix.siebel

                              I soldered 100k pulldown to every PWR# so it is not floating at Startup and the TPS and also the VBUS is off until the Chip should respond...

                              • 12. Re: CY7C65642 hub in Linux
                                felix.siebel

                                Hi,

                                   

                                i get it to work. But with a really strange hack.

                                   

                                 

                                   

                                I marked it with the Yellow Circle in the attached schematic.

                                   

                                 

                                   

                                Also it doesn't matter to which PWR# Pin (PWRN1 PWRN2 PWRN3 PWRN4) i connect the 3.3V.

                                   

                                 

                                   

                                I also tested it with a 4k2 and a 2k2 Resistor Pullup without R93 -R96. It doesn't work with a resistor between.

                                   

                                Directly wired to 3.3V it works and Linux enumerates everything.

                                   

                                 

                                   

                                I thought it could be a Voltagesource thing. I measured all source Pins from the CY7C65642 and the U10 74LVX08M Chip but all Voltage level are looking fine. Everything is at 3.3V  (tought it is possible that the voltage drops if the Chip couldn't get enough current).

                                   

                                I measured also the Delay between the 5V Source is coming uo and the 3.3V Soure (Not the intern regulated!!) It is a schort delay of 25-25 ms.

                                   

                                Also i desoldered C70 (Reset Pin). To get the response to the USB_DRV Signal faster.

                                   

                                 

                                   

                                Could you give me some advise for this strange behaviour?

                                • 13. Re: CY7C65642 hub in Linux
                                  vavc

                                  Hi,

                                     

                                   

                                     

                                  After power in reset the HUB will check for the EEPROM. If EEPROM is present then it will check for valid bytes.

                                     

                                  If EEPROM is not present then it will enumerate with default seetings.

                                     

                                   

                                     

                                  Whether you use the EEPROM or not it doesn't matter. There should be a pull resistor on I2C_SDA line.(PWR#`1).

                                     

                                  If the I2C_SDA doesn;t have the pull resitor then it think that some external master is accessing the I2C slave. and it won;t enumerate.

                                     

                                   

                                     

                                  Once the enumeration is done then the i2c_sda/pwr#`1 acts as PWR#1 pin.

                                     

                                   

                                     

                                  I don't understand the use of 74LVCX08M level translator. what is the need of this ?Why you have connected PWR# pins to this?

                                     

                                   

                                     

                                  Regards,

                                     

                                  Vikas.

                                  • 14. Re: CY7C65642 hub in Linux
                                    felix.siebel

                                    It works now.

                                       

                                     

                                       

                                    I pulled PWR# Pins down to prevent them from floating. My issue was that Linux can't get the VBUS response within the 100ms USB_DRV impulse.

                                       

                                    I removed the 74HCT32D and connected VBUS directly to +5V. Linux was patched with some Code from Bin Liu (TI-Forum).

                                       

                                    Now everything works. The CY7C6... is switched on with the USB_DRV Signal. I reduced also the capacitor from the Reset Delay circuit.

                                       

                                    With the 74LVX08M its possible to switch single USB Ports completly on/off over a GPIO pin. Due to some external Hardware issues (USB-UMTS-Modem).  To put it in suspend mode is not enough.