Hi,
I’m trying to evaluate SPI0 in slave mode and when i perform the read, the read just blocks and the ioctl doesnt get finished.I am configuring one nano device as Master and an another as slave and use SPI0 in both of them. I have tested loopback mode in SPI0 in both devices. I am providing the dtb entries for SPI below,
Slave
spi@7000d400 {
compatible = "nvidia,tegra210-spi-slave";
reg = <0x00000000 0x00000003 0x0000003b 0x00000545>;
interrupts = <0x00000000 0x00000008 0x00000003>;
iommus = <0x0000002b 0x0000001c>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
dmas = <0x0000004c 0x00000003 0x78000000 0x00000003>;
dma-names = "rx", "tx";
nvidia,clock-always-on;
nvidia,clk-parents = "pll_p", "clk_m";
clocks = <0x00000021 0x00000021 0x000001ba 0x6b5f6d00 0x00000021 0x00000219>;
clock-names = "spi", "pll_p", "clk_m";
resets = <0x00000021 0x00000219>;
reset-names = "spi";
status = "okay";
num-cs = <0x00000001>;
cs-gpios = <0x00000056 0x00000008 0x00000003>;
nvidia,dma-request-selector = <0x0000004c 0x00000113>;
linux,phandle = <0x000000fd>;
phandle = <0x000000fd>;
prod-settings {
#prod-cells = <0x00000003>;
prod {
prod = <0x00000004 0x00000001 0x00000000>;
};
prod_c_flash {
status = "disabled";
prod = <0x00000004 0x00000001 0x00000003>;
};
prod_c_loop {
status = "disabled";
prod = <0x00000004 0x00000002 0x00000003>;
};
};
spi0_0 {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
compatible = "spidev";
status = "okay";
reg = <0x00000000>;
spi-max-frequency = <0x03dfd240>;
controller-data {
nvidia,cs-setup-clk-count = <0x0000001e>;
nvidia,cs-hold-clk-count = <0x0000001e>;
nvidia,rx-clk-tap-delay = <0x0000001f>;
nvidia,tx-clk-tap-delay = <0x00000000>;
};
};
};
Master:
spi@7000d400 {
compatible = "nvidia,tegra210-spi";
reg = <0x00000000 0x00000003 0x0000003b 0x00000545>;
interrupts = <0x00000000 0x00000008 0x00000003>;
iommus = <0x0000002b 0x0000001c>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
dmas = <0x0000004c 0x00000003 0x78000000 0x00000003>;
dma-names = "rx", "tx";
nvidia,clk-parents = "pll_p", "clk_m";
clocks = <0x00000021 0x00000021 0x000001ba 0x6b5f6d00 0x00000021 0x00000219>;
clock-names = "spi", "pll_p", "clk_m";
resets = <0x00000021 0x00000219>;
reset-names = "spi";
status = "okay";
num-cs = <0x00000001>;
cs-gpios = <0x00000056 0x00000008 0x00000003>;
nvidia,dma-request-selector = <0x0000004c 0x00000113>;
linux,phandle = <0x000000fd>;
phandle = <0x000000fd>;
prod-settings {
#prod-cells = <0x00000003>;
prod {
prod = <0x00000004 0x00000001 0x00000000>;
};
prod_c_flash {
status = "disabled";
prod = <0x00000004 0x00000001 0x00000003>;
};
prod_c_loop {
status = "disabled";
prod = <0x00000004 0x00000002 0x00000003>;
};
};
spi0_0 {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
compatible = "spidev";
status = "okay";
reg = <0x00000000>;
spi-max-frequency = <0x03dfd240>;
controller-data {
nvidia,cs-setup-clk-count = <0x0000001e>;
nvidia,cs-hold-clk-count = <0x0000001e>;
nvidia,rx-clk-tap-delay = <0x0000001f>;
nvidia,tx-clk-tap-delay = <0x00000000>;
};
};
};