J101-v2 carrier board from Seeed - Unusable 40pin header

I am interested to know if someone of you by any chance has the J101-v2 carrier board for jetson nano, from Seeed, and was able to configure the 40pin header (spi interface) ?

I installed the dt-overlays according to https://github.com/Seeed-Studio/seeed-linux-dtoverlays to be able to use the SPI interface but when I want to manually configure the 40pin header I receive this error:

FATAL ERROR! |
| |
| |
| Failed to get pin number for node |
| /fragment@10/__overlay__/header-40pin-spi0-pinmux/pin18/! |
| |
| Press any key to terminate

I addressed my issue to their support and I received this reply which is very ambiguous to me:

Hello.
This device can only be used with the official nvidia jetson nano dev kit.

Regards!

Output of /opt/nvidia/jetson-io/config-by-hardware.py -l is

Header 1 [default]: Jetson 40pin Header
Available hardware modules:
1. Seeed 2xMCP2518FD
2. reComputer sdmmc
Header 2: Jetson Nano CSI Connector
Available hardware modules:
1. Camera IMX219 Dual
2. Camera IMX477 Dual
3. Camera IMX477-A and IMX219-

I really appreciate your help!

@baozhu.zuo

Please help to check this issue which need Seeed support. Thanks

Hi @konkhra,

Could you please install Jetpack 4.6.1 [L4T 32.7.1 ] and try again? This should be a compatibility problem.

Thank you.

Hi!

@baozhu.zuo I will try it these days although there’s not a big difference between 32.7.1 and 32.7.2.

I installed Jetpack 4.6.1 [L4T 32.7.1 ]

How do I configure the SPI pins?

I’ve been told that /opt/nvidia/jetson-io/jetson-io.py works only on Dev Kits.

I am still waiting for a reply on this topic.

@baozhu.zuo

Is there any update from Seeed to help this cusomter?

Hello @konkhra,

Please follow the steps below:

  1. Download Jetson Nano module Pinmux from here. This file can be found on this webpage under Jetson Nano Pinmux as well.

  2. Configure SPI pins as follows.

  1. Click Generate DT File

  1. Give it any name and click OK

1663237678821

It will generate 2 files. What we are interested in is the tegra210-jetson_nano_module_spi-pinmux.dtsi file

  1. Open the file and you will see spi1 configured as follows:
			spi1_mosi_pc0 {
				nvidia,pins = "spi1_mosi_pc0";
				nvidia,function = "spi1";
				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			};

			spi1_miso_pc1 {
				nvidia,pins = "spi1_miso_pc1";
				nvidia,function = "spi1";
				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			};

			spi1_sck_pc2 {
				nvidia,pins = "spi1_sck_pc2";
				nvidia,function = "spi1";
				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			};

			spi1_cs0_pc3 {
				nvidia,pins = "spi1_cs0_pc3";
				nvidia,function = "spi1";
				nvidia,pull = <TEGRA_PIN_PULL_UP>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			};

			spi1_cs1_pc4 {
				nvidia,pins = "spi1_cs1_pc4";
				nvidia,function = "spi1";
				nvidia,pull = <TEGRA_PIN_PULL_UP>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
			};
  1. By taking the above file as reference, copy the contents below into a file named tegra210-jetson_nano_module_spi-pinmux.dts
/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/tegra210-p3448-0000-p3449-0000-a02.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
//#include <dt-common/jetson/tegra194-p3668-all-p3509-0000.h>


