USB lane mapping config 1 on TX2 Dev Kit board

Hello,

I am trying to use USB lane mapping config#1 on TX2 Dev Kit board. I am using L4T-28.2.1. Below are the changes I made. After below changes in L4T, I am not able to see my PCIe device on M.2 interface but am able to see PCIe device on x4 edge connector. USB device on USB1(J19) type A connector changed from 3.0 to 2.0 after the change though.

Is there any change I need to make besides the changes I made below to make config#1 work?

// Change p2771-0000.conf.common
process_board_version()
{
local board_id="{1}"; local board_version="{2}";
local bdv={board_version^^}; local bid={board_id^^};
local uboot_build=500;
local fromfab="-a00";
local tofab="-c03"; # default = C03
local pmicfab="-c00"; # default = C00
local bpfdtbfab="-c00"; # default = C00
local tbcdtbfab="-c03"; # default = C03
local kerndtbfab="-c03"; # default = C03
#ODMDATA=0x1090000; # default = C0X
ODMDATA=0x90000; # config 1

// Recompile kernel dtb
make ARCH=arm64 O=$TEGRA_KERNEL_OUT dtbs
cp …/kernel-out/kernel/arch/arm64/boot/dts/tegra* kernel/dtb/

// Flash and reboot
./flash.sh jetson-tx2 mmcblk0p1

// plugin-manager reads odmdata correctly
nvidia@tegra-ubuntu:~ ls /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data | grep uphy enable-pcie-on-uphy-lane0 enable-pcie-on-uphy-lane1 enable-pcie-on-uphy-lane2 enable-pcie-on-uphy-lane4 enable-sata-on-uphy-lane5 nvidia@tegra-ubuntu:~

// Ethernet dongle changed from 3.0 to 2.0 after changing from config 2 to config 1
Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 0
bMaxPacketSize0 64
bEndpointAddress 0x81 EP 1 IN

//pcie0_lane2_mux is enabled
nvidia@tegra-ubuntu:/proc/device-tree/gpio@2200000/pcie0_lane2_mux$ ls
gpio-hog gpios label name output-low status
nvidia@tegra-ubuntu:/proc/device-tree/gpio@2200000/pcie0_lane2_mux$ xxd status
00000000: 6f6b 6179 00 okay.

// Dmesg shows it does not link up (x4 is up but not x1)
nvidia@tegra-ubuntu:~$ dmesg | grep pci
[ 0.142270] node /plugin-manager/fragment-500-pcie-config match with board >=3310-1000-500
[ 0.142983] node /plugin-manager/fragment-500-e3325-pcie match with board >=3310-1000-500
[ 0.142999] node /plugin-manager/fragment-500-e3325-pcie match with odm-data enable-pcie-on-uphy-lane0
[ 0.263643] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[ 0.267305] iommu: Adding device 10003000.pcie-controller to group 50
[ 6.465214] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[ 6.475028] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[ 6.484054] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[ 6.495016] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[ 6.954786] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 7.356801] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 7.770789] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 7.772802] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring

Hi,
You may check if usb3-0 is removed in xhci@3530000 and pinctrl@3520000

xhci@3530000 {
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
    phy-names = "utmi-0", "utmi-1", "usb3-0";
};
pinctrl@3520000 {
    pinmux {
        usb3-std-A-port2 {
            nvidia,lanes = "usb3-0";
        };
    };
};

Please also refer to
https://elinux.org/Jetson/TX2_USB
https://devtalk.nvidia.com/default/topic/1023160/jetson-tx2/tx2-using-pcix1-instead-of-usb3-default-config-1-/post/5207785/#5207785

Hello DaneLLL,

I followed the thread you mentioned earlier to remove USB and plugin-manager overrides. However, I am still not able to see my device on M.2 interface.

https://devtalk.nvidia.com/default/topic/1023160/jetson-tx2/tx2-using-pcix1-instead-of-usb3-default-config-1-/post/5207785/#5207785

It looks like niether GimpMaster nor supersturtor was able to make it work on dev kit board in the config#1 forum post you shared (GimpMaster did make it work on his custom board though). Below are changes after following the links you mentioned earlier. Could you help take a look and see if there’s anything wrong with my changes? I am using dev kit board but not custom board.

