TX2 NX - Failed to connect WiFi module over SDIO interface

Build/Flash steps

I started by creating a copy of Linux_for_Tegra/sources/hardware/nvidia/platform/t18x/lanai/kernel-dts/tegra186-p3636-0001-p3509-0000-a01.dts

cp Linux_for_Tegra/sources/hardware/nvidia/platform/t18x/lanai/kernel-dts/tegra186-p3636-0001-p3509-0000-a01.dts \
  Linux_for_Tegra/sources/hardware/nvidia/platform/t18x/lanai/kernel-dts/tesseract-devicetree.dts

I added my file to the Linux_for_Tegra/sources/hardware/nvidia/platform/t18x/lanai/kernel-dts/Makefile

dtb-$(CONFIG_ARCH_TEGRA_18x_SOC) += tesseract-devicetree.dtb

I built the device tree like

make ARCH=arm64 O="$BUILD_DIR" -j"$(nproc)" dtbs

and the kernel like

make ARCH=arm64 O="$BUILD_DIR" -j"$(nproc)" Image

I copy the new device tree (build/arch/arm64/boot/dts/tesseract-devicetree.dtb) to the TX2 NX and make the changes in /boot/extlinux/extlinux.conf to use it:

LABEL primary
      MENU LABEL primary kernel
      LINUX /home/ubuntu/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2 
      FDT /home/ubuntu/tesseract-devicetree.dtb

I copy and overwrite the Image to the TX2 NX.
I reboot the device.

Device tree altering steps

I kept the same "include"s in the new DTSI file (tesseract-devicetree.dts) except the:

#include "common/tegra186-camera-lanai-rbpcv2-imx219.dtsi"
/* plugin manager */
#include "common/tegra186-super-module-e2614-p3509-0000-a00.dtsi"

and I included our sensor file (which doesn’t have any sdhci changes).

I started from default for sdhci node and kept adding/changing/deleting properties. Here are the changes that were used for the generated device tree snippet that I shared in the first comment:

    // WiFi/Bluetooth module
    sdhci@3440000 {
        id = <0>;
        nvidia,is-sdio;
        fixed-clock-freq = <25500000 25500000 24000000 47000000 24000000 47000000 94000000 204000000 0 0 0>;
        max-clk-limit = <204000000>;
        // ddr-clk-limit = <48000000>;
        uhs-mask = <0x60>;
        // ddr-clk-limit = <104000000>;
        /delete-property/ ddr-clk-limit;
        /delete-property/ iommus;

        // enable-sdio-wakeup;
        // cap-sdio-irq;
        only-1-8-v;
        status = "okay";
        nvidia,disable-rtpm;
        force-non-removable-rescan;
        mwifiex: wifi@1 {
            compatible = "marvell,sd8997";
            reg = <1>;
        };
    };

Following the Build/Flash steps procedure I can see on the device my changes in this file.


Why your device looks like out of order and missing some properties?

What is it strange about it?