/ {
    overlay-name = "Internal gpios";
//	jetson-header-name = "Jetson 40pin Header";
	compatible = JETSON_COMPATIBLE;

    fragment@0 {
        target = <&pinmux>;
        __overlay__ {

                spi1_mosi_pc0 {
                    nvidia,pins = "spi1_mosi_pc0";
                    nvidia,function = "spi1";
                    nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                    nvidia,tristate = <TEGRA_PIN_DISABLE>;
                    nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                };

                spi1_miso_pc1 {
                    nvidia,pins = "spi1_miso_pc1";
                    nvidia,function = "spi1";
                    nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                    nvidia,tristate = <TEGRA_PIN_DISABLE>;
                    nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                };

                spi1_sck_pc2 {
                    nvidia,pins = "spi1_sck_pc2";
                    nvidia,function = "spi1";
                    nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                    nvidia,tristate = <TEGRA_PIN_DISABLE>;
                    nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                };

                spi1_cs0_pc3 {
                    nvidia,pins = "spi1_cs0_pc3";
                    nvidia,function = "spi1";
                    nvidia,pull = <TEGRA_PIN_PULL_UP>;
                    nvidia,tristate = <TEGRA_PIN_DISABLE>;
                    nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                };

                spi1_cs1_pc4 {
                    nvidia,pins = "spi1_cs1_pc4";
                    nvidia,function = "spi1";
                    nvidia,pull = <TEGRA_PIN_PULL_UP>;
                    nvidia,tristate = <TEGRA_PIN_DISABLE>;
                    nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                };

            
        };
    };
};
  1. Clone the following repo
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays
  1. Copy the above tegra210-jetson_nano_module_spi-pinmux.dts into seeed-linux-dtoverlays/overlays/jetsonnano

  2. Build and generate dtbo

make overlays/jetsonnano/tegra210-jetson_nano_module_spi-pinmux.dtbo

It will generate tegra210-jetson_nano_module_spi-pinmux.dtbo file

  1. Rename the original dtb
cd /boot
sudo mv kernel_tegra210-p3448-0002-p3449-0000-b00.dtb kernel_tegra210-p3448-0002-p3449-0000-b00-bak.dtb
  1. Merge dtbo and dtb
sudo fdtoverlay -i kernel_tegra210-p3448-0002-p3449-0000-b00-bak.dtb \
-o kernel_tegra210-p3448-0002-p3449-0000-b00.dtb  \
/home/{username}/seeed-linux-dtoverlays/overlays/jetsonnano/tegra210-jetson_nano_module_spi-pinmux.dtbo
  1. Sync
sync
  1. Modify /boot/extlinux/extlinux.conf as follows
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT kernel_tegra210-p3448-0002-p3449-0000-b00.dtb
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 nv-auto-config

Note: FDT kernel_tegra210-p3448-0002-p3449-0000-b00.dtb is the added line

  1. Reboot device

  2. Verify it by

dtc -I fs /proc/device-tress > dts.txt
cat dts.txt | grep spi1

Please do let me know if you have any questions.

1 Like

Hi baozhu.zuo!

Thank you for reply!

I have followed the exact same steps as you suggested, no errors reported during the setup but device is not booting. See screenshot bellow.

How do I get back to old settings in /boot/extlinux/extlinux.conf ? I wish I could get back to an working device without reinstalling it with SDK Manager.

