Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5728: Qualcomm based WiFi module not detected on PCIe interface

Other Parts Discussed in Thread: AM5728

Hello,

I have a custom board based on TI's AM5728 EVM. I am using the latest Linux PSDK 6.03 on it. 

I am using SparkLAN WNFQ-258ACN(BT), which is an 802.11ac/a/b/g/n Dual-Band Wi-Fi+Bluetooth M.2 card based on Qualcomm Atheros QCA6174A chipset. The interface for WiFi is PCIe and for Bluetooth is USB.

I have connected the WiFi device to PCIe_SS1 (PCIe0) in single-lane host mode. The PCIe is configured as RC (root complex) in the board-level device tree file.

Following are the device tree entries -

  pcie1_rc: pcie@51000000 {
                                reg = <0x51000000 0x2000>, <0x51002000 0x14c>, <0x1000 0x2000>;
                                reg-names = "rc_dbics", "ti_conf", "config";
                                interrupts = <0 232 0x4>, <0 233 0x4>;
                                #address-cells = <3>;
                                #size-cells = <2>;
                                device_type = "pci";
                                ranges = <0x81000000 0 0          0x03000 0 0x00010000
                                          0x82000000 0 0x20013000 0x13000 0 0xffed000>;
                                bus-range = <0x00 0xff>;
                                #interrupt-cells = <1>;
                                num-lanes = <1>;
                                linux,pci-domain = <0>;
                                ti,hwmods = "pcie1";
                                phys = <&pcie1_phy>;
                                phy-names = "pcie-phy0";
                                ti,syscon-lane-sel = <&scm_conf_pcie 0x18>;
                                interrupt-map-mask = <0 0 0 7>;
                                interrupt-map = <0 0 0 1 &pcie1_intc 1>,
                                                <0 0 0 2 &pcie1_intc 2>,
                                                <0 0 0 3 &pcie1_intc 3>,
                                                <0 0 0 4 &pcie1_intc 4>;
                                ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
                                status = "disabled";
                                pcie1_intc: interrupt-controller {
                                        interrupt-controller;
                                        #address-cells = <0>;
                                        #interrupt-cells = <1>;
                                };
                        };
                        
                        
&pcie1_rc {
        status = "okay";
        gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
};

I am getting the following logs in the kernel while booting -

root@am57xx-evm:~# dmesg | grep pci
[    0.664203] dra7-pcie 51000000.pcie: Linked as a consumer to phy-4a094000.pciephy.1
[    0.664373] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
[    0.664380] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
[    0.664413] of_get_named_gpiod_flags: parsed 'gpios' property of node '/ocp/axi@0/pcie@51000000[0]' - status (0)
[    0.664631] dra7-pcie 51000000.pcie: host bridge /ocp/axi@0/pcie@51000000 ranges:
[    0.664673] dra7-pcie 51000000.pcie:    IO 0x20003000..0x20012fff -> 0x00000000
[    0.664701] dra7-pcie 51000000.pcie:   MEM 0x20013000..0x2fffffff -> 0x20013000
[    1.664965] dra7-pcie 51000000.pcie: Phy link never came up
[    1.665098] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
[    1.665113] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.665126] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    1.665137] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
[    1.665174] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
[    1.665208] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
[    1.665270] pci 0000:00:00.0: supports D1
[    1.665278] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    1.676386] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff 64bit]
[    1.676406] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.676741] pcieport 0000:00:00.0: Signaling PME with IRQ 177
[    1.676874] pcieport 0000:00:00.0: AER enabled with IRQ 177

But the WiFi device is not detected in lspci output. However, the Bluetooth device is detected in lsusb output.

root@am57xx-evm:~# lspci 
00:00.0 PCI bridge: Texas Instruments Multicore DSP+ARM KeyStone II SOC (rev 01)


root@am57xx-evm:~# lsusb
Bus 001 Device 003: ID 0cf3:e300 Qualcomm Atheros Communications 
Bus 001 Device 002: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0451:8140 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

I tried with another Realtek RTL8822BE based SparkLAN WiFi module -  (WNFT-234ACN(BT)). This module is getting detected on PCIe bus. Following are the dmesg and lspci logs with this module -
root@am57xx-evm:~# lspci
00:00.0 PCI bridge: Texas Instruments Multicore DSP+ARM KeyStone II SOC (rev 01)
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8822BE 802.11a/b/g/n/ac WiFi adapter
root@am57xx-evm:~# lsusb
Bus 001 Device 003: ID 0bda:b822 Realtek Semiconductor Corp.
Bus 001 Device 002: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0451:8140 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub


oot@am57xx-evm:~# dmesg | grep pci
[    0.634285] dra7-pcie 51000000.pcie: Linked as a consumer to phy-4a094000.pciephy.1
[    0.634454] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
[    0.634462] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
[    0.634496] of_get_named_gpiod_flags: parsed 'gpios' property of node '/ocp/axi@0/pcie@51000000[0]' - status (0)
[    0.634714] dra7-pcie 51000000.pcie: host bridge /ocp/axi@0/pcie@51000000 ranges:
[    0.634732] dra7-pcie 51000000.pcie: Parsing ranges property...
[    0.634764] dra7-pcie 51000000.pcie:    IO 0x20003000..0x20012fff -> 0x00000000
[    0.634793] dra7-pcie 51000000.pcie:   MEM 0x20013000..0x2fffffff -> 0x20013000
[    0.734877] dra7-pcie 51000000.pcie: Link up
[    0.735011] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
[    0.735026] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.735039] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.735051] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
[    0.735063] pci_bus 0000:00: scanning bus
[    0.735096] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
[    0.735131] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
[    0.735198] pci 0000:00:00.0: supports D1
[    0.735205] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    0.735215] pci 0000:00:00.0: PME# disabled
[    0.740937] pci_bus 0000:00: fixups for bus
[    0.740967] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 0
[    0.741057] pci_bus 0000:01: scanning bus
[    0.741140] pci 0000:01:00.0: [10ec:b822] type 00 class 0x028000
[    0.741265] pci 0000:01:00.0: reg 0x10: [io  0x0000-0x00ff]
[    0.741361] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x0000ffff 64bit]
[    0.741817] pci 0000:01:00.0: supports D1 D2
[    0.741824] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.741844] pci 0000:01:00.0: PME# disabled
[    0.777146] pci_bus 0000:01: fixups for bus
[    0.777191] pci_bus 0000:01: bus scan returning with max=01
[    0.777205] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 1
[    0.777216] pci_bus 0000:00: bus scan returning with max=ff
[    0.777248] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff 64bit]
[    0.777270] pci 0000:00:00.0: BAR 8: assigned [mem 0x20200000-0x202fffff]
[    0.777284] pci 0000:00:00.0: BAR 7: assigned [io  0x1000-0x1fff]
[    0.777302] pci 0000:01:00.0: BAR 2: assigned [mem 0x20200000-0x2020ffff 64bit]
[    0.777359] pci 0000:01:00.0: BAR 0: assigned [io  0x1000-0x10ff]
[    0.777385] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.777398] pci 0000:00:00.0:   bridge window [io  0x1000-0x1fff]
[    0.777411] pci 0000:00:00.0:   bridge window [mem 0x20200000-0x202fffff]
[    0.777541] pcieport 0000:00:00.0: assign IRQ: got 178
[    0.777751] pcieport 0000:00:00.0: Signaling PME with IRQ 179
[    0.777879] pcieport 0000:00:00.0: AER enabled with IRQ 179

I am not able to understand why one device is getting enumerated and other is not. Am I missing something else here?

Kindly acknowledge and revert.

Regards,

Devashish