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.

DRA821U: SPI0 worked but SPI6 does not work, SPI6 can tx data but rx is allways null

Part Number: DRA821U

Dear expert, 

We are working on SDK8.0 with our customized board, we encountered a strange issue on SPI comunication.We made change on DTS with below configuration, and then test the SPI tx/rx loopback with spidev_test command. but got differrent result, SPI0 can received the Tx data, but SPI6 does not receive any data. Could you please help to figure out the rootcause?

spi0_pins_default: spi0-pins-default {
  pinctrl-single,pins = <
   J721E_IOPAD(0xc8, PIN_OUTPUT, 0) /* (Y1) SPI0_CLK */
   J721E_IOPAD(0xcc, PIN_OUTPUT, 0) /* (V4) SPI0_D0 */
   J721E_IOPAD(0xd0, PIN_INPUT, 0) /* (T5) SPI0_D1 */
   J721E_IOPAD(0xc0, PIN_OUTPUT, 0) /* (W3) SPI0_CS0 */
   >;
  };

spi6_pins_default: spi6-pins-default {
   pinctrl-single,pins = <
    J721E_IOPAD(0x98, PIN_OUTPUT, 8) /* (V14) UART2_RXD.SPI6_CLK */
    J721E_IOPAD(0x9c, PIN_OUTPUT, 8) /* (V13) UART2_TXD.SPI6_D0 */
    J721E_IOPAD(0xa0, PIN_INPUT, 8) /* (U12) GPIO0_41.SPI6_D1 */
    J721E_IOPAD(0x28, PIN_OUTPUT, 8) /* (W21) MCAN1_TX.SPI6_CS0 */
    >;
   };
   
main_spi0: spi@2100000 {
  compatible = "ti,am654-mcspi","ti,omap4-mcspi";
  reg = <0x0 0x2100000 0x0 0x400>;
  interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
  clocks = <&k3_clks 266 4>; 
  power-domains = <&k3_pds 266 TI_SCI_PD_EXCLUSIVE>;
  #address-cells = <1>;
  #size-cells = <0>;
  };
  
main_spi6: spi@2160000 {
  compatible = "ti,am654-mcspi","ti,omap4-mcspi";
  reg = <0x0 0x2160000 0x0 0x400>;
  interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
  clocks = <&k3_clks 272 4>;  /* DEV_MCSPI6_CLKSPIREF_CLK ,Clock ID:4*/
  power-domains = <&k3_pds 272 TI_SCI_PD_EXCLUSIVE>;
  #address-cells = <1>;
  #size-cells = <0>;
  };
  
&main_spi0 {
     pinctrl-names = "default";
     pinctrl-0 = <&spi0_pins_default>;
     ti,pindir-d0-out-d1-in;
     status="okay";
 
     spidev@0 {
     spi-max-frequency = <24000000>;
     reg = <0>;
     compatible = "linux,spidev";
 };
 };
 &main_spi6 {
     pinctrl-names = "default";
     pinctrl-0 = <&spi6_pins_default>;
     ti,pindir-d0-out-d1-in;
     status="okay";
 
     spidev@0 {
     spi-max-frequency = <24000000>;
     reg = <0>;
     compatible = "linux,spidev";
 };
 };

below is the test result

We also checked the register value, seems they are same configuration, check below iamge.