QCNFA765 Wi-Fi 6E module on Jetson AGX Orin

But 0001:01:00.0 cannot be bind to above node?

Yes,It’s cannot be bind to above node.

root@tegra-ubuntu:/sys/bus/pci/devices# echo -n “0001:01:00.0” > /sys/bus/pci/drivers/ath11k_pci/bind
-bash: echo: write error: No such device
root@tegra-ubuntu:/sys/bus/pci/devices# lspci -kv
0001:00:00.0 PCI bridge: NVIDIA Corporation Device 229e (rev a1) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 51
        Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
        I/O behind bridge: [disabled]
        Memory behind bridge: 40000000-401fffff [size=2M]
        Prefetchable memory behind bridge: [disabled]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Root Port (Slot-), MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Secondary PCI Express
        Capabilities: [158] Physical Layer 16.0 GT/s <?>
        Capabilities: [17c] Lane Margining at the Receiver <?>
        Capabilities: [190] L1 PM Substates
        Capabilities: [1a0] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
        Capabilities: [2a0] Vendor Specific Information: ID=0001 Rev=1 Len=038 <?>
        Capabilities: [2d8] Data Link Feature <?>
        Capabilities: [2e4] Precision Time Measurement
        Capabilities: [2f0] Vendor Specific Information: ID=0004 Rev=1 Len=054 <?>
        Capabilities: [358] Vendor Specific Information: ID=0006 Rev=0 Len=018 <?>
        Kernel driver in use: pcieport

0001:01:00.0 Network controller: Qualcomm Device 1103 (rev 01)
        Subsystem: Lite-On Communications Inc Device a85d
        Flags: fast devsel
        Memory at 20a8000000 (64-bit, non-prefetchable) [disabled] [size=2M]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit-
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Secondary PCI Express
        Capabilities: [158] Transaction Processing Hints
        Capabilities: [1e4] Latency Tolerance Reporting
        Capabilities: [1ec] L1 PM Substates

there is no driver node under this path, right?

/sys/bus/pci/devices/0001:01:00.0/

Yes,It’s doesn’t have driver node under /sys/bus/pci/devices/0001:01:00.0/

nvidia@tegra-ubuntu:/sys/bus/pci/devices/0001:01:00.0$ ls
aer_dev_correctable  broken_parity_status      current_link_speed  devspec          irq            max_link_speed  power   resource   subsystem_device
aer_dev_fatal        class                     current_link_width  dma_mask_bits    link           max_link_width  remove  resource0  subsystem_vendor
aer_dev_nonfatal     config                    d3cold_allowed      driver_override  local_cpulist  modalias        rescan  revision   uevent
ari_enabled          consistent_dma_mask_bits  device              enable           local_cpus     msi_bus         reset   subsystem  vendor

Could you unbind it first and then bind again?

How to unbind it?
as below?

root@tegra-ubuntu:/sys/bus/pci/drivers/ath11k_pci# echo -n “0001:01:00.0” > /sys/bus/pci/drivers/ath11k_pci/unbind
-bash: echo: write error: No such device

Should I modify the device tree about pcie?
Driver ath11k_pci cannot probe,the problem I guess is about device tree doesn’t have a node to probe the
driver

Hi,

This issue has nothing to do with device tree. This issue seems to be the vendor driver on this kernel driver does not support the wifi module you are using.

For example, any kind of nvme can work on jetson. But we didn’t enable any “nvme” thing in the device tree…

So maybe I can update my ath11k path? Does it work in your opinion?
like this link([Solved] No Wifi adapter found for QCNFA765 Wireless Network Adapter - Red Hat Customer Portal)

nvidia@tegra-ubuntu:/lib/firmware/ath11k$ ls
QCA6390  WCN6855

I don’t know. You should confirm with the wifi card vnedor.

I notice the upstream driver has this on the device list.

static const struct pci_device_id ath11k_pci_id_table[] = {
	{ PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
	{ PCI_VDEVICE(QCOM, WCN6855_DEVICE_ID) },
	{ PCI_VDEVICE(QCOM, QCN9074_DEVICE_ID) },
	{0}
};

But the driver you currently use only has

static const struct pci_device_id ath11k_pci_id_table[] = {
           { PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
           {0}
   };

And if you ever read your lspci result, you will notice your device id is 1103. QCA6390_DEVICE_ID is 1101.

Thank you for reply.
So if I update my driver(ath11k) for my Wi-Fi 6E module,it would be can show up the kernel driver in use and kernel module in use when I command lspci -kv right?

But I ref this link(Jetson AGX Orin Platform Adaptation and Bring-Up — Jetson Linux<br/>Developer Guide 34.1 documentation) it’s say if I want to enabling PCIe in a
customer carrier board should set ODMDATA to match hardware/nvidia/platform/t23x/concord/kernel-dts/cvb/tegra234-p3737-pcie.dtsi

So I check p3701.conf.common :

#ODMDATA="gbe-uphy-config-22,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0,gbe0-enable-10g";
ODMDATA="gbe-uphy-config-0,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0";

and my dtsi file from hardware/nvidia/platform/t23x/concord/kernel-dts/cvb/tegra234-p3737-pcie.dtsi

/*
 * Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 */

#include <dt-bindings/gpio/tegra234-gpio.h>

/ {

        pcie@14100000 {
                status = "okay";

                phys = <&p2u_hsio_3>;
                phy-names = "p2u-0";
        };

        pcie@14160000 {
                status = "okay";

                phys = <&p2u_hsio_4>, <&p2u_hsio_5>, <&p2u_hsio_6>,
                       <&p2u_hsio_7>;
                phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
        };

        pcie@141a0000 {
                status = "okay";

                phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
                       <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
                       <&p2u_nvhs_6>, <&p2u_nvhs_7>;
                phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
                            "p2u-5", "p2u-6", "p2u-7";
        };

        pcie_ep@141a0000 {
                status = "disabled";

                reset-gpios = <&tegra_main_gpio
                               TEGRA234_MAIN_GPIO(AF, 1)
                               GPIO_ACTIVE_LOW>;

                nvidia,refclk-select-gpios = <&tegra_main_gpio
                                              TEGRA234_MAIN_GPIO(Q, 4)
                                              GPIO_ACTIVE_HIGH>;
                phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
                       <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
                       <&p2u_nvhs_6>, <&p2u_nvhs_7>;
                phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
                            "p2u-5", "p2u-6", "p2u-7";
        };
};

Does above picture means the dtsi file and ODMDATA is match and when I update my driver(ath11k) succeed, the command lspci -kv will show up kernel driver and module in use?

Any help would be appreciated.
Thank you.

Hi,

Just forget about those ODMDATA. I don’t know why you are so stick to it.

Those document is talking about enabling C7 and C9 PCIe controller on the board. And that is for custom board.

Orin AGX devkit totally has no such hardware there.

We sell modules and some users/customers would make those carrier board to their own kind. If their own board will use pcie C7 and C9 lanes, they need to follow the document for enabling them.

Also, those functions are all for PCIe only. Which means if you already saw the device coming up in lspci, then it has nothing to do with ODMDATA. Enabling them does not help for your case.
Your wifi card is already up on the PCIe C1 controller. But just lacks of a proper vendor driver to run it.


簡單來說, 有一些用戶會自己作底板. 然後他們底板上面有使用到PCIe C7/C9那幾條lane.
那個ODMDATA文件是為了這種用戶.
如果你是使用Oring AGX Devkit底板, 那塊底板上本來就沒有在用PCIe C7/C9 這兩條lane/controller. 你就算把它們開了對你的case也沒有影響… 相反的可能還會沒辦法開機…

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.