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.

DM816x PCIe issue

Genius 13655 points

Hello Champs,

In our project, we use DM8168 as the main media-control chip of NGN devices,but now we have some trouble in PCIE.

the current question is unable to search the local device ID. we didn't modify the source code for PCI/PCIE in the DM816x EZSDK 5.04  here is some information about our problem:

1. After booting linux kernel , we tip in "lspci" command ,nothing printed ,even the basic information about DM8168  host itself

Then, refer to  pcie user guide   after  choosing “ PCIE debugging enabled“    ,we got “ No link/device "  printed .This matches the troubleshooting  of TI81XX_PCI_Express_Root_Complex_Driver_User_Guide

       whether onnecting a PCIE EP device or not  we both have the same situation  ―― nothing printed  . we  have desinged  two boards , one has a rst signal   the other one don't  ,           between RC and EP device . But  the problem remains the same.Otherwise, in the troubleshooting ,it mentions that“it is possible that the h/w is configured such that a reset is               applied to downstream when RC is powered up. In such case, try to isolate the downstream from this reset.”  how to understand this sentence and isolate the downstream ?

       2. Here is  some information printed during booting  about PCIE 

dm816x-evm login: root

root@dm816x-evm:~# lspci

root@dm816x-evm:~# demgs sg | grep pci

-sh: demsg: not found

root@dm816x-evm:~# m dmesg | grep pci

ti81xx_pcie: Invoking PCI BIOS...

ti81xx_pcie: Setting up Host Controller...

ti81xx_pcie: Register base mapped @0xcb820000

ti81xx_pcie: Starting PCI scan...

pci_bus 0000:00: resource 0 [mem 0x20000000-0x2fffffff]

pci_bus 0000:00: resource 1 [io 0x40000000-0x402fffff]

root@dm816x-evm:~#

      3.   In our system ,we use 1GB DDR3 ,but TI Evaluation Board uses 2GB( in the  DM816x EZSDK 5.04 it is configured for 1GB ). we didn't change other  configuration. So we wonder whether it is the memory map  that leads to the problem ,but  memory map is controlled by the kernel  ,it cant not be wrong .

      4.  There are PCI drivers in U-boot source file, but the configs  of u-boot in DM816x EZSDK 5.04  doesn't incude  PCI .Do we need to  have PCI configured  in the U-boot? how?

Thanks.

Rgds
Shine

  • Hi Shine,

      It looks like customer did not get the PCIE link setup correct. So I have several suggestions below:

    1. Taking care about the PERSTn

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

    2. Check the 100M Serdes reference clock of the PCIE pins in (EP device).

    3. Check if the EP device is powered properly.

    4. Check if the 3.3V from the PCIE slot is used for EP.

    5. Can they try to use any other PCIE-ethernet card to have a check?

    6. make menuconfig -> Bus support -> PCI Debugging for building the kernel with PCI /PCIe  enumeration and configration debugging, Then dump the DEBUG0/DEBUG1 registers for LTSSM states in check_device() function  in arch/arm/mach-omap2/pcie-ti81xx.c

    static int check_device(struct pci_bus *bus, int dev)

    {

                  pr_info(DRIVER_NAME ": ****** : @0x%08x, and  : @0x%08x\n", 

      __raw_readl(reg_virt + SPACE0_LOCAL_CFG_OFFSET + DEBUG0), __raw_readl(reg_virt + 0x172c));
     

                    if ((__raw_readl (reg_virt + SPACE0_LOCAL_CFG_OFFSET + DEBUG0) &

                                                                    LTSSM_STATE_MASK) != LTSSM_STATE_L0)

                                    return 0;

     

                    if (bus->number <= 1) {

                                    if (dev == 0)

                                                    return 1;

                                    else

                                                    return 0;

                    }

     

                    return 1;

    }

    Regards,

    Louis