[0001.819] I2C Bus Init done
[0001.822] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.832] I2C Bus Init done
[0001.835] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.845] I2C Bus Init done
[0001.848] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.858] I2C Bus Init done
[0001.861] of_children_init: Ops found for compatible string maxim,max77620
[0001.871] max77620_init using irq 118
[0001.876] register 'maxim,max77620' pmic
[0001.880] gpio_driver_register: register 'max77620-gpio' driver
[0001.887] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.897] I2C Bus Init done
[0001.901] NCK carveout not present
[0001.910] Find /i2c@7000c000's alias i2c0
[0001.914] get eeprom at 1-a0, size 256, type 0
[0001.923] Find /i2c@7000c500's alias i2c2
[0001.927] get eeprom at 3-a0, size 256, type 0
[0001.931] get eeprom at 3-ae, size 256, type 0
[0001.935] pm_ids_update: Updating 1,a0, size 256, type 0
[0001.941] I2C slave not started
[0001.944] I2C write failed
[0001.946] Writing offset failed
[0001.949] eeprom_init: EEPROM read failed
[0001.953] pm_ids_update: eeprom init failed
[0001.957] pm_ids_update: Updating 3,a0, size 256, type 0
[0001.988] pm_ids_update: The pm board id is 3448-0002-401
[0001.994] Adding plugin-manager/ids/3448-0002-401=/i2c@7000c500:module@0x50
[0002.003] pm_ids_update: pm id update successful
[0002.007] pm_ids_update: Updating 3,ae, size 256, type 0
[0002.037] eeprom_init: EEPROM incompatible version found
[0002.043] pm_ids_update: eeprom init failed
[0002.072] eeprom_get_mac: EEPROM invalid MAC address (all 0xff)
[0002.078] shim_eeprom_update_mac:267: Failed to update 0 MAC address in DTB
[0002.086] eeprom_get_mac: EEPROM invalid MAC address (all 0xff)
[0002.092] shim_eeprom_update_mac:267: Failed to update 1 MAC address in DTB
[0002.100] updating /chosen/nvidia,ethernet-mac node 48:b0:2d:69:9e:97
[0002.107] Plugin Manager: Parse ODM data 0x000a4000
[0002.119] shim_cmdline_install: /chosen/bootargs: earlycon=uart8250,mmio32,0x70006000 
[0002.134] Find /i2c@7000c000's alias i2c0
[0002.137] get eeprom at 1-a0, size 256, type 0
[0002.146] Find /i2c@7000c500's alias i2c2
[0002.150] get eeprom at 3-a0, size 256, type 0
[0002.154] get eeprom at 3-ae, size 256, type 0
[0002.159] pm_ids_update: Updating 1,a0, size 256, type 0
[0002.164] I2C slave not started
[0002.167] I2C write failed
[0002.170] Writing offset failed
[0002.173] eeprom_init: EEPROM read failed
[0002.177] pm_ids_update: eeprom init failed
[0002.181] pm_ids_update: Updating 3,a0, size 256, type 0
[0002.211] pm_ids_update: The pm board id is 3448-0002-401
[0002.217] Adding plugin-manager/ids/3448-0002-401=/i2c@7000c500:module@0x50
[0002.224] pm_ids_update: pm id update successful
[0002.229] pm_ids_update: Updating 3,ae, size 256, type 0
[0002.259] eeprom_init: EEPROM incompatible version found
[0002.264] pm_ids_update: eeprom init failed
[0002.294] Add serial number:1420822031695 as DT property
[0002.302] Applying platform configs
[0002.308] platform-init is not present. Skipping
[0002.313] calling apps_init()
[0002.334] Found 17 GPT partitions in "sdmmc3_user"
[0002.339] Proceeding to Cold Boot
[0002.342] starting app android_boot_app
[0002.346] Device state: unlocked
[0002.349] display console init
[0002.357] could not find regulator
[0002.380] hdmi cable not connected
[0002.384] is_hdmi_needed: HDMI not connected, returning false
[000[0002.393] DT entry for leds-pwm not found
2.389] hdmi is not connected
[0002.400] sor0 is not supported
[0002.403] display_console_init: no valid display out_type
[0002.410] subnode volume_up is not found !
[0002.414] subnode back is not found !
[0002.418] subnode volume_down is not found !
[0002.422] subnode menu is not found !
[0002.426] Gpio keyboard init success
[0002.473] found decompressor handler: lz4-legacy
[0002.488] decompressing blob (type 1)...
[0002.554] display_resolution: No display init
[0002.558] Failed to retrieve display resolution
[0002.563] Could not load/initialize BMP blob...ignoring
[0002.568] -------> se_aes_verify_sbk_clear: 747
[0002.572] se_aes_verify_sbk_clear: Error
[0002.576] SE operation failed
[0002.579] bl_battery_charging: connected to external power supply
[0002.588] display_console_ioctl: No display init
[0002.593] switch_backlight failed
[0002.602] device_query_partition_size: failed to open partition sdmmc3_user:MSC !
[0002.610] MSC Partition not found
[0002.619] device_query_partition_size: failed to open partition sdmmc3_user:USP !
[0002.627] USP partition read failed!
[0002.630] blob_init: blob-partition USP header read failed
[0002.636] android_boot Unable to update recovery partition
[0002.641] kfs_getpartname: name = LNX
[0002.645] Loading kernel from LNX
[0002.742] load kernel from storage
[0002.752] decompressor handler not found
[0002.786] Successfully loaded kernel and ramdisk images
[0002.791] board ID = D78, board SKU = 2
[0002.796] display_resolution: No display init
[0002.800] Failed to retrieve display resolution
[0002.804] bmp blob is not loaded and initialized
[0002.809] Failed to display boot-logo
[0002.812] NCK carveout not present
[0002.816] Skipping dts_overrides
[0002.819] NCK carveout not present
[0002.828] Find /i2c@7000c000's alias i2c0
[0002.832] get eeprom at 1-a0, size 256, type 0
[0002.841] Find /i2c@7000c500's alias i2c2
[0002.845] get eeprom at 3-a0, size 256, type 0
[0002.849] get eeprom at 3-ae, size 256, type 0
[0002.854] pm_ids_update: Updating 1,a0, size 256, type 0
[0002.859] I2C slave not started
[0002.862] I2C write failed
[0002.865] Writing offset failed
[0002.868] eeprom_init: EEPROM read failed
[0002.872] pm_ids_update: eeprom init failed
[0002.876] pm_ids_update: Updating 3,a0, size 256, type 0
[0002.906] pm_ids_update: The pm board id is 3448-0002-401
[0002.913] Adding plugin-manager/ids/3448-0002-401=/i2c@7000c500:module@0x50
[0002.921] pm_ids_update: pm id update successful
[0002.926] pm_ids_update: Updating 3,ae, size 256, type 0
[0002.956] eeprom_init: EEPROM incompatible version found
[0002.961] pm_ids_update: eeprom init failed
[0002.991] eeprom_get_mac: EEPROM invalid MAC address (all 0xff)
[0002.997] shim_eeprom_update_mac:267: Failed to update 0 MAC address in DTB
[0003.005] eeprom_get_mac: EEPROM invalid MAC address (all 0xff)
[0003.010] shim_eeprom_update_mac:267: Failed to update 1 MAC address in DTB
[0003.019] updating /chosen/nvidia,ethernet-mac node 48:b0:2d:69:9e:97
[0003.025] Plugin Manager: Parse ODM data 0x000a4000
[0003.037] shim_cmdline_install: /chosen/bootargs: earlycon=uart8250,mmio32,0x70006000 
[0003.046] Add serial number:1420822031695 as DT property
[0003.055] "bpmp" doesn't exist, creating 
[0003.060] Updated bpmp info to DTB
[0003.065] Updated initrd info to DTB
[0003.068] "proc-board" doesn't exist, creating 
[0003.075] Updated board info to DTB
[0003.078] "pmu-board" doesn't exist, creating 
[0003.084] Updated board info to DTB
[0003.087] "display-board" doesn't exist, creating 
[0003.093] Updated board info to DTB
[0003.097] "reset" doesn't exist, creating 
[0003.101] Updated reset info to DTB
[0003.105] display_console_ioctl: No display init
[0003.109] display_console_ioctl: No display init
[0003.114] display_console_ioctl: No display init
[0003.118] Cmdline: tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt 
[0003.153] DTB cmdline: earlycon=uart8250,mmio32,0x70006000 
[0003.158] boot image cmdline: root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 
[0003.175] Updated bootarg info to DTB
[0003.178] Adding uuid 00000001643205c61c0000000e058480 to DT
[0003.184] Adding eks info 0 to DT
[0003.190] WARNING: Failed to pass NS DRAM ranges to TOS, err: -7
[0003.196] Updated memory info to DTB
[0003.204] set vdd_core voltage to 1075 mv
[0003.207] setting 'vdd-core' regulator to 1075000 micro volts
[0003.213] Found secure-pmc; disable BPMP


