Spi pinmux changes not being implemented when compiling kernel on Jetson Nano

Platform: Jetson Nano
Custom board
Kernel Version: 4.9.253
L4T Version: 32.7.2
JetPack 4.6.3
I’m using the NV_Jetson_Nano_Module_Pinmux_Config_Raven v1.01

I’m trying to enable SPI1 and 2 by using the pinmux spredsheet for the nano, then pasting the files into the respective .dtsi files in the prog-platform folder however, when i decompile the device tree that was loaded onto the nano after flashing, the pinmux portion of SPI still shows “rsdv1” as the “nvidia,function” instead of “spi”, and tristate is enabled.

I overrode the .dtsi files that I believe was being used to alter the pinmux, after saving a backup of them, and used the log generated when compiling the kernel to trace back the dts files used to create the device tree. I feel like I traced them all, but it doesn’t look like any of the dtbo’s are overriding what I’m trying to do. I’m not sure where to start diagnosing the problem.

Attached are the boot log and system logs.

boot log.txt (22.2 KB)
system log.txt (4.0 KB)

I can’t upload the pinmux spreadsheet as the forums flag it as a virus. So here’s a screenshot. Both spi1 and 2 are configured the same.

Hi luc4,

Could you provide the flash log to check which dtb in use?
and also provide the dtb file for further check.

flash log (14.7 KB)
kernel_tegra210-p3448-0000-p3449-0000-b00.dts (318.9 KB)

Here you go…

I’m thinking it’s this one because I didn’t notice any other dtb it was using in the flash log. Although there are many other .dtb and .dtbo’s in the boot folder of the nano, so I’m not sure how they all work together. The one I’ve included above is in the /boot/dtb/ folder, whereas all the other dtbs and dtbos are in /boot/.

	populating kernel_tegra210-p3448-0000-p3449-0000-b00.dtb to rootfs... done.

Yes, this is the dtb you are using.

From your device tree, SPI seems be configured properly.

Could you help to run again the following command on your board and share the result?

$sudo cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi

That’s good to hear. Finally was able to get my changes to apply to the final dtb the nano uses.

Here’s the output:

g_nano@tegra-ubuntu:~$ sudo cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi
[sudo] password for g_nano:
Bank: 1 Reg: 0x70003050 Val: 0x0000e004 → spi1_mosi_pc0
Bank: 1 Reg: 0x70003054 Val: 0x0000e044 → spi1_miso_pc1
Bank: 1 Reg: 0x70003058 Val: 0x0000e004 → spi1_sck_pc2
Bank: 1 Reg: 0x7000305c Val: 0x0000e008 → spi1_cs0_pc3
Bank: 1 Reg: 0x70003060 Val: 0x0000e008 → spi1_cs1_pc4
Bank: 1 Reg: 0x70003064 Val: 0x00006004 → spi2_mosi_pb4
Bank: 1 Reg: 0x70003068 Val: 0x00006044 → spi2_miso_pb5
Bank: 1 Reg: 0x7000306c Val: 0x00006004 → spi2_sck_pb6
Bank: 1 Reg: 0x70003070 Val: 0x00006008 → spi2_cs0_pb7
Bank: 1 Reg: 0x70003074 Val: 0x00006008 → spi2_cs1_pdd0
Bank: 1 Reg: 0x70003078 Val: 0x0000e015 → spi4_mosi_pc7
Bank: 1 Reg: 0x7000307c Val: 0x0000e015 → spi4_miso_pd0
Bank: 1 Reg: 0x70003080 Val: 0x0000e015 → spi4_sck_pc5
Bank: 1 Reg: 0x70003084 Val: 0x0000e015 → spi4_cs0_pc6
Bank: 1 Reg: 0x70003088 Val: 0x00002040 → qspi_sck_pee0
Bank: 1 Reg: 0x7000308c Val: 0x00002000 → qspi_cs_n_pee1
Bank: 1 Reg: 0x70003090 Val: 0x00002040 → qspi_io0_pee2
Bank: 1 Reg: 0x70003094 Val: 0x00002040 → qspi_io1_pee3
Bank: 1 Reg: 0x70003098 Val: 0x00002040 → qspi_io2_pee4
Bank: 1 Reg: 0x7000309c Val: 0x00002040 → qspi_io3_pee5
Bank: 0 Reg: 0x70000b70 Val: 0x00000001 → drive_qspi_comp_control
Bank: 0 Reg: 0x70000b78 Val: 0x00000001 → drive_qspi_lpbk_control
Bank: 0 Reg: 0x70000a78 Val: 0x00808000 → drive_qspi_comp

