PCI Express "phy never came up" with BSP 3.10.17_1.0.2-GA, custom board

Showing results for 
Search instead for 
Did you mean: 

PCI Express "phy never came up" with BSP 3.10.17_1.0.2-GA, custom board

Contributor II

Hello everybody,

We have desisgned a custom board with the imx6 dual, where the pci express is used to connect an Exar PCI Express UART (XR17V358).

Out software is based on the Freescale Yocto BSP 3.10.17_1.0.2-GA.

On some boards there a startup problems where the pci express link is not always comming up ("phy never came up" in boot log).

Adding additional debug messages, are showing that the LTSSM stays in DETECT and POLLING states.

I have seen those other threads regarding pcie, but couldn't find a solution yet ( except from upgrading to a newer release, which we haven't tried yet).

I've measured the pcie signals and could clearly see the difference between the cases where the link comes up and those where not.

In the cases it is working, all signals looked like valid PCIe signals (Z1, yellow), as far as I can tell with 600MHz bandwidth, when the link does not come up,

both tx signals are looking totally different ( Z4 green).
(There are two different measurements from two boot processes show, both on the same tx line, the reduced level of the high speed parts are probalbly related to the bandwidth of the scope).

As the signal is clearly broken, I don't think we are seeing signal problems that can be handeled by changing the IOMUXC_GPR8 register as mentioned here: AN4784


How often the error is happening, is related to the temperature:

One PCB that has the error in most cases at about 23 degree Celsius, starts successful cooled down with colling spray.

Another, after some fixes to the ldo bypass mode, starts successfully a room temperature but fails below 5 degree Celsius.

Other boards don't show any problems between 55 degree and -25 degree Celsius.

It seems also somehow related if the chips is powered in ldo bypass mode or in ldo mode.

This is, why my guess is, that the pcie phy is not comming up, may be because of unstable clocks.

What currently seems to improve the stability, is enabling the pcie_ref_125m clock very early with adding:


to the end of imx6q_clocks_init().

Any hints, on how we might get this stabilized?

Regards, Jonas

Labels (2)
3 Replies

NXP TechSupport
NXP TechSupport

Hi Jonas

difference in ldo bypass mode or in ldo mode may be handled

attached patches.

Regarding different behaviour from temperature: this may point to

weak signals, so tweakung IOMUXC_GPR8 may have sense.

Also this may point to 24MHz crystal instability, one can try to change it

from good boards.

Another test may be small lowering the core voltage of i.MX6.

Check that PCIe_EXT resistance is 200OHM 1% precision

and PCIE_VP/PCIE_VPTX connected to VDDSOC_CAP and good


Best regards



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


Contributor II

Hi igor,

   I've also encountered this problem recently. My kernel is 3.10.53 from Android KK4.4.3_2.0.0。

   I reviewd my kernel source, the driver/pci/host/pci-imx6.c already have been patched, but there is not arch/arm/cpu/armv7/mx6/soc.c in my kernel.

   Coudle please help me,



0 Kudos

Contributor II

Hi, The patch with arch/arm/cpu/armv7/mx6/soc.c is supposed to be used with u-boot. Regards, Jonas

0 Kudos