U-Boot 2020.04-g4335beb (Apr 20 2022 - 14:22:25 -0700)

SoC: tegra210
Model: NVIDIA Jetson Nano Developer Kit
Board: NVIDIA P3450-0000
DRAM:  4 GiB
MMC:   sdhci@700b0000: 1, sdhci@700b0600: 0
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  2  1  0 
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
949 bytes read in 28 ms (32.2 KiB/s)
1:	primary kernel
Retrieving file: /boot/initrd
7160179 bytes read in 210 ms (32.5 MiB/s)
Retrieving file: /boot/Image
34484232 bytes read in 780 ms (42.2 MiB/s)
append: tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt  earlycon=uart8250,mmio32,0x70006000  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 ipv6.disable=1
Retrieving file: /boot/extlinux/kernel_tegra210-p3448-0002-p3449-0000-b00.dtb
Skipping primary for failure retrieving FDT
SCRIPT FAILED: continuing...
starting USB...
Bus usb@7d000000: tegrausb: Invalid dr_mode 2 for host mode
probe failed, error -1
Bus xusb@70090000: Loading XUSB FW blob from RP4 partition ...

Firmware size 126464
Firmware timestamp: 0x5f23e558, Version: 50.26 release

Register HCSParams1: 9000124 NbrPorts: 9
Starting the controller
USB XHCI 1.00
scanning bus xusb@70090000 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device