Could you help to refer to the Step 2 of the following thread to disable GPIO usage for SPI pins?
Jetson Nano SPI Bus Not Working - #10 by KevinFFF

After you apply it and re-flash the board, please run the previous command to check pinmux register again.

I checked the file: tegra210-porg-gpio-p3448-0000-b00.dtsi, and it looks like port b and c that are used for SPI aren’t there. I also checked a few others like tegra210-porg-gpio-p3448-0002-b00.dtsi because there are several of these and ports b and c also weren’t there. There was only one other one that still had ports b and C and I removed those entries, then re-compiled the kernel. Here’s tegra210-porg-gpio-p3448-0000-b00.dtsi:

include <dt-bindings/gpio/tegra-gpio.h>
/ {
gpio: gpio@6000d000 {
gpio-init-names = “default”;
gpio-init-0 = <&gpio_default>;
gpio_default: default {
gpio-input = <
TEGRA_GPIO(BB, 0)
TEGRA_GPIO(S, 5)
TEGRA_GPIO(A, 5)
TEGRA_GPIO(X, 4)
TEGRA_GPIO(X, 5)
TEGRA_GPIO(X, 6)
TEGRA_GPIO(Y, 1)
TEGRA_GPIO(Y, 2)
TEGRA_GPIO(V, 1)
TEGRA_GPIO(Z, 0)
TEGRA_GPIO(Z, 2)
TEGRA_GPIO(J, 5)
TEGRA_GPIO(J, 6)
TEGRA_GPIO(J, 4)
TEGRA_GPIO(J, 7)
TEGRA_GPIO(G, 2)
TEGRA_GPIO(G, 3)
TEGRA_GPIO(H, 2)
TEGRA_GPIO(H, 5)
TEGRA_GPIO(H, 6)
TEGRA_GPIO(I, 1)
TEGRA_GPIO(CC, 4)
;
gpio-output-low = <
TEGRA_GPIO(S, 7)
TEGRA_GPIO(T, 0)
TEGRA_GPIO(Z, 3)
TEGRA_GPIO(H, 0)
TEGRA_GPIO(H, 3)
TEGRA_GPIO(H, 4)
TEGRA_GPIO(H, 7)
TEGRA_GPIO(I, 0)
TEGRA_GPIO(I, 2)
;
gpio-output-high = <
TEGRA_GPIO(A, 6)
TEGRA_GPIO(X, 3)
TEGRA_GPIO(CC, 7)
;
};
};
};

I ran that command again and got the same result for GPIO pins:

g_nano@tegra-ubuntu:~$ sudo cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi
[sudo] password for g_nano:
Bank: 1 Reg: 0x70003050 Val: 0x0000e004 → spi1_mosi_pc0
Bank: 1 Reg: 0x70003054 Val: 0x0000e044 → spi1_miso_pc1
Bank: 1 Reg: 0x70003058 Val: 0x0000e004 → spi1_sck_pc2
Bank: 1 Reg: 0x7000305c Val: 0x0000e008 → spi1_cs0_pc3
Bank: 1 Reg: 0x70003060 Val: 0x0000e008 → spi1_cs1_pc4
Bank: 1 Reg: 0x70003064 Val: 0x00006004 → spi2_mosi_pb4
Bank: 1 Reg: 0x70003068 Val: 0x00006044 → spi2_miso_pb5
Bank: 1 Reg: 0x7000306c Val: 0x00006004 → spi2_sck_pb6
Bank: 1 Reg: 0x70003070 Val: 0x00006008 → spi2_cs0_pb7
Bank: 1 Reg: 0x70003074 Val: 0x00006008 → spi2_cs1_pdd0
Bank: 1 Reg: 0x70003078 Val: 0x0000e015 → spi4_mosi_pc7
Bank: 1 Reg: 0x7000307c Val: 0x0000e015 → spi4_miso_pd0
Bank: 1 Reg: 0x70003080 Val: 0x0000e015 → spi4_sck_pc5
Bank: 1 Reg: 0x70003084 Val: 0x0000e015 → spi4_cs0_pc6
Bank: 1 Reg: 0x70003088 Val: 0x00002040 → qspi_sck_pee0
Bank: 1 Reg: 0x7000308c Val: 0x00002000 → qspi_cs_n_pee1
Bank: 1 Reg: 0x70003090 Val: 0x00002040 → qspi_io0_pee2
Bank: 1 Reg: 0x70003094 Val: 0x00002040 → qspi_io1_pee3
Bank: 1 Reg: 0x70003098 Val: 0x00002040 → qspi_io2_pee4
Bank: 1 Reg: 0x7000309c Val: 0x00002040 → qspi_io3_pee5
Bank: 0 Reg: 0x70000b70 Val: 0x00000001 → drive_qspi_comp_control
Bank: 0 Reg: 0x70000b78 Val: 0x00000001 → drive_qspi_lpbk_control
Bank: 0 Reg: 0x70000a78 Val: 0x00808000 → drive_qspi_comp