Based on Platform Adaptation and Bring-Up guide, config#1 should have been validated on dev kit board.

1. Lane mapping registers matches ODMDATA (0x90000)
sudo devmem2 0x02520284 b; sudo devmem2 0x02530284 b; sudo devmem2 0x02540284 b; sudo devmem2 0x02550284 b; sudo devmem2 0x02560284 b; sudo devmem2 0x02570284 b

/dev/mem opened.
Memory mapped at address 0x7f94208000.
Value at address 0x2520284 (0x7f94208284): 0x1
/dev/mem opened.
Memory mapped at address 0x7f882e3000.
Value at address 0x2530284 (0x7f882e3284): 0x1
/dev/mem opened.
Memory mapped at address 0x7f96b33000.
Value at address 0x2540284 (0x7f96b33284): 0x1
/dev/mem opened.
Memory mapped at address 0x7fa95d6000.
Value at address 0x2550284 (0x7fa95d6284): 0x1
/dev/mem opened.
Memory mapped at address 0x7f7f1b9000.
Value at address 0x2560284 (0x7f7f1b9284): 0x1
/dev/mem opened.
Memory mapped at address 0x7fa9289000.
Value at address 0x2570284 (0x7fa9289284): 0x2

2. No plugin-manager overrides anymore

[    0.261527] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[    0.265052] iommu: Adding device 10003000.pcie-controller to group 50
[    6.572856] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[    6.581474] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    6.589596] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[    6.600507] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    7.054783] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.492880] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.904800] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.955859] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring

3. Removed and disabled std A port 2 and usb3-ss definitions in tegra186-quill-p3310-1000-a00-00-base.dts

xhci@3530000 {
                status = "okay";
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
                phy-names = "utmi-0";
                nvidia,boost_cpu_freq = <800>;
        };
        pinctrl@3520000 {
                status = "okay";
                pinctrl-0 = <&tegra_xusb_padctl_pinmux_default>;
                pinctrl-1 = <&vbus_en0_sfio_tristate_state>;
                pinctrl-2 = <&vbus_en1_sfio_tristate_state>;
                pinctrl-3 = <&vbus_en0_sfio_passthrough_state>;
                pinctrl-4 = <&vbus_en1_sfio_passthrough_state>;
                pinctrl-5 = <&vbus_en0_default_state>;
                pinctrl-6 = <&vbus_en1_default_state>;
                pinctrl-names = "default",
                        "vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
                        "vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough",
                        "vbus_en0_default", "vbus_en1_default";
                tegra_xusb_padctl_pinmux_default: pinmux {
                        /* Quill does not support usb3-micro AB */
                        usb2-micro-AB {
                                nvidia,lanes = "otg-0";
                                nvidia,function = "xusb";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
                                nvidia,oc-pin = <0>;
                        };
                        usb2-std-A-port2 {
                                nvidia,lanes = "otg-1";
                                nvidia,function = "xusb";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                nvidia,oc-pin = <1>;
                                status = "disabled";
                        };
                        usb3-std-A-port2 {
                                nvidia,lanes = "usb3-1";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                nvidia,oc-pin = <1>;
                                status = "disabled";
                        };

                        e3325-usb3-std-A-HS {
                                nvidia,lanes = "otg-2";
                                nvidia,function = "xusb";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "disabled";
                        };
                        /*
                        e3325-usb3-std-A-SS {
                                nvidia,lanes = "usb3-0";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "disabled";
                        };
                        */
                };
        };

4. Removed usb3-std-A-port2 and enable pci@1,0 (x4) and pci@3,0 (x1) in tegra186-quill-p3310-1000-c03-00-base.dts

pcie-controller@10003000 {
                pci@1,0 {
                        nvidia,num-lanes = <4>;
                        nvidia,disable-clock-request;
                        status = "okay";
                };
                pci@2,0 {
                        nvidia,num-lanes = <0>;
                        status = "disabled";
                };
                pci@3,0 {
                        nvidia,num-lanes = <1>;
                        status = "okay";
                };
        };

        xhci@3530000 {
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
                phy-names = "utmi-0";
        };

        /*
        pinctrl@3520000 {
                pinmux {
                        usb3-std-A-port2 {
                                nvidia,lanes = "usb3-0";
                        };
                };
        };
        */

