PCI Express PLL cannot lock on about 5% of all IMX7D CPUs.

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

PCI Express PLL cannot lock on about 5% of all IMX7D CPUs.

2,848件の閲覧回数
leonidsegal
Contributor I

Hello,

We assembled a large number of CPUs on our cards and in about 5% of them the PCI Express PLL cannot lock.

The issue can be solved by raising the 1.0V LDO to about 1.05V in part of the CPUs (this is the maximum working condition). And in part of them the voltage should be raised to 1.1V for PLL lock.

Is this a known issue?

           Thank you.

ラベル(1)
タグ(3)
0 件の賞賛
返信
5 返答(返信)

1,859件の閲覧回数
igorpadykov
NXP Employee
NXP Employee

Hi Leonid

reason may be board noise, please check that C458 & C459 are removed.  

Schematics (2)
Design files for i.MX 7Dual (REV D)
Design files, including hardware schematics, Gerbers, and OrCAD files for i.MX 7Dual (REV D)
http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/i.mx-applications-process...

also one can check

PCIe link doesn't come up with XIO2001 PCI bridge on iMX6Q custom board  

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 件の賞賛
返信

1,859件の閲覧回数
leonidsegal
Contributor I

Hello,

Yes the capacitors are replaced with 0R resistors.

The issue is that the initialization process fails before accessing the RESET GPIO pins.

The function that fails is: 

static void pci_imx_phy_pll_locked(struct imx6_pcie *imx6_pcie){
   u32 val;
   int count = 20000;

   while (count--) {
      regmap_read(imx6_pcie->iomuxc_gpr, IOMUXC_GPR22, &val);
      if (val & BIT(31))
         break;
      udelay(10);
      if (count == 0)
         pr_info("pcie phy pll can't be locked.\n");
   }
}

We inspected the voltage on pins AA9, AA10, AA11, AA12 it seems to be ok.

The problem is very consistent on part of the boards:

  • if one board is working it is 100% working, tested in 100 power ups
  • If it fails then it fails, until the imx6_pcie->pcie_phy_regulator is not set to a higher level in this section:

static void imx6_pcie_init_phy(struct pcie_port *pp){
   int ret;
   struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);

   if (is_imx7d_pcie(imx6_pcie)) {
      /* Enable PCIe PHY 1P0D */
      regulator_set_voltage(imx6_pcie->pcie_phy_regulator,1000000, 1000000);
      ret = regulator_enable(imx6_pcie->pcie_phy_regulator);
      if (ret)
         dev_err(pp->dev, "failed to enable pcie regulator.\n");

      /* pcie phy ref clock select; 1? internal pll : external osc */
      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,BIT(5), imx6_pcie->phy_refclk ? BIT(5) : 0);
      /* get pcie phy out of reset to get correct clock rate */
      regmap_update_bits(imx6_pcie->reg_src, 0x2c, BIT(1), 0);
      regmap_update_bits(imx6_pcie->reg_src, 0x2c, BIT(2), 0);
      regmap_update_bits(imx6_pcie->reg_src, 0x2c, BIT(6), 0);

      ...

If the bold value is changed to 1100000 than all boards are working. But 1.1V is out of spec...

0 件の賞賛
返信

1,859件の閲覧回数
igorpadykov
NXP Employee
NXP Employee

is PCIe working in uboot, may be useful

git.denx.de Git - u-boot.git/commitdiff 

~igor

0 件の賞賛
返信

1,859件の閲覧回数
leonidsegal
Contributor I

I could not find any uboot release that supports PCI on mx7...

0 件の賞賛
返信

1,859件の閲覧回数
igorpadykov
NXP Employee
NXP Employee

general way for such issues is to follow procedure described in AN5158

PCI Express® Certification Guide for the i.MX 6SoloX

http://www.nxp.com/assets/documents/data/en/application-notes/AN5158.pdf 

Best regards
igor

0 件の賞賛
返信