Part Number: TDA4VM
Hi everybody,
on our custom board we have the following SPI connection to the WKUP domain.
I want to use it as SPIDEV master in Linux, and I have done the following configuration:
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
index 6788a3611..a5c63f6da 100644
--- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
+++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
@@ -283,6 +283,16 @@
J721E_WKUP_IOPAD(0x38, PIN_INPUT, 0) /* (A23) MCU_OSPI1_LBCLKO */
>;
};
+
+ mymcu_spi1_pins_default: mymcu_spi1_pins_default {
+ pinctrl-single,pins = <
+ J721E_WKUP_IOPAD(0xb0, PIN_OUTPUT, 0) /* (F26) WKUP_GPIO0_0.MCU_SPI1_CLK */
+ J721E_WKUP_IOPAD(0xb4, PIN_OUTPUT, 0) /* (F25) WKUP_GPIO0_1.MCU_SPI1_D0 */
+ J721E_WKUP_IOPAD(0xb8, PIN_INPUT, 0) /* (F28) WKUP_GPIO0_2.MCU_SPI1_D1 */
+ J721E_WKUP_IOPAD(0xc4, PIN_OUTPUT, 2) /* (G24) WKUP_GPIO0_5.MCU_SPI1_CS3 */
+ >;
+ };
+
};
&wkup_pmx0 {
@@ -309,6 +319,16 @@
J721E_WKUP_IOPAD(0x0088, PIN_INPUT, 0) /* MCU_MDIO0_MDIO */
>;
};
+
+ mymcu_spi1_pins_default: mymcu_spi1_pins_default {
+ pinctrl-single,pins = <
+ J721E_WKUP_IOPAD(0xb0, PIN_OUTPUT, 0) /* (F26) WKUP_GPIO0_0.MCU_SPI1_CLK */
+ J721E_WKUP_IOPAD(0xb4, PIN_OUTPUT, 0) /* (F25) WKUP_GPIO0_1.MCU_SPI1_D0 */
+ J721E_WKUP_IOPAD(0xb8, PIN_INPUT, 0) /* (F28) WKUP_GPIO0_2.MCU_SPI1_D1 */
+ J721E_WKUP_IOPAD(0xc4, PIN_OUTPUT, 2) /* (G24) WKUP_GPIO0_5.MCU_SPI1_CS3 */
+ >;
+ };
+
};
&wkup_uart0 {
@@ -913,3 +933,16 @@
&main_uart2 {
status = "disabled";
};
+
+
+&mcu_spi0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mymcu_spi1_pins_default>;
+ ti,spi-num-cs = <2>;
+ status = "okay";
+ spidev@1{
+ reg = <1>;
+ spi-max-frequency = <24000000>;
+ compatible = "linux,spidev";
+ };
+};
\ No newline at end of file
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi
index 31875a917..25168cc23 100644
--- a/arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi
@@ -386,4 +386,14 @@
loczrama = <1>;
};
};
+
+ mcu_spi0: spi@40300000 {
+ compatible = "ti,am654-mcspi","ti,omap4-mcspi";
+ reg = <0x0 0x40300000 0x0 0x400>;
+ interrupts = <GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&k3_clks 274 1>;
+ power-domains = <&k3_pds 274 TI_SCI_PD_EXCLUSIVE>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
};
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index c9a867ac3..0f04144bc 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -392,7 +392,7 @@ CONFIG_SPI_PL022=y
CONFIG_SPI_ROCKCHIP=y
CONFIG_SPI_QUP=y
CONFIG_SPI_S3C64XX=y
-CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_SPIDEV=y
CONFIG_SPI_SUN6I=y
CONFIG_SPMI=y
CONFIG_PINCTRL_SINGLE=y
Is this correct or I am missing something here? At the moment whatever I send with spidev_test I get 0s back. The journalclt has the following logs:
root@j7-evm:~# journalctl | grep spi Jun 17 14:17:21 j7-evm kernel: Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),128k(ospi.env),128k(ospi.env.backup),1m(ospi.sysfw),-@8m(ospi.rootfs);47034000.hyperbus:512k(hbmc.tiboot3),2m(hbmc.tispl),4m(hbmc.u-boot),256k(hbmc.env),1m(hbmc.sysfw),-@8m(hbmc.rootfs) root=PARTUUID=4109accf-02 rw rootfstype=ext4 rootwait Jun 17 14:17:21 j7-evm kernel: cadence-qspi 47040000.spi: Controller calibration failed Jun 17 14:17:21 j7-evm kernel: cadence-qspi 47040000.spi: Cadence QSPI NOR probe failed -22 Jun 17 14:17:21 j7-evm kernel: cadence-qspi: probe of 47040000.spi failed with error -22 Jun 17 14:17:21 j7-evm kernel: cadence-qspi 47050000.spi: unrecognized JEDEC id bytes: 00 00 00 00 00 00 Jun 17 14:17:21 j7-evm kernel: cadence-qspi 47050000.spi: Cadence QSPI NOR probe failed -2 Jun 17 14:17:21 j7-evm kernel: cadence-qspi: probe of 47050000.spi failed with error -2 Jun 17 14:17:22 j7-evm /usr/sbin/irqbalance[313]: No directory /sys/devices/platform/40300000.spi/: No such file or directory Jun 17 14:17:22 j7-evm /usr/sbin/irqbalance[313]: IRQ 40300000.spi(15) guessed as class 0 Jun 17 14:17:22 j7-evm /usr/sbin/irqbalance[313]: IRQ 40300000.spi(15) guessed as class 0 Jun 17 14:17:22 j7-evm /usr/sbin/irqbalance[313]: IRQ 2100000.spi(22) guessed as class 0 Jun 17 14:17:22 j7-evm systemd-udevd[264]: 2100000.spi: Process '/sbin/modprobe of:NspiT(null)Cti,am654-mcspiCti,omap4-mcspi' failed with exit code 1. Jun 17 14:17:22 j7-evm systemd-udevd[262]: spi1.1: Process '/sbin/modprobe spi:spidev' failed with exit code 1. Jun 17 14:17:23 j7-evm systemd-udevd[265]: 40300000.spi: Process '/sbin/modprobe of:NspiT(null)Cti,am654-mcspiCti,omap4-mcspi' failed with exit code 1. Jun 17 14:17:23 j7-evm systemd-udevd[262]: spi0.1: Process '/sbin/modprobe spi:spidev' failed with exit code 1. Jun 17 14:17:23 j7-evm systemd-udevd[271]: 47040000.spi: Process '/sbin/modprobe of:NspiT(null)Cti,am654-ospi' failed with exit code 1. Jun 17 14:17:23 j7-evm systemd-udevd[265]: 47050000.spi: Process '/sbin/modprobe of:NspiT(null)Cti,am654-ospi' failed with exit code 1. Jun 17 14:17:24 j7-evm systemd-udevd[271]: 30e00000.spinlock: Process '/sbin/modprobe of:NspinlockT(null)Cti,am654-hwspinlock' failed with exit code 1. Jun 17 14:17:32 j7-evm /usr/sbin/irqbalance[313]: No directory /sys/devices/platform/40300000.spi/: No such file or directory Jun 17 14:17:32 j7-evm /usr/sbin/irqbalance[313]: IRQ 40300000.spi(15) guessed as class 0 Jun 17 14:17:32 j7-evm /usr/sbin/irqbalance[313]: IRQ 40300000.spi(15) guessed as class 0 Jun 17 14:17:32 j7-evm /usr/sbin/irqbalance[313]: IRQ 2100000.spi(22) guessed as class 0
Thanks,
Best regards,
Pouyan