5. Pinmux settings under pinctrl@3520000. Looks like all usb3s are disabled

nvidia@tegra-ubuntu:/proc/device-tree/pinctrl@3520000/pinmux$ find . -name status -exec echo {} \; -exec xxd {} \; -or -name 'nvidia,lanes' -exec echo {} \; -exec xxd {} \;
./usb2-std-A-port2/nvidia,lanes
00000000: 6f74 672d 3100                           otg-1.
./usb2-std-A-port2/status
00000000: 6469 7361 626c 6564 00                   disabled.
./usb3-std-A-port2/nvidia,lanes
00000000: 7573 6233 2d31 00                        usb3-1.
./usb3-std-A-port2/status
00000000: 6469 7361 626c 6564 00                   disabled.
./e3325-usb3-std-A-HS/nvidia,lanes
00000000: 6f74 672d 3200                           otg-2.
./e3325-usb3-std-A-HS/status
00000000: 6469 7361 626c 6564 00                   disabled.
./usb2-micro-AB/nvidia,lanes
00000000: 6f74 672d 3000                           otg-0.

6. pcie0_lane2_mux setting under gpio@2200000

nvidia@tegra-ubuntu:/proc/device-tree/gpio@2200000$ xxd pcie0_lane2_mux/status
00000000: 6f6b 6179 00                             okay.

Hi,
Do yo enable pci@3,0? Here is a sample of enabling all three PCIe ports:
https://devtalk.nvidia.com/default/topic/1021886/jetson-tx2/pcie-usb-lane-mapping/post/5203705/#5203705
For x1, it should work fine if device tree is programmed correctly.

FYI. For x4, there are topics discussing about lane reversal.
https://devtalk.nvidia.com/default/topic/1056624/jetson-tx2/tx2-hsio-pcie-x4-lane-reversal/post/5357389/#5357389
https://devtalk.nvidia.com/default/topic/1032439/

Hi,
Please try

pci@3,0 {
        nvidia,num-lanes = <1>;
        <b>nvidia,disable-clock-request;</b>
        status = "okay";
};

It is same as below patch:
https://devtalk.nvidia.com/default/topic/1055234/jetson-tx2/pcie-not-being-recognized-tx2/post/5355729/#5355729

Hello Dane,

Regarding to your comment in post #4, I already enabled pci@3,0. It’s in posting #3 item 4. I also checked /proc/device-tree/pcie-controller@10003000/pci@3,0/status. To clarify, after all the changes in post #3, I was able to see a pcie device on x4 but was not able to see a device on x1. Sorry for not making this clear enough.

xxd /proc/device-tree/pcie-controller@10003000/pci@3\,0/status
00000000: 6f6b 6179 00                             okay.

For the suggested patch in post #5, I did below two experiments.

1. I changed my device tree according to your suggestion but I still do not see PCIe devices on M.2. (I can still see PCIe device on x4)

// tegra186-quill-p3310-1000-c03-00-base.dts
        pcie-controller@10003000 {
                pci@1,0 {
                        nvidia,num-lanes = <4>;
                        nvidia,disable-clock-request;
                        status = "okay";
                };
                pci@2,0 {
                        nvidia,num-lanes = <0>;
                        status = "disabled";
                };
                pci@3,0 {
                        nvidia,num-lanes = <1>;
                        nvidia,disable-clock-request;
                        status = "okay";
                };
        };

// pci@3,0 is enabled and I see nvidia,disable-clock-request in /proc/device-tree
nvidia@tegra-ubuntu:~$xxd /proc/device-tree/pcie-controller@10003000/pci@3\,0/status
00000000: 6f6b 6179 00                             okay.
nvidia@tegra-ubuntu:~$ls /proc/device-tree/pcie-controller@10003000/pci@3\,0/
#address-cells      name                          nvidia,num-lanes  #size-cells
assigned-addresses  nvidia,afi-ctl-offset         ranges            status
device_type         nvidia,disable-clock-request  reg

2. Since changing device tree did not work out, I decided to pull in the patch into drivers/pci/host/pci-tegra.c.

diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index fd74130..fa1cb6a 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -3427,6 +3427,8 @@ static int tegra_pcie_parse_dt(struct tegra_pcie *pcie)
                        return -EADDRNOTAVAIL;
                rp->disable_clock_request = of_property_read_bool(port,
                        "nvidia,disable-clock-request");
