AnsweredAssumed Answered

i.MX6sx PCIe failes LTSSM training

Question asked by Randy Silagi on Dec 15, 2016
Latest reply on Dec 19, 2016 by igorpadykov

In the i.MX6sx Saber demo board, using the Freescale kernel:  linux-rel_imx_4.1.15_2.0.0_ga, from the git.freescale.com the imx6_pcie_link_up the LINK_UP is never detected.  Here is the code, I've added the printk that shows the register value.

 

while (1) {
   rc = readl(pp->dbi_base + PCIE_PHY_DEBUG_R1);
   if (printk_ratelimit())
       printk(KERN_INFO "%s: Debug_R1: %#x; UP: %#x, Training: %#x\n",
             __FUNCTION__, rc, PCIE_PHY_DEBUG_R1_XMLH_LINK_UP,     

             PCIE_PHY_DEBUG_R1_XMLH_LINK_IN_TRAINING);
     if (!(rc & PCIE_PHY_DEBUG_R1_XMLH_LINK_UP))
         break;
     if (!(rc & PCIE_PHY_DEBUG_R1_XMLH_LINK_IN_TRAINING))
          return 1;

 

imx6_pcie_link_up: Debug_R1: 0x8200000; UP: 0x10, Training: 0x20000000

 

 

Where can I look to determine why the link is never UP?  What can I do to get the Link up?  The imx6_pcie_link_up is called from imx6_pcie_wait_for_link().  The "link_up" is polled every 100 us, 20000 times. 

 

Thanks for your help

Randy S.

Outcomes