Hi, now i set the spi@c260000 as slave mode, but when i use spidev_test to test ,it always report error.
**0 - pinmux setting **
devmem2 0x0c302048 w 0x00000444
devmem2 0x0c302050 w 0x00000444
devmem2 0x0c302028 w 0x00000444
devmem2 0x0c302038 w 0x00000448
And i open the menuconfig of spi debug
1 - my dts setting
spi1: spi@c260000 {
compatible = "nvidia,tegra186-spi-slave"; //zp change
reg = <0x0 0x0c260000 0x0 0x10000>;
interrupts = <0 37 0x04>;
#address-cells = <1>;
#size-cells = <0>;
iommus = <&smmu TEGRA_SID_GPCDMA_0>;
dma-coherent;
dmas = <&gpcdma 16>, <&gpcdma 16>;
dma-names = "rx", "tx";
spi-max-frequency = <65000000>;
nvidia,clk-parents = "pll_p", "osc";
clocks = <&bpmp_clks TEGRA194_CLK_SPI2>,
<&bpmp_clks TEGRA194_CLK_PLLAON>,
<&bpmp_clks TEGRA194_CLK_OSC>;
clock-names = "spi", "pll_p", "osc";
resets = <&bpmp_resets TEGRA194_RESET_SPI2>;
reset-names = "spi";
status = "okay";
spi@0 {
compatible = "spidev";
reg = <0>;
spi-max-frequency = <65000000>;
controller-data {
nvidia,enable-hw-based-cs;
nvidia,rx-clk-tap-delay = <0x11>;
nvidia,tx-clk-tap-delay = <0x0>;
};
};
};
it generates a device node /dev/spidev1.0
2 - FPGA pin connect xavier SPI2(spi1@c260000) pins
"FPGA" -> "AGX Xavier"
cs -> SPI2_CS0_N
CLK -> SPI2_CLK
MOSI -> SPI2_MISO
MISO ××× SPI2_MOSI (no connection, only connect fpga's MOSI to Xavier's SPI2_MISO)
3 - use the spidev_test tool to test
root@dev-desktop:~/lab#./spidev_test_shaneCCC -D /dev/spidev1.0 -s12500000 -g60 -b8 -zzz -O -H
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 3
bits per word: 8 bytes per word: 1
max speed: 12500000 Hz (12500 KHz)
no. runs: 1
Using seed:0x61136f21
loop count = 0
using sequential pattern ....
transfer bytes [60]
0000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
0030: 30 31 32 33 34 35 36 37 38 39 3A 3B
transfer: Return actual transfer length: 60
receive bytes [60]
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00
"
mismatch index 1
^^^ 00 00 00 00 00 00 00 00 00 00 00 transfer: received packet size:60 len:60 stat:-6
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
"
====== Transfer stats ====
Transmit:
total: 60B (0KiB 0MiB)
total: 1P
ioerr: 0B (0KiB 0MiB)
ioerr: 0P
Rate:
wire total: -1B/s (0KB/s)
total: -1B/s (0KB/s)
wire total: -1P/s
total: -1P/s
Receive:
total: 60B (0KiB 0MiB)
total: 1P
good: 0B (0KiB 0MiB)
good: 0P
ioerr: 0P
dataerr: 1P
Rate:
good: -1B/s (0KB/s)
good: -1P/s
packet drop: -1/10000
Total time: 0.194392s
4 - dmesg
root@dev-desktop:~/lab# dmesg | grep spi
[ 0.816244] iommu: Adding device 3210000.spi to group 11
[ 0.816607] iommu: Adding device c260000.spi to group 12
[ 1.959626] spi-tegra114 3210000.spi: Prod settings list not initialized
[ 1.960283] spi-tegra114 3210000.spi: prod settings failed with error -22
[ 1.960637] spi-tegra114 3210000.spi: registered master spi0
[ 1.960744] spi spi0.0: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[ 1.960765] spi spi0.0: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[ 1.961029] spi-tegra114 3210000.spi: registered child spi0.0
[ 1.961078] spi spi0.1: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[ 1.961099] spi spi0.1: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[ 1.961365] spi-tegra114 3210000.spi: registered child spi0.1
[ 1.961714] spi-tegra124-slave c260000.spi: rx-trigger:0 clock-always-on:0
[ 1.962614] spi-tegra124-slave c260000.spi: registered master spi1
[ 1.962813] spi spi1.0: setup 8 bpw, ~cpol, ~cpha, 65000000Hz
[ 1.962936] spi spi1.0: setup mode 0, 8 bits/w, 65000000 Hz max --> 0
[ 1.963273] spi-tegra124-slave c260000.spi: registered child spi1.0
[ 6.566059] spidev: module is already loaded
[ 6.596672] spidev: module is already loaded
[ 6.689455] spidev: module is already loaded
[12664.068100] spidev spi1.0: setup 8 bpw, cpol, cpha, 65000000Hz
[12664.068521] spidev spi1.0: setup mode 3, 8 bits/w, 65000000 Hz max --> 0
[12664.068531] spidev spi1.0: spi mode 3
[12664.068707] spidev spi1.0: setup 8 bpw, cpol, cpha, 65000000Hz
[12664.069000] spidev spi1.0: setup mode 3, 8 bits/w, 65000000 Hz max --> 0
[12664.069008] spidev spi1.0: 8 bits per word
[12664.069127] spidev spi1.0: setup 8 bpw, cpol, cpha, 12500000Hz
[12664.069257] spidev spi1.0: setup mode 3, 8 bits/w, 12500000 Hz max --> 0
[12664.070750] spi-tegra124-slave c260000.spi: RxTx len:60 bpw:8 0us 12500000Hz
[12664.070800] spi-tegra124-slave c260000.spi: The def 0x13f00000 and written 0x33f01827
[12664.070869] spi-tegra124-slave c260000.spi: TxFIFO[0] 00 01 02 03
[12664.070875] spi-tegra124-slave c260000.spi: TxFIFO[1] 04 05 06 07
[12664.070881] spi-tegra124-slave c260000.spi: TxFIFO[2] 08 09 0a 0b
[12664.070887] spi-tegra124-slave c260000.spi: TxFIFO[3] 0c 0d 0e 0f
[12664.070893] spi-tegra124-slave c260000.spi: TxFIFO[4] 10 11 12 13
[12664.070898] spi-tegra124-slave c260000.spi: TxFIFO[5] 14 15 16 17
[12664.070904] spi-tegra124-slave c260000.spi: TxFIFO[6] 18 19 1a 1b
[12664.070911] spi-tegra124-slave c260000.spi: TxFIFO[7] 1c 1d 1e 1f
[12664.070938] spi-tegra124-slave c260000.spi: TxFIFO[8] 20 21 22 23
[12664.070956] spi-tegra124-slave c260000.spi: TxFIFO[9] 24 25 26 27
[12664.070977] spi-tegra124-slave c260000.spi: TxFIFO[10] 28 29 2a 2b
[12664.070995] spi-tegra124-slave c260000.spi: TxFIFO[11] 2c 2d 2e 2f
[12664.071010] spi-tegra124-slave c260000.spi: TxFIFO[12] 30 31 32 33
[12664.071021] spi-tegra124-slave c260000.spi: TxFIFO[13] 34 35 36 37
[12664.071045] spi-tegra124-slave c260000.spi: TxFIFO[14] 38 39 3a 3b
[12664.071076] spi_master spi1: Before PIO EN
[12664.071101] spi_master spi1: CMD[33f01827]: Sl M3 CS0 [HHHH] MSB MSb Rx Tx Pa 8b TRANS[00ff003c]:BSY I:255 B:60
FIFO[00320001]:RxF:0 TxE:50 Err[] RxSTA[E] TxSTA[]DMA[00000000]: RxTr:0 TxTr:0 B:59
[12664.261732] spi_master spi1: @isr
[12664.261784] spi_master spi1: CMD[33f01827]: Sl M3 CS0 [HHHH] MSB MSb Rx Tx Pa 8b TRANS[40ff003c]:RDY I:255 B:60
FIFO[07c00004]:RxF:15 TxE:64 Err[] RxSTA[] TxSTA[E]DMA[00000000]: RxTr:0 TxTr:0 B:59
[12664.262584] spi-tegra124-slave c260000.spi: RxFIFO[0] 00 00 00 00
[12664.262599] spi-tegra124-slave c260000.spi: RxFIFO[1] 00 00 00 00
[12664.262610] spi-tegra124-slave c260000.spi: RxFIFO[2] 00 00 00 00
[12664.262711] spi-tegra124-slave c260000.spi: RxFIFO[3] 00 00 00 00
[12664.262720] spi-tegra124-slave c260000.spi: RxFIFO[4] 00 00 00 00
[12664.262763] spi-tegra124-slave c260000.spi: RxFIFO[5] 00 00 00 00
[12664.262770] spi-tegra124-slave c260000.spi: RxFIFO[6] 00 00 00 00
[12664.262777] spi-tegra124-slave c260000.spi: RxFIFO[7] 00 00 00 00
[12664.262785] spi-tegra124-slave c260000.spi: RxFIFO[8] 00 00 00 00
[12664.262792] spi-tegra124-slave c260000.spi: RxFIFO[9] 00 00 00 00
[12664.262800] spi-tegra124-slave c260000.spi: RxFIFO[10] 00 00 00 00
[12664.262808] spi-tegra124-slave c260000.spi: RxFIFO[11] 00 00 00 00
[12664.262816] spi-tegra124-slave c260000.spi: RxFIFO[12] 00 00 00 00
[12664.262841] spi-tegra124-slave c260000.spi: RxFIFO[13] 00 00 00 00
[12664.262873] spi-tegra124-slave c260000.spi: RxFIFO[14] 00 00 00 00
[12664.262892] spi-tegra124-slave c260000.spi: Profile: size=60B time-from-spi-int=1078510ns
I’m not sure if the problem(cant receive the spi data) is due to my configuration, please help
Best wishes