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