rock3a PCIe Link Fail

we burn rock3a (v1.3.1) using image:<rock-3a-ubuntu-focal-server-arm64-20221101-0219-gpt.img.xz>.

We found that PCIe Host initialization failed after the board was started.

How do I fix this Without changing the kernel version?

Thanks.

kernel version:

root@rock-3a:~# uname -a
Linux rock-3a 4.19.193-58-rockchip-gbac1feba87f0 #rockchip SMP Tue Oct 18 09:36:57 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
root@rock-3a:~# 

pcie log:

[    0.144991] pcie30_avdd0v9: 900 mV 
[    0.145172] reg-fixed-voltage pcie30-avdd0v9: Looking up vin-supply from device tree
[    0.145186] pcie30_avdd0v9: supplied by vcc3v3_sys
[    0.145362] reg-fixed-voltage pcie30-avdd0v9: pcie30_avdd0v9 supplying 900000uV
[    0.145514] pcie30_avdd1v8: 1800 mV 
[    0.145698] reg-fixed-voltage pcie30-avdd1v8: Looking up vin-supply from device tree
[    0.145741] pcie30_avdd1v8: supplied by vcc3v3_sys
[    0.145921] reg-fixed-voltage pcie30-avdd1v8: pcie30_avdd1v8 supplying 1800000uV
[    0.147050] pcie30_3v3: 100 <--> 3300 mV at 3300 mV 
[    0.480662] rk-pcie 3c0000000.pcie: Looking up vpcie3v3-supply from device tree
[    0.480809] rk-pcie 3c0000000.pcie: Linked as a consumer to regulator.10
[    0.481185] rk-pcie 3c0800000.pcie: Looking up vpcie3v3-supply from device tree
[    0.481286] rk-pcie 3c0800000.pcie: Linked as a consumer to regulator.10
[    0.481298] rk-pcie 3c0000000.pcie: missing legacy IRQ resource
[    0.481388] rk-pcie 3c0000000.pcie: Missing *config* reg space
[    0.481432] rk-pcie 3c0000000.pcie: host bridge /pcie@fe260000 ranges:
[    0.481494] rk-pcie 3c0000000.pcie:   err 0x300000000..0x3007fffff -> 0x00000000
[    0.481551] rk-pcie 3c0000000.pcie:    IO 0x300800000..0x3008fffff -> 0x00800000
[    0.481606] rk-pcie 3c0000000.pcie:   MEM 0x300900000..0x33fffffff -> 0x00900000
[    0.493431] rk-pcie 3c0800000.pcie: missing legacy IRQ resource
[    0.493489] rk-pcie 3c0800000.pcie: Missing *config* reg space
[    0.493532] rk-pcie 3c0800000.pcie: host bridge /pcie@fe280000 ranges:
[    0.493599] rk-pcie 3c0800000.pcie:   err 0x380000000..0x3807fffff -> 0x80000000
[    0.493684] rk-pcie 3c0800000.pcie:    IO 0x380800000..0x3808fffff -> 0x80800000
[    0.493740] rk-pcie 3c0800000.pcie:   MEM 0x380900000..0x3bfffffff -> 0x80900000
[    1.500353] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    1.500358] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    2.513751] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    2.540389] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    3.553680] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    3.587010] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    4.567024] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    4.620375] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    5.580503] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    5.633750] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    6.593719] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x1
[    6.647046] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    7.607057] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    7.660433] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    8.620447] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    8.673766] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x1
[    9.633807] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[    9.687101] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[   10.647009] rk-pcie 3c0000000.pcie: PCIe Linking... LTSSM is 0x0
[   10.700421] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[   11.660543] rk-pcie 3c0000000.pcie: PCIe Link Fail
[   11.665903] rk-pcie 3c0000000.pcie: failed to initialize host
[   11.713878] rk-pcie 3c0800000.pcie: PCIe Link Fail
[   11.718550] rk-pcie 3c0800000.pcie: failed to initialize host

Usually you can’t fix hardware problems without exchanging / fixing interface between OS and hardware. Try mainline based kernel images.