+               dev_info(pcie->dev, "PCIE: Force disable clock request\n");     
+               rp->disable_clock_request = 1;
 
                rp->rst_gpio = of_get_named_gpio(port, "nvidia,rst-gpio", 0);
                if (gpio_is_valid(rp->rst_gpio)) {
// dmesg shows the printk I added but port 2 did not link up
nvidia@tegra-ubuntu:~$ dmesg | grep -i pci
                   PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000   (    16 MB)
[    0.262554] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[    0.266000] iommu: Adding device 10003000.pcie-controller to group 50
[    0.409774] PCI: CLS 0 bytes, default 128
[    6.231900] tegra-pcie 10003000.pcie-controller: PCIE: Force disable clock request
[    6.256073] tegra-pcie 10003000.pcie-controller: PCIE: Force disable clock request
[    6.266555] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[    6.275527] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    6.283773] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[    6.303878] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    6.736529] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.146422] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.588325] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.590340] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
// Device on x4 is still fine. Realtek NIC is plugged in x4. There is a working wifi M.2 NIC card plugged in x1 but did not enumerate since there's no link up
nvidia@tegra-ubuntu:~$ lspci
00:01.0 PCI bridge: NVIDIA Corporation Device 10e5 (rev a1)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)

Hi Dane,

My experiment in #6 indicates the patch does not work. Would you please advise next step?

Hi,
Is the x1 card Intel 8260? We have seen some issues in running it on Xavier and Nano:

https://devtalk.nvidia.com/default/topic/1050167/jetson-nano/nano-won-t-boot-with-intel-8260ngw-mini-pcie-wifi-card-/post/5330959/#5330959

If you do not use this card, please share information about your card.

Hello Dane,

The device I am trying is BCM4356ZAE (14e4:43ec)

Is there any M.2 Pcie device that is known working on dev kit carrier board? I can also order the same one and try it on my setup if you can share that.