Device 0: unknown device
PCI device eth_rtl8169: unknown chip version, assuming RTL-8169
PCI device: TxConfig = 0x4B100D00
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5
BOOTP broadcast 6
BOOTP broadcast 7

I reinstalled the reComputer with SDK Manager, Jetpack 4.6.2, followed the same steps baozhu.zuo posted here and I receive the same error:

Retrieving file: /boot/extlinux/kernel_tegra210-p3448-0002-p3449-0000-b00.dtb
Skipping primary for failure retrieving FDT
SCRIPT FAILED: continuing...

Please, any updates on this topic?

I would like an official update/answer from Seeed if this is doable or not so that we can decide what to do further. Thank you!

@konkhra hello, I am a seeeder. maybe you can try modify the extlinux.conf
FDT kernel_tegra210-p3448-0002-p3449-0000-b00.dtb

fix to

FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00.dtb

Modifying FDT kernel_tegra210-p3448-0002-p3449-0000-b00.dtb to FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00.dtb solved the error for not booting the device but SPI still not working.

I’ve tested with a simple led strip WS2813 which is working fine on Jetson Nano Dev Kit 4GB with the following python code:

import time
import board
import neopixel_spi as neopixel

NUM_PIXELS = 8
PIXEL_ORDER = neopixel.GRB
COLORS = (0xFF0000, 0x00FF00, 0x0000FF)
DELAY = 0.1

spi = board.SPI()

pixels = neopixel.NeoPixel_SPI(
    spi, NUM_PIXELS, pixel_order=PIXEL_ORDER, auto_write=False
)

while True:
    for color in COLORS:
        for i in range(NUM_PIXELS):
            pixels[i] = color
            pixels.show()
            time.sleep(DELAY)
            pixels.fill(0)
 

