This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

J722SXH01EVM: Setting MISO/MOSI data pins for MCU_SPI0

Part Number: J722SXH01EVM

Tool/software:

Hi,

Currently, MCU_SPI0 transmits data over MCU_SPI0_D1 (MOSI). For our application, MCU_SPI0_D1 needs to be MISO and MCU_SPI_D0 be MOSI.

root@j722s-evm:/# devmem2 0x04B0012C
/dev/mem opened.
Memory mapped at address 0xffffbea84000.
Read at address  0x04B0012C (0xffffbea8412c): 0x200103C8
root@j722s-evm:/# ./spidev_test -v -D /dev/spidev1.0 -p "HELLO WORLD"
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 kHz)
TX | 48 45 4C 4C 4F 20 57 4F 52 4C 44 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |HELLO WORLD|
RX | FF FF FF FF FF FF FF FF FF FF FF __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __  |...........|

Reading the value of MCSPI_CFG_CH0CONF[16:18], it seems like D0 should be selected for transmission, but data is still being sent out over D1.

Here is how the MCU_SPI0 driver is configured in the device tree:

k3-am62p-mcu.dtsi:

	mcu_spi0: spi@4b00000 {
		compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
		reg = <0x00 0x04b00000 0x00 0x400>;
		interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;
		power-domains = <&k3_pds 147 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 147 0>;
		status = "disabled";
	};

	mcu_spi1: spi@4b10000 {
		compatible = "ti,am654-mcspi","ti,omap4-mcspi";
		reg = <0x00 0x04b10000 0x00 0x400>;
		interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;
		power-domains = <&k3_pds 148 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 148 0>;
		status = "disabled";
	};

k3-j722s-evm.dts:

...
	mcu_spi0_pins_default: mcu-spi0-default-pins { /*AWR1 */
		pinctrl-single,pins = <
			J722S_MCU_IOPAD(0x008, PIN_INPUT, 0) /* (A9) MCU_SPI0_CLK	*/
			J722S_MCU_IOPAD(0x000, PIN_INPUT, 0) /* (C12) MCU_SPI0_CS0	*/
			J722S_MCU_IOPAD(0x00C, PIN_INPUT, 0) /* (B12) MCU_SPI0_D0	*/
			J722S_MCU_IOPAD(0x010, PIN_INPUT, 0) /* (C11) MCU_SPI0_D1	*/
		>;
	};
...

&mcu_spi0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mcu_spi0_pins_default>;
	
	spidev@0 {
		spi-max-frequency = <24000000>;
		reg = <0>;
		compatible = "rohm,dh2228fv";
	};
};
...

Also tried adding CONFIG_SPI_MASTER=y and removing CONFIG_SPI_SLAVE from defconfig, wondering if spidev might be in peripheral mode, but no change. 

Could you advise how to implement  D1=MISO and D0=MOSI?

Thank you,

Jin