HoneyComb LX2 PCIe slot

Should the HoneyComb LX2 PCIe slot be enabled and functional with the default image provided by SolidRun, or is it necessary to build a custom image or perform some other configuration? What would we expect to see from uboot and/or Linux (e.g. what is the logical PCIe slot number for the physical slot)?

Using the latest available pre-built image (“lx2160acex7_2000_700_3200_8_5_2-2aefef2.img”, 3-Sep-2023), putting a PCIe card in the slot does not appear to be detected or usable. Initial boot output:

NOTICE: BL2: v2.4(release):LSDK-21.08-8-g98ed7bc18
NOTICE: BL2: Built : 10:00:27, Sep 3 2023
NOTICE: UDIMM SPD0382
NOTICE: DDR PMU Hardware version-0x1210
NOTICE: DDR PMU Firmware vision-0x1001 (vA-2019.04)
NOTICE: DDR4 UDIMM with 2-rank 64-bit bus (x8)

NOTICE: 32 GB DDR4, 64-bit, CL=22, ECC on, 256B, CS0+CS1
NOTICE: BL2: Booting BL31
NOTICE: BL31: v2.4(release):LSDK-21.08-8-g98ed7bc18
NOTICE: BL31: Built : 10:00:27, Sep 3 2023
NOTICE: Welcome to lx2160acex7 BL31 Phase

U-Boot 2021.04-00040-g8288c790f (Sep 03 2023 - 10:00:22 +0000)

SoC: LX2160ACE Rev2.0 (0x87360020)
Clock Configuration:
CPU0(A72):2000 MHz CPU1(A72):2000 MHz CPU2(A72):2000 MHz
CPU3(A72):2000 MHz CPU4(A72):2000 MHz CPU5(A72):2000 MHz
CPU6(A72):2000 MHz CPU7(A72):2000 MHz CPU8(A72):2000 MHz
CPU9(A72):2000 MHz CPU10(A72):2000 MHz CPU11(A72):2000 MHz
CPU12(A72):2000 MHz CPU13(A72):2000 MHz CPU14(A72):2000 MHz
CPU15(A72):2000 MHz
Bus: 700 MHz DDR: 3200 MT/s
Reset Configuration Word (RCW):
00000000: 50838338 24500050 00000000 00000000
00000010: 00000000 0e010000 00000000 00000000
00000020: 10c001a0 00002580 00000000 08000086
00000030: 09240000 00000001 00000000 00000000
00000040: 00000000 00000000 00000000 00000000
00000050: 00000000 00000000 00000000 00000000
00000060: 00000000 00000000 00027000 00000000
00000070: 08a80001 00151020
Model: SolidRun LX2160ACEX7 COM express type 7 based board
Board: LX2160ACE Rev2.0-CEX7, SD
SERDES1 Reference: Clock1 = 161.13MHz Clock2 = 100MHz
SERDES2 Reference: Clock1 = 100MHz Clock2 = 100MHz
SERDES3 Reference: Clock1 = 100MHz Clock2 = 100Hz
DRAM: 31.9 GiB
DDR 31.9 GiB (DDR4, 64-bit, CL=22, ECC on)
DDR Controller Interleaving Mode: 256B
DDR Chip-Select Interleaving Mode: CS0+CS1
dev_get_priv: null device
dev_get_priv: null device
Using SERDES1 Protocol: 8 (0x8)
Using SERDES2 Protocol: 5 (0x5)
Using SERDES3 Protocol: 2 (0x2)
PCIe1: pcie@3400000 disabled
PCIe2: pcie@3500000 disabled
PCIe3: pcie@3600000 Root Complex: no link
PCIe4: pcie@3700000 disabled
PCIe5: pcie@3800000 Root Complex: no link
PCIe6: pcie@3900000 disabled

The “pci” uboot command also shows no devices.

Booting into Linux also shows only the two Freescale PCIe devices:

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[ 0.000000] Linux version 5.10.35-00073-g0d435c18f2d2 (root@f3bbe2ac363d) (aarch64-linux-gnu-gcc (Linaro GCC 7.4-2019.02) 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4], GNU ld (Linaro_Binutils-2019.02) 2.28.2.20170706) #1 SMP PREEMPT Sun Sep 3 10:00:39 UTC 2023
[ 0.000000] Machine model: SolidRun LX2160A Clearfog CX
[ 0.000000] earlycon: pl11 at MMIO32 0x00000000021c0000 (options ‘’)

[ 2.619322] layerscape-pcie 3600000.pcie: host bridge /soc/pcie@3600000 ranges:
[ 2.626640] layerscape-pcie 3600000.pcie: MEM 0x9400000000…0x97ffffffff → 0xa400000000
[ 2.635163] layerscape-pcie 3600000.pcie: MEM 0x9040000000…0x90ffffffff → 0x0040000000
[ 2.643682] layerscape-pcie 3600000.pcie: IO 0x9010000000…0x901000ffff → 0x0000000000
[ 2.652292] layerscape-pcie 3600000.pcie: PCI host bridge to bus 0000:00
[ 2.658987] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 2.664465] pci_bus 0000:00: root bus resource [mem 0x9400000000-0x97ffffffff pref] (bus address [0xa400000000-0xa7ffffffff])
[ 2.675758] pci_bus 0000:00: root bus resource [mem 0x9040000000-0x90ffffffff] (bus address [0x40000000-0xffffffff])
[ 2.686269] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
[ 2.692459] pci 0000:00:00.0: [1957:8d80] type 01 class 0x060400
[ 2.698517] pci 0000:00:00.0: supports D1 D2
[ 2.702778] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
[ 2.710301] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[ 2.715531] pci 0000:00:00.0: Max Payload Size set to 256/ 256 (was 128), Max Read Rq 256
[ 2.724076] layerscape-pcie 3800000.pcie: host bridge /soc/pcie@3800000 ranges:
[ 2.731409] layerscape-pcie 3800000.pcie: MEM 0xa400000000…0xa7ffffffff → 0xa400000000
[ 2.739942] layerscape-pcie 3800000.pcie: MEM 0xa040000000…0xa0ffffffff → 0x0040000000
[ 2.748462] layerscape-pcie 3800000.pcie: IO 0xa010000000…0xa01000ffff → 0x0000000000
[ 2.757060] layerscape-pcie 3800000.pcie: PCI host bridge to bus 0001:00
[ 2.763755] pci_bus 0001:00: root bus resource [bus 00-ff]
[ 2.769234] pci_bus 0001:00: root bus resource [mem 0xa400000000-0xa7ffffffff pref]
[ 2.776881] pci_bus 0001:00: root bus resource [mem 0xa040000000-0xa0ffffffff] (bus address [0x40000000-0xffffffff])
[ 2.787395] pci_bus 0001:00: root bus resource [io 0x10000-0x1ffff] (bus address [0x0000-0xffff])
[ 2.796358] pci 0001:00:00.0: [1957:8d80] type 01 class 0x060400
[ 2.802423] pci 0001:00:00.0: supports D1 D2
[ 2.806686] pci 0001:00:00.0: PME# supported from D0 D1 D2 D3hot
[ 2.814168] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[ 2.819400] pci 0001:00:00.0: Max Payload Size set to 256/ 256 (was 128), Max Read Rq 256

root@localhost:~# lspci
0000:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d80 (rev 20)
0001:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d80 (rev 20)

Even if the correct driver isn’t installed, I would expect to see a PCIe device present for the add-in card.

Yes the device should still be detected. What card is plugged into what slot?