This is the output for dtc -I fs /proc/device-tree | grep spi1 on device from Seeed:

                spi1 = "/spi@7000d600";
                hdr40_spi1 = "/spi@7000d400";
                        spi1_prod {
                spi1_mosi_pc0 {
                        nvidia,pins = "spi1_mosi_pc0";
                        nvidia,function = "spi1";
                spi1_sck_pc2 {
                        nvidia,pins = "spi1_sck_pc2";
                        nvidia,function = "spi1";
                spi1_cs1_pc4 {
                        nvidia,pins = "spi1_cs1_pc4";
                        nvidia,function = "spi1";
                        spi1_mosi_pc0 {
                                nvidia,pins = "spi1_mosi_pc0";
                        spi1_sck_pc2 {
                                nvidia,pins = "spi1_sck_pc2";
                        spi1_cs1_pc4 {
                                nvidia,pins = "spi1_cs1_pc4";
                        spi1_cs0_pc3 {
                                nvidia,pins = "spi1_cs0_pc3";
                        spi1_miso_pc1 {
                                nvidia,pins = "spi1_miso_pc1";
                spi1_cs0_pc3 {
                        nvidia,pins = "spi1_cs0_pc3";
                        nvidia,function = "spi1";
                spi1_miso_pc1 {
                        nvidia,pins = "spi1_miso_pc1";
                        nvidia,function = "spi1";
                spi1 = "/spi@7000d600";

and this is the output on Dev Kit:

                spi1 = "/spi@7000d600";
                hdr40_spi1 = "/spi@7000d400";
                        spi1_prod {
                                nvidia,pins = "spi1_miso_pc1";
                                nvidia,function = "spi1";
                                nvidia,pins = "spi1_cs1_pc4";
                                nvidia,function = "spi1";
                                nvidia,pins = "spi1_cs0_pc3";
                                nvidia,function = "spi1";
                                nvidia,pins = "spi1_mosi_pc0";
                                nvidia,function = "spi1";
                                nvidia,pins = "spi1_sck_pc2";
                                nvidia,function = "spi1";
                        spi1_mosi_pc0 {
                                nvidia,pins = "spi1_mosi_pc0";
                        spi1_sck_pc2 {
                                nvidia,pins = "spi1_sck_pc2";
                        spi1_cs1_pc4 {
                                nvidia,pins = "spi1_cs1_pc4";
                        spi1_cs0_pc3 {
                                nvidia,pins = "spi1_cs0_pc3";
                        spi1_miso_pc1 {
                                nvidia,pins = "spi1_miso_pc1";
                spi1 = "/spi@7000d600";

This is the output for sudo cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi on device from Seeed

Bank: 1 Reg: 0x70003050 Val: 0x0000e015 -> spi1_mosi_pc0
Bank: 1 Reg: 0x70003054 Val: 0x0000e015 -> spi1_miso_pc1
Bank: 1 Reg: 0x70003058 Val: 0x0000e015 -> spi1_sck_pc2
Bank: 1 Reg: 0x7000305c Val: 0x0000e015 -> spi1_cs0_pc3
Bank: 1 Reg: 0x70003060 Val: 0x0000e015 -> spi1_cs1_pc4
Bank: 1 Reg: 0x70003064 Val: 0x00006016 -> spi2_mosi_pb4
Bank: 1 Reg: 0x70003068 Val: 0x00006016 -> spi2_miso_pb5
Bank: 1 Reg: 0x7000306c Val: 0x00006016 -> spi2_sck_pb6
Bank: 1 Reg: 0x70003070 Val: 0x00006016 -> spi2_cs0_pb7
Bank: 1 Reg: 0x70003074 Val: 0x00006015 -> 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: 0x00002015 -> qspi_sck_pee0
Bank: 1 Reg: 0x7000308c Val: 0x00002015 -> qspi_cs_n_pee1
Bank: 1 Reg: 0x70003090 Val: 0x00002015 -> qspi_io0_pee2
Bank: 1 Reg: 0x70003094 Val: 0x00002015 -> qspi_io1_pee3
Bank: 1 Reg: 0x70003098 Val: 0x00002015 -> qspi_io2_pee4
Bank: 1 Reg: 0x7000309c Val: 0x00002015 -> 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

and this is the output on Dev Kit

Bank: 1 Reg: 0x70003050 Val: 0x0000e044 -> spi1_mosi_pc0
Bank: 1 Reg: 0x70003054 Val: 0x0000e044 -> spi1_miso_pc1
Bank: 1 Reg: 0x70003058 Val: 0x0000e044 -> spi1_sck_pc2
Bank: 1 Reg: 0x7000305c Val: 0x0000e048 -> spi1_cs0_pc3
Bank: 1 Reg: 0x70003060 Val: 0x0000e048 -> spi1_cs1_pc4
Bank: 1 Reg: 0x70003064 Val: 0x00006016 -> spi2_mosi_pb4
Bank: 1 Reg: 0x70003068 Val: 0x00006016 -> spi2_miso_pb5
Bank: 1 Reg: 0x7000306c Val: 0x00006016 -> spi2_sck_pb6
Bank: 1 Reg: 0x70003070 Val: 0x00006016 -> spi2_cs0_pb7
Bank: 1 Reg: 0x70003074 Val: 0x00006015 -> 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

this is the output for sudo cat /sys/kernel/debug/tegra_gpio on device from Seeed

Name:Bank:Port CNF OE OUT IN INT_STA INT_ENB INT_LVL
 A: 0:0 64 40 40 24 00 00 000000
 B: 0:1 00 00 00 00 00 00 000000
 C: 0:2 00 00 00 00 00 00 000000
 D: 0:3 00 00 00 00 00 00 000000
 E: 1:0 00 00 00 00 00 00 000000
 F: 1:1 00 00 00 00 00 00 000000
 G: 1:2 00 00 00 00 00 00 000000
 H: 1:3 fd 99 00 60 00 00 000000
 I: 2:0 07 07 03 02 00 00 000000
 J: 2:1 00 00 00 00 00 00 000000
 K: 2:2 00 00 00 00 00 00 000000
 L: 2:3 00 00 00 00 00 00 000000
 M: 3:0 00 00 00 00 00 00 000000
 N: 3:1 00 00 00 00 00 00 000000
 O: 3:2 00 00 00 00 00 00 000000
 P: 3:3 00 00 00 00 00 00 000000
 Q: 4:0 00 00 00 00 00 00 000000
 R: 4:1 00 00 00 00 00 00 000000
 S: 4:2 80 80 00 00 00 00 000000
 T: 4:3 01 01 00 00 00 00 000000
 U: 5:0 00 00 00 00 00 00 000000
 V: 5:1 02 00 00 02 00 00 000000
 W: 5:2 00 00 00 00 00 00 000000
 X: 5:3 78 08 08 70 00 60 606000
 Y: 6:0 02 00 00 02 00 00 000000
 Z: 6:1 0e 08 00 06 00 00 000400
AA: 6:2 00 00 00 00 00 00 000000
BB: 6:3 00 00 00 00 00 00 000000
CC: 7:0 92 80 80 12 00 12 121200
DD: 7:1 00 00 00 00 00 00 000000
EE: 7:2 00 00 00 00 00 00 000000
FF: 7:3 00 00 00 00 00 00 000000

and this is the ouput on Dev Kit device

Name:Bank:Port CNF OE OUT IN INT_STA INT_ENB INT_LVL
 A: 0:0 64 40 40 24 00 00 000000
 B: 0:1 00 00 00 00 00 00 000000
 C: 0:2 00 00 00 00 00 00 000000
 D: 0:3 00 00 00 00 00 00 000000
 E: 1:0 00 00 00 00 00 00 000000
 F: 1:1 00 00 00 00 00 00 000000
 G: 1:2 00 00 00 00 00 00 000000
 H: 1:3 fd 99 00 60 00 00 000000
 I: 2:0 07 07 03 02 00 00 000000
 J: 2:1 00 00 00 00 00 00 000000
 K: 2:2 00 00 00 00 00 00 000000
 L: 2:3 00 00 00 00 00 00 000000
 M: 3:0 00 00 00 00 00 00 000000
 N: 3:1 00 00 00 00 00 00 000000
 O: 3:2 00 00 00 00 00 00 000000
 P: 3:3 00 00 00 00 00 00 000000
 Q: 4:0 00 00 00 00 00 00 000000
 R: 4:1 00 00 00 00 00 00 000000
 S: 4:2 80 80 00 00 00 00 000000
 T: 4:3 01 01 00 00 00 00 000000
 U: 5:0 00 00 00 00 00 00 000000
 V: 5:1 02 00 00 02 00 00 000000
 W: 5:2 00 00 00 00 00 00 000000
 X: 5:3 78 08 08 70 00 60 606000
 Y: 6:0 02 00 00 02 00 00 000000
 Z: 6:1 0e 08 08 04 00 02 020600
AA: 6:2 00 00 00 00 00 00 000000
BB: 6:3 00 00 00 00 00 00 000000
CC: 7:0 92 80 80 12 00 12 121200
DD: 7:1 00 00 00 00 00 00 000000
EE: 7:2 00 00 00 00 00 00 000000
FF: 7:3 00 00 00 00 00 00 000000

I hope this info helps to investigate more on activating SPI for J101-v2 reComputer. I am out of ideas.

@konkhra Hi,

  1. Does your Jetson Nano Dev Kit use our seeed overlay ? If not, Can you provide your overlay to us here.
  2. dtc -I fs /proc/device-tree > dts.txt and then provide us the dts.txt here.
  3. It looks different when you compare the register values. sudo cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi
  4. I need to check the jetson nano datasheet to see if the SPI-GPIO reg are correctly configured.


emmm… I have no idea which Technical Reference Manual document jetson nano uses… and I can’t download them.

Hi!

  1. Jetson Nano Dev Kit uses default overlay provided by the installation with SDK Manger | Jetpack 4.6.2 [ L4T 32.7.2 ]

  2. Attached can be found dts for Dev Kit and reComputer.
    dts_dev_kit.txt (323.4 KB)
    dts_recomputer.txt (322.5 KB)

Is this what are you looking for ?

image

I couldn’t upload them here as this forum tagged a potential virus in those files although I’ve downloaded them from Nvidia Download Center

@kayccc Hi, I can’t find Jetson Nano Technical Reference Manual file from
Jetson Download Center Archive.Could you send me the file ? Thanks~

You can find Tegra X1 SoC Technical Reference Manual from downloader center, it’s the same Tegra architectures.

@konkhra hi, according to the logs you provided, the register is not configured correctly on device from Seeed. I’ll find out as soon as possible