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.

[参考译文] J784S4XEVM:J26 上 main_spi5 的设备树、但在/dev 中找不到 spidev**

Guru**** 2479715 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1536828/j784s4xevm-device-tree-of-main_spi5-on-j26-but-in-dev-can-not-find-the-spidev

器件型号:J784S4XEVM


工具/软件:

您好 TI!

   我们 使用 SDK ti-processor-sdk-linux-adas-j784s4-evm-10_01_00_05 来测试 J784S4-EVM 板的 spi5、

我们 更改了 dts 文件 \board-support\ti\linux-kernel-6.6.44+git-ti\arch\arm64\boot\dts\ti\k3-j784s4-evm.dts、 diff 为:

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
index 56a037532..e8df2cea0 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts
@@ -356,19 +356,6 @@ mux1: mux-controller {
 		mux-gpios = <&exp2 14 GPIO_ACTIVE_HIGH>;
 		idle-state = <1>;
 	};
-
-	codec_audio: sound {
-		compatible = "ti,j7200-cpb-audio";
-		model = "j784s4-cpb";
-
-		ti,cpb-mcasp = <&mcasp0>;
-		ti,cpb-codec = <&pcm3168a_1>;
-
-		clocks = <&k3_clks 265 0>, <&k3_clks 265 1>,
-			 <&k3_clks 157 34>, <&k3_clks 157 63>;
-		clock-names = "cpb-mcasp-auxclk", "cpb-mcasp-auxclk-48000",
-			      "cpb-codec-scki", "cpb-codec-scki-48000";
-	};
 };
 
 &wkup_gpio0 {
@@ -465,13 +452,6 @@ J784S4_IOPAD(0x0ec, PIN_OUTPUT, 6) /* (AN37) TIMER_IO1.USB0_DRVVBUS */
 		>;
 	};
 
-	main_mcan4_pins_default: main-mcan4-default-pins {
-		pinctrl-single,pins = <
-			J784S4_IOPAD(0x088, PIN_INPUT, 0) /* (AF36) MCAN4_RX */
-			J784S4_IOPAD(0x084, PIN_OUTPUT, 0) /* (AG38) MCAN4_TX */
-		>;
-	};
-
 	main_mcan16_pins_default: main-mcan16-default-pins {
 		pinctrl-single,pins = <
 			J784S4_IOPAD(0x028, PIN_INPUT, 0) /* (AE33) MCAN16_RX */
@@ -479,10 +459,15 @@ J784S4_IOPAD(0x024, PIN_OUTPUT, 0) /* (AH34) MCAN16_TX */
 		>;
 	};
 