I have all of these in my prog folder. I made a few copies to keep a backup of the ones I modified.

Screenshot from 2023-05-19 11-18-33

I’m thinking the tegra210-porg-gpio-p3448-0000-b00.dtsi one is the correct one but in the kernel build log I remember seeing some of those other ones where used, so I modified them all to be the same because I wasn’t 100% if one was overriding another.

Could you provide the kernel_tegra210-p3448-0000-p3449-0000-b00.dtb again after you apply the above change?

Have you also tried to configure SPI pinmux through Jetson-IO?

Here’s the newly flashed .dtb:
tegra210-p3448-0000-p3449-0000-b00.dts (318.9 KB)

This is the config I have. I didn’t need to modify anything. Looks like spi was enabled, possibly because in the .config file I changed “CONFIG_SPI_SPIDEV=y” a while ago.

Your device tree configuration seems fine.

Could you help to provide the result of the following command?

$sudo busybox devmem 0x70003050 
$sudo busybox devmem 0x70003054 
$sudo busybox devmem 0x70003058 
$sudo busybox devmem 0x7000305c 
$sudo busybox devmem 0x70003060 

Have you tried the loopback test for SPI?

g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x70003050
0x0000E004
g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x70003054
0x0000E044
g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x70003058
0x0000E004
g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x7000305c
0x0000E008
g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x70003060
0x0000E008
g_nano@tegra-ubuntu:~$ sudo busybox devmem 0x7000305c
0x0000E008

I haven’t yet no, but I’ll try that today. For spidev0.0 I tried to talk to the FRAM chip we have connected to it and for spidev1.0 I tried observing the outputs of miso mosi sck and cs on an oscilloscope but nothing changes. CS is also always high.

Your pinmux values are still wrong for SPI usage.
You should check if the configuration in pinmux spreadsheet has been applied correctly to your BSP package and flash into your board first.

Do you have Jetson Nano devkit with R32.7.3 to verify?

I do have the dev kit with that revision of L4T.

I’m trying to start over and go through the steps again. I’m following this tutorial in “updating bootloader pinmux”: https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3273/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/adaptation_and_bringup_nano.html#wwpID0E0QQ0HA

When I enter the commands in step 6, I noticed in the build log that there’s a warning about SPI.

Warning (reg_format): “reg” property in /fragment@1/overlay/spi@0 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Warning (avoid_default_addr_size): Relying on default #address-cells value for /fragment@1/overlay/spi@0
Warning (avoid_default_addr_size): Relying on default #size-cells value for /fragment@1/overlay/spi@0

One other thing, when I enter the commands in step 6:

$ cd <src_path>/kernel/kernel-4.9/
$ make ARCH=arm64 tegra_defconfig
$ make ARCH=arm64 dtbs

It doesn’t look like it’s actually recompiling the dtb’s even though I see logs it’s doing that, because the boot folder where those things are put stays empty. I usually delete what’s in the boot folder so make sure it’s generating new files as I’m unsure if it would override the existing files. If I recompile the entire kernel then the dtb’s are all rebuilt as usual. Not too sure if those two commands are doing anything.

>galaxiams@galaxiams-OptiPlex-7050:~/jetson_os/jetson_nano_l4t_32.7.3/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 tegra_defconfig
#configuration written to .config

