HW: Jetson AGX Orin devkit with custom carrier board.
BSP: # R34 (release), REVISION: 1.1, GCID: 30414990, BOARD: t186ref, EABI: aarch64, DATE: Tue May 17 04:18:13 UTC 2022
First, i made the tests for “SPI1(spi0: spi@3210000)” and “SPI2(spi1: spi@c260000)”.
- SPI1: master,
connect: SPI1-MOSI<–>SPI1-MISO
loopback test result: ok
pinmux:
spi1_sck_pz3 {
nvidia,pins = "spi1_sck_pz3";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_miso_pz4 {
nvidia,pins = "spi1_miso_pz4";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_mosi_pz5 {
nvidia,pins = "spi1_mosi_pz5";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_cs0_pz6 {
nvidia,pins = "spi1_cs0_pz6";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
- SPI2: master,
connect: SPI2-MOSI<–>SPI2-MISO
loopback test result: ok
pinmux: register value is consistent with SPI1 - SPI2: master; SPI1: slave
connect: SPI1-CLK<–>SPI2-CLK, SPI1-CS<–>SPI2-CS, SPI1-MOSI<–>SPI2-MISO, SPI1-MISO<–SPI2-MOSI
test result: ng, SPI1 receive nothing.
dtsi:
spi0: spi@3210000 {
compatible = “nvidia,tegra186-spi-slave”;
spi1: spi@c260000 {
compatible = “nvidia,tegra186-spi”;
pinmux:
SPI2: same as above
SPI1:
spi1_sck_pz3 {
nvidia,pins = "spi1_sck_pz3";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_miso_pz4 {
nvidia,pins = "spi1_miso_pz4";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_UP>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_mosi_pz5 {
nvidia,pins = "spi1_mosi_pz5";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
spi1_cs0_pz6 {
nvidia,pins = "spi1_cs0_pz6";
nvidia,function = "spi1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
logs:
$ sudo dmesg | grep spi
[ 2.417020] spi-tegra114 c260000.spi: Adding to iommu group 0
[ 2.433598] spi-tegra114 c260000.spi: can not get clock
[ 2.438812] tegra23x-qspi 3270000.spi: Adding to iommu group 1
[ 12.448784] spi_tegra114: module is already loaded
[ 12.498079] qspi_mtd spi6.0: MX25U51279G (65536 Kbytes)
[ 12.498087] qspi_mtd spi6.0: mtd .name = spi6.0, .size = 0x4000000 (64MiB) .erasesize = 0x00010000 (64KiB) .numeraseregions = 0
[ 12.628458] 1 fixed-partitions partitions found on MTD device spi6.0
[ 12.628666] Creating 1 MTD partitions on "spi6.0":
[ 2142.759028] spi-tegra124-slave 3210000.spi: Adding to iommu group 0
My questions are as follows. I look forward to your reply. Thank you.
- Is my configuration correct according to the above? How to configure SPI1 as a slave mode?
- I found in other platform forums that SPI master < -->slave can be tested as follows, Can Orin provide this test program?
sudo ./spidev_test -D /dev/spidev1.0 -s500000 -g512 -b32 -H -p0 -n1 -r &
sleep 5
sudo ./spidev_test -D /dev/spidev0.0 -s500000 -g512 -b32 -H -p0 -n1 -zzz -t - In test 3, can I configure SPI2 with the following dtsi property so that clock always exists ?
nvidia,clock-always-on;