-	main_i2c3_pins_default: main-i2c3-default-pins {
+	main_spi5_pins_default: main_spi5_pins_default {
 		pinctrl-single,pins = <
-			J784S4_IOPAD(0x064, PIN_INPUT, 13) /* (AF38) MCAN0_TX.I2C3_SCL */
-			J784S4_IOPAD(0x060, PIN_INPUT, 13) /* (AE36) MCASP2_AXR1.I2C3_SDA */
+			J784S4_IOPAD(0x07c, PIN_INPUT, 8) /* (AJ38) MCASP0_AXR3.SPI5_CLK */
+			J784S4_IOPAD(0x068, PIN_INPUT, 8) /* (AE38) MCAN0_RX.SPI5_CS0 */
+			J784S4_IOPAD(0x064, PIN_INPUT, 8) /* (AF38) MCAN0_TX.SPI5_CS1 */
+			J784S4_IOPAD(0x054, PIN_INPUT, 8) /* (AD37) MCASP2_ACLKX.SPI5_CS2 */
+			J784S4_IOPAD(0x058, PIN_INPUT, 8) /* (AE37) MCASP2_AFSX.SPI5_CS3 */
+			J784S4_IOPAD(0x070, PIN_INPUT, 8) /* (AH38) MCAN1_RX.SPI5_D0 */
+			J784S4_IOPAD(0x088, PIN_INPUT, 11) /* (AF36) MCASP0_AXR6.SPI5_D1 */
 		>;
 	};
 
@@ -1049,6 +1034,14 @@ exp2: gpio@22 {
 				  "ENET1_I2CMUX_SEL", "ENET1_EXP_SPARE2", "ENET2_EXP_RESETZ",
 				  "USER_INPUT1", "USER_LED1", "USER_LED2";
 
+		p8-hog {
+			/* P10 - PM_I2C_CTRL_OE */
+			gpio-hog;
+			gpios = <8 GPIO_ACTIVE_HIGH>;
+			output-high;
+			line-name = "CTRL_PM_I2C_OE";
+		};
+
 		p13-hog {
 			/* P13 - CANUART_MUX_SEL0 */
 			gpio-hog;
@@ -1057,11 +1050,19 @@ p13-hog {
 			line-name = "CANUART_MUX_SEL0";
 		};
 
+		p14-hog {
+			/* P14 - CANUART_MUX2_SEL1 */
+			gpio-hog;
+			gpios = <14 GPIO_ACTIVE_HIGH>;
+			output-low;
+			line-name = "CANUART_MUX2_SEL1";
+		};
+
 		p15-hog {
 			/* P15 - CANUART_MUX1_SEL1 */
 			gpio-hog;
 			gpios = <15 GPIO_ACTIVE_HIGH>;
-			output-high;
+			output-low;
 			line-name = "CANUART_MUX1_SEL1";
 		};
 	};
@@ -1620,12 +1621,6 @@ &main_mcan16 {
 	phys = <&transceiver2>;
 };
 
-&main_mcan4 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&main_mcan4_pins_default>;
-	phys = <&transceiver3>;
-};
 
 #define K3_TS_OFFSET(pa, val)  (0x4+(pa)*4) (0x10000 | val)
 
@@ -1649,50 +1644,14 @@ &k3_clks {
 	pinctrl-0 = <&audio_ext_refclk1_pins_default>;
 };
 
-&main_i2c3 {
+&main_spi5 {
 	status = "okay";
+	pinctrl-0 = <&main_spi5_pins_default>;
 	pinctrl-names = "default";
-	pinctrl-0 = <&main_i2c3_pins_default>;
-	clock-frequency = <400000>;
 
-	exp3: gpio@20 {
-		compatible = "ti,tca6408";
-		reg = <0x20>;
-		gpio-controller;
-		#gpio-cells = <2>;
-	};
-
-	pcm3168a_1: audio-codec@44 {
-		compatible = "ti,pcm3168a";
-		reg = <0x44>;
-		#sound-dai-cells = <1>;
-		reset-gpios = <&exp3 0 GPIO_ACTIVE_LOW>;
-		/* C_AUDIO_REFCLK2 -> RGMII6_RXC (W26) */
-		clocks = <&audio_refclk1>;
-		clock-names = "scki";
-		VDD1-supply = <&vsys_3v3>;
-		VDD2-supply = <&vsys_3v3>;
-		VCCAD1-supply = <&vsys_5v0>;
-		VCCAD2-supply = <&vsys_5v0>;
-		VCCDA1-supply = <&vsys_5v0>;
-		VCCDA2-supply = <&vsys_5v0>;
+	spidev@0 {
+		spi-max-frequency = <24000000>;
+		reg = <0>;
+		compatible = "linux,spidev";
 	};
-};
-
-&mcasp0 {
-	status = "okay";
-	#sound-dai-cells = <0>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&mcasp0_pins_default>;
-	op-mode = <0>;          /* MCASP_IIS_MODE */
-	tdm-slots = <2>;
-	auxclk-fs-ratio = <256>;
-	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
-		0 0 0 1
-		2 0 0 0
-		0 0 0 0
-		0 0 0 0
-	>;
-	tx-num-evt = <0>;
-	rx-num-evt = <0>;
-};
+};
\ No newline at end of file

我们用 make linux-dts 编译它并将 dtb 文件更新到/boot/dts/ti、  

重新启动主板后检查/dev 时、 我们找不到“spidev*" int“ int /dev dir、需要 检查的任何其他更改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我们更改了\ti-processor-sdk-rtos-j784s4-evm-10_01_00_04\imaging\utils\hwa\app_hwa.c src、在 appFvid2Init 中添加以下代码:

    int32_t appFvid2Init(void)
    {
        int32_t retVal = FVID2_SOK;
        Fvid2_InitPrms initPrmsFvid2;
    
        appLogPrintf("FVID2: Init ... !!!\n");
        SET_DEVICE_STATE_ON(TISCI_DEV_MCSPI5);
    
        Fvid2InitPrms_init(&initPrmsFvid2);
        initPrmsFvid2.printFxn = appLogPrintf;
        retVal = Fvid2_init(&initPrmsFvid2);
        if(retVal!=FVID2_SOK)
        {
            appLogPrintf("FVID2: ERROR: Fvid2_init failed !!!\n");
        }
        appLogPrintf("FVID2: Init ... Done !!!\n");
    
        return (retVal);
    }

    并且我们将 MCU2_0.out 更新到 J784S4、但是重新启动主板, 我们 也无法  在/dev 中找到“spidev*",“,

    root@j784s4-evm:~# ls /dev/spi*
    ls: cannot access '/dev/spi*': No such file or directory
    root@j784s4-evm:~#

     

     祝你一切顺利!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我在 EVM 上尝试一下、然后由星期四返回给您。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、这个问题上是否有任何进展?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们更改了与此类似的兼容性、

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

    然后是 ls /dev/spi *、  

    root@j784s4-evm:~# ls /dev/spi *
    /dev/spidev2.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Xiang、

    请尝试参考此常见问题解答中的 10.x 补丁:  【常见问题解答】SK-TDA4VM:如何在 SK-TDA4VM 上启用 SPIDEV? 

    spidev 的 Linux 内核驱动程序在 9.x 和 10.x 之间发生了变化、因此它拒绝了 spidev 的兼容字段: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/spi/spidev.c?h=ti-linux-6.1.y#n710。我怀疑您的 DTS 正在进行此检查。 如果您共享完整的 dmesg 日志、我们可以仔细查看 错误消息是否正在打印出来。

    此致、

    Takuma