>galaxiams@galaxiams-OptiPlex-7050:~/jetson_os/jetson_nano_l4t_32.7.3/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 dtbs
scripts/kconfig/conf  --silentoldconfig Kconfig
  CHK     scripts/mod/devicetable-offsets.h
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p2597-2180-a00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-a00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-imx274-hdmi.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-a00-auo-1080p-edp.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-android-devkit.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-imx274-dp-hdmi.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-e-base-p2595-0000-a00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-e-p2595-0000-a00-00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a02-devkit-24x7.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit_as_TM660M.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0002-p3449-0000-a02.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0002-p3449-0000-b00.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-as-p3448-0003.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00-hdmi-dsi.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-hdmi-dsi.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-hdmi-dsi.dtb
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-sph0645lm4h.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-uda1334a.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-fe-pi-audio.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-lin-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-m2ke.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-csi.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-adafruit-sph0645lm4h.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-adafruit-sph0645lm4h.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-adafruit-uda1334a.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-adafruit-uda1334a.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-fe-pi-audio.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-lin-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-lin-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-m2ke.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-m2ke.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-common-imx477.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-common-imx219.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx219-dual.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx477-dual.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx477-imx219.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-adafruit-sph0645lm4h.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-adafruit-uda1334a.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-fe-pi-audio.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-respeaker-4-mic-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-respeaker-4-mic-lin-array.dtbo
  DTC     arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-mcp251x.dtbo
Warning (reg_format): "reg" property in /fragment@1/__overlay__/spi@0 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Warning (avoid_default_addr_size): Relying on default #address-cells value for /fragment@1/__overlay__/spi@0
Warning (avoid_default_addr_size): Relying on default #size-cells value for /fragment@1/__overlay__/spi@0
cp -u arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p2597-2180-a00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-a00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-imx274-hdmi.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-p2597-2180-a00-auo-1080p-edp.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-android-devkit.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-imx274-dp-hdmi.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-e-base-p2595-0000-a00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-e-p2595-0000-a00-00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a02-devkit-24x7.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit_as_TM660M.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0002-p3449-0000-a02.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0002-p3449-0000-b00.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-as-p3448-0003.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00-hdmi-dsi.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-hdmi-dsi.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-hdmi-dsi.dtb arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-sph0645lm4h.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-uda1334a.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-fe-pi-audio.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-lin-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-m2ke.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-tx1-p2597-2180-a01-devkit-csi.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-adafruit-sph0645lm4h.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-adafruit-sph0645lm4h.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-adafruit-uda1334a.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-adafruit-uda1334a.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-fe-pi-audio.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-lin-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-lin-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a01-m2ke.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02-m2ke.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-common-imx477.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-common-imx219.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx219-dual.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx477-dual.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-all-p3449-0000-camera-imx477-imx219.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-adafruit-sph0645lm4h.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-adafruit-uda1334a.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-fe-pi-audio.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-respeaker-4-mic-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-respeaker-4-mic-lin-array.dtbo arch/arm64/boot/dts/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/_ddot_/hardware/nvidia/platform/t210/batuu/kernel-dts/tegra210-p3448-0003-p3542-0000-mcp251x.dtbo arch/arm64/boot/dts/

If you are using the devkit to verify, you don’t need to configure pinmux from spreadsheet. You could just use Jetso-IO to configure that.

Please just refer to the following thread step-by-step for SPI loopback test.
Jetson Nano SPI Bus Not Working - #10 by KevinFFF

I have the dev kit, but wasn’t using it. I noted it was a custom board on my initial post. We need the ability to control the device tree.

The JetsonIO interface I aready tried and a photo is already posted on this topic a bit earlier. It shows the spi pins are enabled on the 40 pin header.

Does the warning about spi in the logs above mean anything?

Using the devkit is just helping you to make sure that you do correctly with the flow of SPI loopback test.

It seems something configured not correctly in device tree for SPI.

Since you were using the custom board, do you make sure the design of SPI the same as the devkit?

Holly crap it works!

Before I was going to put it into the devkit I decided to try the loop back on our custom board just for fun, and the spidev_test worked perfectly. I can see the clock on our oscilloscope. This was for spidev1.0 which is our spi1 pins on the SoM. Haven’t tried the spi0 with our FRAM chip yet but we’ll get to that next week and open a new topic if we get into issues.

The only thing is that regarding the busybox devmem values you said where wrong previously, they are all still the same and it works anyway. I’m not sure why, but I’m happy it works right now.

I’m not entirely sure what I did to fix it. But I restarted the entire process to do the pinmux in the excel sheet, copied the contents of the .dtsi files in the right files in prog-platforms. I ran make clean, then make mrpropper. I used menuconfig this time instead of editing the .config manually to enable spidev=y. Then recompiled the entire kernel.

I really appreciate your patience, I know this went on for a while.

Thank you,

Luc Charbonneau

1 Like

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