i.MX7D "pcie: phy link never came up" error -110

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX7D "pcie: phy link never came up" error -110

265 Views
mio
Contributor II

On board Implemented with i.MX7 Dual, there is an issue where approximately 0.7% of certain wireless LAN modules connected to PCIe cannot be link up.
PCIe compliance test is conducted on boards Implemented with i.MX7 Dual, and no problems were found with respect to signal quality.
There are also wireless LAN modules that work well with this board.
For PCs Implemented with Intel and other SoCs, link up. Therefore, the wireless LAN module is not malfunctioning.

The following error message is output.

imx6q-pcie 33800000.pcie: phy link never came up
imx6q-pcie 33800000.pcie: Link never came up
imx6q-pcie 33800000.pcie: failed to initialize host
imx6q-pcie: probe of 33800000.pcie failed with error -110

I decoded the error code, it seems that the LTSSM current state is stuck at 0x2 (S_POLL_ACTIVE).

# ./imx6-pcie-decoder
LTSSM current state: 0x2 (S_POLL_ACTIVE)
PIPE transmit K indication: 0
PIPE Transmit data: 0x4a
Receiver is receiving logical idle: no
Second symbol is also idle (16-bit PHY interface only): no
Currently receiving k237 (PAD) in place of link number: no
Currently receiving k237 (PAD) in place of lane number: no
Link control bits advertised by link partner: 0x0
Receiver detected lane reversal: no
TS2 training sequence received: no
TS1 training sequence received: no
Receiver reports skip reception: no
LTSSM reports PHY link up: no
A skip ordered set has been transmitted: no
Link number advertised/confirmed by link partner: 0
Application request to initiate training reset: no
PIPE transmit compliance request: no
PIPE transmit electrical idle request: no
PIPE receiver detect/loopback request: no
LTSSM-negotiated link reset: yes
LTSSM testing for polarity reversal: no
LTSSM performing link training: no
LTSSM in DISABLE state; link inoperable: no
Scrambling disabled for the link: no

When I checked the signal with an oscilloscope, it appeared that the amplitude of the signal input to i.MX7 Dual's PCIE_RX_P and PCIE_RX_N was a little small.I tried changing the register below, but it didn't work.

PCIE_PHY_TRSV_REG21 4:0 EMP_LVL[4:0]
PCIE_PHY_TRSV_REG22 5:0 DRV_LVL[5:0]
PCIE_PHY_TRSV_REG26 6:4 SQTH[2:0]
PCIE_PHY_TRSV_REG36 3 TX_SWING

I've seen multiple similar issues in the forums, but I haven't been able to resolve them.
Please let me know if you have any information to resolve the issue.

Regards,

mio.

0 Kudos
3 Replies

178 Views
mio
Contributor II

It seems like there is an impedance mismatch on REFCLK.
By changing the 0 ohm in the series to REFCLK to 33 ohm, most of the modules now work.
But there are still some modules that do not work.

I think that the amplitude of REFCLKOUT is probably insufficient.
Is it possible to change the amplitude of REFCLKOUT output from the i.MX7D changing register settings?
In the reference manual, the registers that seem to be related to REFCLKOUT are described as follows, and there is not much explanation.
"This register is prepared for the PLL target setting and cannot be changed at all."
"The operation cannot be guaranteed for any changes without written permission."

Sincerely,
mio

0 Kudos

246 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Which version BSP are you using on your board?

0 Kudos

224 Views
mio
Contributor II

Hi, @Rita_Wang 

I am using the following version.
https://github.com/nxp-imx/linux-imx/tree/lf-6.1.y

Sincerely,
mio

0 Kudos