Below is the lspci output when I plugged the same card into x4 edge connector using a M2/Edge adaptor card (https://www.amazon.com/NGFF-wireless-network-card-adapter/dp/B07F885Q1J)

When I plugged the same card into M.2 connector in the dev kit carrier board. Link does not come up with ODMDATA and device tree changes made earlier.

nvidia@tegra-ubuntu:~$ lspci -vv
00:01.0 PCI bridge: NVIDIA Corporation Device 10e5 (rev a1) (prog-if 00 [Normal decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 388
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: 50200000-507fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: <access denied>
        Kernel driver in use: pcieport

01:00.0 Network controller: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter (rev 03)
        Subsystem: Broadcom Corporation BCM4356 802.11ac Wireless Network Adapter
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 388
        Region 0: Memory at 50200000 (64-bit, non-prefetchable) [disabled] 
        Region 2: Memory at 50400000 (64-bit, non-prefetchable) [disabled] 
        Capabilities: <access denied>

Here is the dmesg output when the same card was plugged in M.2

nvidia@tegra-ubuntu:~$ dmesg | egrep -i '(pci|dhd|bcm)'
                   PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000   (    16 MB)
[    0.262755] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[    0.266338] iommu: Adding device 10003000.pcie-controller to group 50
[    0.409730] PCI: CLS 0 bytes, default 128
[    2.711547] bcm54xx_low_power_mode(): put phy in iddq-lp mode
[    6.575534] tegra-pcie 10003000.pcie-controller: PCIE: Force disable clock request
[    6.586058] tegra-pcie 10003000.pcie-controller: PCIE: Force disable clock request
[    6.595846] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[    6.596699] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[    6.597146] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[    6.598537] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[    6.779533] dhd_module_init in
[    6.792335] found wifi platform device bcmdhd_wlan
[    6.817826] Power-up adapter 'DHD generic adapter'
[    7.053327] DHD: dongle ram size is set to 786432(orig 786432) at 0x180000
[    7.060435] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.062491] dhd_attach(): thread:dhd_watchdog_thread:1de started
[    7.062572] dhd_attach(): thread:dhd_dpc:1e0 started
[    7.062607] dhd_attach(): thread:dhd_rxf:1e1 started
[    7.062614] dhd_deferred_work_init: work queue initialized
               Compiled in drivers/net/wireless/bcmdhd on Jul  5 2019 at 12:42:36
[    7.136041] dhd_prot_ioctl : bus is down. we have nothing to do
[    7.462388] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.874400] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[    7.876432] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[    7.876731] tegra-pcie 10003000.pcie-controller: PCI host bridge to bus 0000:00

Hi Dane,

I see Intel 8265NGW is in recommended component list for Xavier and Nano. Does this work on TX2? I am asking because it’s not in TX2’s supported component list.

Thank you!

With 28.2 release, I just flashed with ODM data 0x90000 (for Config #1) and with Intel 9260NGW M.2 Key-E WiFi card connected to the slot, it got enumerated. I’m sure even Intel 8265NGW would get enumerated. I’m not really sure why BCM4356 won’t get enumerated. Did you happen to check with any other M.2 Key-E card? Now, I’m wondering if the slot in your board is in working condition (given the same BCM4356 get enumerated through an adapter on x4 slot)

Hello Vidyas,

I received my 8265NGW yesterday and got it enumerated. However, my BCM4356 still does not work on my TX2 M.2 slot. We still don’t have clear idea why BCM4356 does not enumerate but 8265NGW does. We are investigating this. We also purchased an Ableconn RTL8168E 1Gbps M.2 Ethernet card which also shows the same symptom as BCM4356 (i.e., enumerate on x4 an through adapter but not on x1 M.2)

It would be nice if I can recreate your experiment. What was you process of changing ODM data (i.e., through -o flag in flash.sh or change p2771-0000.conf.common) and did you have to change other dts/dtsi files to make it work (i.e., does plugin-manager take care of dtb override for you fine)?

Thank you!

I modified ODM data in p2771-0000.conf.common file and apart from that I didn’t touch any other thing (neither configs nor DT files) and it just works fine.

Hi Vidyas,

I was able recreate what you did and saw Intel-8265NGW on my M.2 slot. However, I was still not able to see BCM4356. I am debugging this. Looks like plug-in manager handles dtb override correctly at least for config #1.

Thank you

Hi Viyas,

I made below change in device tree and now I can see my BCM4356 on M.2.

diff --git a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
index 183b075..5de9f5a 100644
--- a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
+++ b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
@@ -228,6 +228,9 @@
 					pcie0_lane2_mux {
 						status = "okay";
 					};
+					e3325_sdio_rst {
+						status = "okay";
+					};
 				};
 			};
 		};

That would release SDIO RESET of the card. But, are you trying to get it enumerated over SDIO or PCIe? If you are trying to get it enumerated over PCIe, I’m wondering why SDIO RESET has any effect on PCIe? BTW, did you randomly try it and found to be working or got this information from somewhere? (like from BCM4356 datasheet)

I was trying to get it enumerated on PCIe. I was able to get schematics from the vendor and figured it out. It was tied to a proprietary reset pin of the chip.

Hi vidyas,

Is there a way to tristate/float SDIO_RESET from device tree? Can you share with me what needs to be done. There’s already a pull up on the device side so I think the best is to tristate SDIO_RESET if it’s possible since there’s voltage mismatch (TX2 SDIO_RESET is 1.8V, device pullup is 3.3V).

Hi Vidyas,

I was able to tristate it by below changes.

diff --git a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-300-plugin-manager.dtsi b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-300-plugin-manager.dtsi
index 7cc96ea..550dd03 100644
--- a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-300-plugin-manager.dtsi
+++ b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-300-plugin-manager.dtsi
@@ -36,6 +36,15 @@
 				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
 				status = "disabled";
 			};
+
+			gpio_wan3_pb6 {
+				nvidia,pins = "gpio_wan3_pb6";
+				nvidia,function = "rsvd0";
+				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+				nvidia,tristate = <TEGRA_PIN_ENABLE>;
+				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+			        status = "okay";	
+			};
 		};
 	};
 
diff --git a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
index 183b075..1a2c503 100644
--- a/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
+++ b/kernel-dts/t18x-common-plugin-manager/tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
@@ -228,6 +228,9 @@
 					pcie0_lane2_mux {
 						status = "okay";
 					};
+					e3325_sdio_rst {
+						status = "disabled";
+					};
 				};
 			};
 		};

OK.
Your change in #19 should just work fine.