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 endpoint not always enumerated

We're using the DM8148 as a PCIe endpoint.  The RC is a standard Intel core I3 based PC running with AMI BIOS & windows 8.  Our issue is that the DM8148 endpoint is not always enumerated by the host and is therefore invisible to the OS.  For our product to be viable, we need the DM8148 to reliably enumerate as a PCIe endpoint on our PC based RC host.  We're aware of the recently posted errata regarding PCIe boot mode via RBL, and our plan has always been to configure the DM8148 PCIe endpoint via MLO loaded via SD card.

We've tested the DM8148 via the Mistral EVM and our custom board.  The Mistral EVM has had the external PCIe ref clock modification.  We've also tried a different host (pentium 4 based PC).  We use PSP 4.04.00.01 and the EZSDK (the RDK does not support PCIe, and we've worked with DM8148 since the first EZSDK release).  This PCIe enumeration testing is performed by powering on DM8148 board, then powering on the PC host in that order.  Our DDR3 runs @ 400Mhz, and the ARM core @600Mhz.  Both our EVM & our custom board use parts marked 'X8148X3874BCYE' which is revision 2.1 silicon.  We've instrumented MLO with a few status dumps.

Following power on of the DM8148, we see MLO pause after enabling the PCIe PLL.  When the Intel PC host powers on, we see MLO's PLL lock message and MLO completes PCIe endpoint initialization.

We have tried the following DM8148 endpoint configurations and received the results shown:

32 bit with 4k/8M/16M/8k/8k bars ==> enumerates successfully 40% of power on attempts

64 bit with 4k/256M/1GB bars ==> enumerates successfully 50% of power on attempts

The EVM and our custom boards both show similar results.   Curiously, we can obtain ~80% success with an EVM in 64b mode 4k/256M/1GB bars running RBL only, though the host PC bios restarts numerous times on 50% of the attempts (and also attempts PCIe re-allocation via asserting the discrete PCIe reset signal which toggles POR on the EVM.  Our custom board also allows discrete PCIe reset to toggle POR).

To eliminate the possibility that there is an Intel host RC BIOS issue, we allowed the system to boot to windows.  With the DM8148 unplugged, we powered the DM8148 board on, observed the board waiting for PLL lock, and then hot plugged the DM8148 into the Intel host PCIe bus.  Again, we tried both the EVM and our custom board.  The success percentage went up slightly for a success rate of 50-60% depending on configuration.  This is still far short of the 100% we need.

For comparison, performing cold boot or hot plug of a standard Intel GB ethernet card results in a 100% success rate for enumeration with the same host RC in the same slot.

We've used the windows based "PCIscope" SW package to monitor and report DM8148 PCIe resource information on the RC.  On the DM8148, MLO can provide confirmation that PCIe endpoint configuration completed.  We are in the process of obtaining a PCIe bus analyzer to gather more information.  We can't determine right now if the RC is issuing "hot-reset" or "disable-link" transactions over PCIe to the DM8148.

We realize that the DM8148 PCIe endpoint requires SW initialization, and hope that this issue can be addressed via changes to the PCIe initialization.    The higher success rate on the EVM running RBL only might imply that MLO is taking too long to prepare the DM8148 endpoint, but this is only a theory.

Please advise on suggestions to debug this issue further.  If there is any information we can supply to provide you with better insight, let us know.

Thanks for the help,

         Jim D.

  • Hi Jim


    Am wondering if you eventually solved your PCIe issues?.  We are experiencing (possibly) similar problems with out custom DM8147 based PCIe card.  The issue is here:

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

     

    Most PC seem to enumerate our EP OK.  There is one particular PC, that seems to issue a HOT_RESET during initialization, and it is causing our product to re-boot and then "lockup".  We are aware of the PCIe errata, but need code/help to actually implement the suggested workaround.

    -steve

  • We boot over PCIe as a 64 bit device, via MLO (min uboot) and a custom windows driver.  Due to our unique form factor, we had to force the PCIe interface to Gen 1 speed for reliable enumeration due to non-optimal signal integrity.  Try PCIscope free version and look at PC side registers for equalization and drive levels, ours were maxed out and our eye diagrams at Gen 2 were not good.  Additionally, PCIe reset is tied to our board's master reset to restart the entire process from scratch.  Our PC's BIOS was slow enough for the DM8148 to reconfigure via uboot, but in practice this is a rare event.