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.

DM8148 PCIe RC does not detect Asix MCS9990 PCIe-to-USB Host Controller

Other Parts Discussed in Thread: XIO2001, TUSB7340

Hi All,

On our DM8148 EVM board, we have tried 2 PCIe off-the-shelf cards successfully.  These are TI XIO2001 ZGU EVM (PCIe-to-PCI bridge) and TI TUSB7340 DEMO EVM (PCIe-to-USB 3.0 Host Controller).  The DM8148 PCI Express is configured for Root Complex.  Both PCIe cards can be detected and listed when running lspci utility.

We are in the middle of testing another PCIe off-the-shelf card.  We wanted to use the Asix MCS9990 PCIe-to-USB 2.0 Host Controller instead of the TI TUSB7340 (due to DM8148’s older Linux kernel 2.6.37).  However, the DM8148 is having issues detecting the Asix MCS9990 device.

Here is the link to the off-the-shelf card we are using.

http://www.ioi.com.tw/products/proddetail.aspx?CatID=106&DeviceID=3021&HostID=2002&ProdID=1060116

The Asix MCS9990 is a single lane (x1) PCIe controller and complies with PCI Express base 1.1 specifications.  I have tried this card on a Windows XP, Windows 7, and Fedora Core 15 Linux machine running 2.6.43 and it worked on all these systems.  Here is the lspci dump of the card on the FC15 machine.

 

03:00.0 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 10 [OHCI])
        Subsystem: Device a000:4000
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 16 bytes
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at cfff8000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: <access denied>
        Kernel driver in use: ohci_hcd

03:00.1 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 20 [EHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin A routed to IRQ 16
       Region 0: Memory at cfff9000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ehci_hcd

03:00.2 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 10 [OHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin B routed to IRQ 17
       Region 0: Memory at cfffa000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ohci_hcd

03:00.3 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 20 [EHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin B routed to IRQ 17
       Region 0: Memory at cfffb000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ehci_hcd

03:00.4 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 10 [OHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin C routed to IRQ 18
       Region 0: Memory at cfffc000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ohci_hcd

03:00.5 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 20 [EHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin C routed to IRQ 18
       Region 0: Memory at cfffd000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ehci_hcd

03:00.6 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 10 [OHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin D routed to IRQ 19
       Region 0: Memory at cfffe000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ohci_hcd

03:00.7 USB Controller: NetMos Technology MCS9990 PCIe to 4âPort USB 2.0 Host Controller (prog-if 20 [EHCI])
       Subsystem: Device a000:4000
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 16 bytes
       Interrupt: pin D routed to IRQ 19
       Region 0: Memory at cffff000 (32-bit, non-prefetchable) [size=4K]
       Capabilities: <access denied>
       Kernel driver in use: ehci_hcd


I tried debugging the issue but couldn’t figure out what is causing the issue.  Here are some of the register dump on the DM8148 when the Asix MCS9990 board is plugged-in to the PCIe connector.

DEBUG0 (0x51001728) = 0xee00 (LTSSM_STATE = DETECT QUIET)

DEBUG1 (0x5100172c) = 0x08200000

LINK_CTRL2 (0x510010a0) = 0x10002


I tried hardcoding the target speed to Gen-1 in LINK_CTRL2 (0x10001) but it did not make a difference.

 

Does DM8148 PCI Express Root Complex works with PCIe Gen 1 Endpoints?

Is there any other registers that can tell me what is creating the issue?

Can someone point me to the reason why this PCIe card does not work with DM8148?

Any help is greatly appreciated.

Regards,
Maynard

 

  • Maynard,

    I will check this and let you know when I have something.

    Regards,
    Pavel

  • Maynard,

    Are you working with DM814x EZSDK 5.05.02.00 and PSP 04.04.00.01?

    Maynard Cabiente said:
    Does DM8148 PCI Express Root Complex works with PCIe Gen 1 Endpoints?

    Yes, DM814x PCIe RC works with Gen1 x1

    See the below wiki pages:

    http://processors.wiki.ti.com/index.php/TI81XX_PSP_PCI_Express_Root_Complex_Driver_User_Guide

    TI814X/TI813X: Gen1 and Gen2 operation with x1 link supporting 5 GT/s raw transfer rate in single direction

    http://processors.wiki.ti.com/index.php/DM81xx_AM38xx_PCI_Express_Root_Complex_Driver_User_Guide

    http://processors.wiki.ti.com/index.php/TI81XX_PCIe_FAQs

    http://processors.wiki.ti.com/index.php/DM816x_C6A816x_AM389x_PCIeToUSB

    BR
    Pavel

  • Hi Pavel,

    We are basing our Linux kernel on PSP 04.04.00.01.  I'm not sure if we are currently using EZSDK 5.05.02.00 or 5.05.01.04.

    I did see those wiki pages before.  I just wanted to verify that it is not causing the issue.

    Is there some registers that I can read/write to debug the issue?

    Regards,
    Maynard

  • Maynard,

    Maynard Cabiente said:
    We are basing our Linux kernel on PSP 04.04.00.01.  I'm not sure if we are currently using EZSDK 5.05.02.00 or 5.05.01.04.

    Make sure you have applied all the PCIe related patches:

    http://arago-project.org/git/projects/?p=linux-omap3.git;a=shortlog;h=refs/heads/ti81xx-master

    http://arago-project.org/git/projects/?p=linux-omap3.git&a=search&h=refs%2Fheads%2Fti81xx-master&st=commit&s=pcie

    Maynard Cabiente said:
    Is there some registers that I can read/write to debug the issue?

    We have DEBUG0 and DEBUG1 registers in the PCIe register map. See the DM814x TRM for more details.

    Also the below links are related to PCIe debug:

    http://processors.wiki.ti.com/index.php/TI81XX_PCIe_FAQs

    http://processors.wiki.ti.com/index.php/TI81XX_PSP_PCI_Express_Root_Complex_Driver_User_Guide#Troubleshooting

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/343679.aspx

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/260354.aspx

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/137123.aspx

    http://e2e.ti.com/support/embedded/linux/f/354/t/161429.aspx

    Regards,
    Pavel