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.

[参考译文] AM67A:在 AM67 上启用 i2c4

Guru**** 2530820 points
Other Parts Discussed in Thread: AM67, AM67A

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1545424/am67a-enable-i2c4-on-am67

器件型号:AM67A
主题:AM67 中讨论的其他器件

工具/软件:

我正在使用上一个帖子中的设备树设置、但 i2c4 仍然无法为我启用。
我注意到 AM67 上的其他 I2C 器件使用“ti、am64-i2c“、“ti、OMAP4-i2c“、不是建议的器件?
我查看了最新的 dts、但仍然没有在 EVM 上看到启用了 MAIN_i2c4:
git.ti.com/.../k3-j722s-evm.dts

下面是我的错误:
OMAP-Li2c:bus@f0000:i2c@fe80000 探测失败、错误为–22

main_i2c4_pins_default:main_i2c4-default-pins{
pinctrl-single、pins =<
J722S_IOPAD (0x00a8、PIN_INPUT_PULLUP、1)/*(R27) GPMC0_CSn0.I2C4_SCL */
J722S_IOPAD (0x00ac、PIN_INPUT_PULLUP、1)/*(P21) GPMC0_CSn1.I2C4_SDA */
>;
};


&cbass_main{
MAIN_i2c4:I2C@fe80000{
兼容=“ti、j721e-i2c“、“ti、OMAP4-i2c“;
REG =<0x00 0x0fe80000 0x00 0x100>;
中断= ;
#address-cells =<1>;
#size-cells =<0>;
时钟=<&K3_CLKS 257 2>;
时钟名称=“fck";“;
电源域=<&K3_PDS 257 TI_SCI_PD_EXCLUSTE>;
};
};

&main_i2c4{
状态=“正常“;
pinctrl-names =“default";“;
pinctrl-0 =<&MAIN_i2c4_pins_default>;
时钟频率=<10000>;
};

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

    尊敬的 Evan:

    正确、应该是 “ti、am64-i2c“、“ti、OMAP4-i2c“。

    如果改用此方法、您是否仍然看到探测器故障错误?

    此致、
    Jared

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

    您好 Jared、

    通过这一更改、我看到:
    OMAP-Li2c bus@f0000:i2c@fe80000:无效资源(空)
    OMAP-Li2c:bus@f0000:i2c@fe80000 探测失败、错误为–22

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

    尊敬的 Evan:

    仔细观察、我还意识到 I2C4 没有 GIC 中断。

    您可以尝试以下操作:

    	main_i2c4: i2c@fe80000 {
    		compatible = "ti,am64-i2c", "ti,omap4-i2c";
    		reg = <0x00 0xfe80000 0x00 0x100>;
    		interrupts = <&main_gpio_intr 178 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 257 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 257 2>;
    		clock-names = "fck";
    		status = "disabled";
    	};

    此致、
    Jared

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

    您好 Jared、

    我使用“正常“而不是“已禁用“收到新错误:
    OMAP-Li2c bus@f0000:i2c@fe80000:错误–6:未找到 IRQ 索引 0

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

    尊敬的 Evan:

    您可以尝试以下操作:

    	main_i2c4: i2c@fe80000 {
    		compatible = "ti,am64-i2c", "ti,omap4-i2c";
    		reg = <0x00 0xfe80000 0x00 0x100>;
    		interrupt-parent = <&main_gpio_intr>;
    		interrupts = <178>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 257 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 257 2>;
    		clock-names = "fck";
    		status = "disabled";
    	};

    此致、
    Jared

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

    您好 Jared、

    STATUS='disabled'不会初始化外设。 使用“正常“时、我得到了相同的行为
    main_i2c4 将映射到 i2c-5。

    内核[640]:OMAP-Li2c bus@f0000:i2c@fe80000:无效资源(空)
    内核[640]:OMAP-Li2c:probe of bus@f0000:i2c@fe80000 failed with error –22

    谢谢

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

    您好 Jared、

    我发现时钟和电源域的 257 是第一个问题。
    我将其设置为 0x6C、现在它会无限期推迟探头。

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

    您好 Jared、

    我还尝试了 0x65、并看到它会一直推迟探头。

    257 值来自哪里?

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

    尊敬的 Evan:

    257 来自这里: https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j722s/devices.html#soc public-doc-j722s-public-devicesc-device-list 

    此致、
    Jared

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

    您好 Jared、

    在调用以下资源时、它可能正在打印无效的资源:

    OMAP-L>base = devm_platform_ioremap_resource (pdev、0);

    是否有其他位置需要设置  fe80000 地址以映射到 i2c?

    例如、我没有在 u-boot 中映射它、只有 A53 内核上内核的 dtb。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Evan:

    此问题可能是因为内存未映射到 cbass_main reg 属性中。

    j722s-main.dtsi:

    cbass_main: bus@f0000 {
    		compatible = "simple-bus";
    		#address-cells = <2>;
    		#size-cells = <2>;
    
    		ranges = <0x00 0x000f0000 0x00 0x000f0000 0x00 0x00030000>, /* Main MMRs */
    			 <0x00 0x00420000 0x00 0x00420000 0x00 0x00001000>, /* ESM0 */
    			 <0x00 0x00600000 0x00 0x00600000 0x00 0x00001100>, /* GPIO */
    			 <0x00 0x00703000 0x00 0x00703000 0x00 0x00000200>, /* USB0 debug trace */
    			 <0x00 0x0070c000 0x00 0x0070c000 0x00 0x00000200>, /* USB1 debug trace */
    			 <0x00 0x00a40000 0x00 0x00a40000 0x00 0x00000800>, /* Timesync router */
    			 <0x00 0x01000000 0x00 0x01000000 0x00 0x01b28400>, /* First peripheral window */
    			 <0x00 0x08000000 0x00 0x08000000 0x00 0x00200000>, /* Main CPSW */
    			 <0x00 0x0d000000 0x00 0x0d000000 0x00 0x00800000>, /* PCIE_0 */
    			 <0x00 0x0e000000 0x00 0x0e000000 0x00 0x01d20000>, /* Second peripheral window */
    			 <0x00 0x0fd80000 0x00 0x0fd80000 0x00 0x00080000>, /* GPU */
    			 <0x00 0x0fd20000 0x00 0x0fd20000 0x00 0x00000100>, /* JPEGENC0_CORE */
    			 <0x00 0x0fd20200 0x00 0x0fd20200 0x00 0x00000200>, /* JPEGENC0_CORE_MMU */
    			 <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Third peripheral window */
    			 <0x00 0x30040000 0x00 0x30040000 0x00 0x00080000>, /* PRUSS-M */
    			 <0x00 0x301C0000 0x00 0x301C0000 0x00 0x00001000>, /* DPHY-TX */
    			 <0x00 0x30101000 0x00 0x30101000 0x00 0x00080100>, /* CSI window */
    			 <0x00 0x30200000 0x00 0x30200000 0x00 0x00010000>, /* DSS */
    			 <0x00 0x30210000 0x00 0x30210000 0x00 0x00010000>, /* VPU */
    			 <0x00 0x30220000 0x00 0x30220000 0x00 0x00010000>, /* DSS1 */
    			 <0x00 0x30270000 0x00 0x30270000 0x00 0x00010000>, /* DSI-base1 */
    			 <0x00 0x30300000 0x00 0x30300000 0x00 0x00001000>, /* MCRC64 */
    			 <0x00 0x30500000 0x00 0x30500000 0x00 0x00100000>, /* DSI-base2 */
    			 <0x00 0x31000000 0x00 0x31000000 0x00 0x00050000>, /* USB0 DWC3 Core window */
    			 <0x00 0x31200000 0x00 0x31200000 0x00 0x00040000>, /* USB1 DWC3 Core window */
    			 <0x00 0x40900000 0x00 0x40900000 0x00 0x00030000>, /* SA3UL */
    			 <0x00 0x43600000 0x00 0x43600000 0x00 0x00010000>, /* SA3 sproxy data */
    			 <0x00 0x44043000 0x00 0x44043000 0x00 0x00000fe0>, /* TI SCI DEBUG */
    			 <0x00 0x44860000 0x00 0x44860000 0x00 0x00040000>, /* SA3 sproxy config */
    			 <0x00 0x48000000 0x00 0x48000000 0x00 0x06408000>, /* DMSS */
    			 <0x00 0x60000000 0x00 0x60000000 0x00 0x08000000>, /* FSS0 DAT1 */
    			 <0x00 0x68000000 0x00 0x68000000 0x00 0x08000000>, /* PCIe0 DAT0 */
    			 <0x00 0x70000000 0x00 0x70000000 0x00 0x00040000>, /* OCSRAM */
    			 <0x00 0x78400000 0x00 0x78400000 0x00 0x00008000>, /* MAIN R5FSS0 ATCM */
    			 <0x00 0x78500000 0x00 0x78500000 0x00 0x00008000>, /* MAIN R5FSS0 BTCM */
    			 <0x00 0x7e000000 0x00 0x7e000000 0x00 0x00200000>, /* C7X_0 L2SRAM */
    			 <0x00 0x7e200000 0x00 0x7e200000 0x00 0x00200000>, /* C7X_1 L2SRAM */
    			 <0x01 0x00000000 0x01 0x00000000 0x00 0x00310000>, /* A53 PERIPHBASE */
    			 <0x05 0x00000000 0x05 0x00000000 0x01 0x00000000>, /* FSS0 DAT3 */
    			 <0x06 0x00000000 0x06 0x00000000 0x01 0x00000000>, /* PCIe0 DAT1 */
    			 
    			 ...

    J722S TRM:

    缺少包含 I2C4 的窗口。 下面是一个用于添加它的补丁:

    From 0b5a1e2d47ceec75cc7b6b65226e2b6ecd4b6767 Mon Sep 17 00:00:00 2001
    From: Jared McArthur <j-mcarthur@ti.com>
    Date: Tue, 29 Jul 2025 16:04:18 -0500
    Subject: [PATCH 1/1] arm64: dts: ti: k3-j722s: Add peripheral window in main
     CBASS memory map
    
    Signed-off-by: Jared McArthur <j-mcarthur@ti.com>
    ---
     arch/arm64/boot/dts/ti/k3-j722s.dtsi | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/arch/arm64/boot/dts/ti/k3-j722s.dtsi b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
    index 747f989a54a4..e8517bacefdc 100644
    --- a/arch/arm64/boot/dts/ti/k3-j722s.dtsi
    +++ b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
    @@ -156,7 +156,8 @@ cbass_main: bus@f0000 {
     			 <0x00 0x0fd80000 0x00 0x0fd80000 0x00 0x00080000>, /* GPU */
     			 <0x00 0x0fd20000 0x00 0x0fd20000 0x00 0x00000100>, /* JPEGENC0_CORE */
     			 <0x00 0x0fd20200 0x00 0x0fd20200 0x00 0x00000200>, /* JPEGENC0_CORE_MMU */
    -			 <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Third peripheral window */
    +			 <0x00 0x0fe00000 0x00 0x0fe00000 0x00 0x000f0400>, /* Third peripheral window */
    +			 <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Fourth peripheral window */
     			 <0x00 0x30040000 0x00 0x30040000 0x00 0x00080000>, /* PRUSS-M */
     			 <0x00 0x301C0000 0x00 0x301C0000 0x00 0x00001000>, /* DPHY-TX */
     			 <0x00 0x30101000 0x00 0x30101000 0x00 0x00080100>, /* CSI window */
    -- 
    2.34.1
    
    

    此致、
    Jared

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

    谢谢 Jared! 这更有意义。 我会试一试。

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

    您好 Jared、

    器件可以在 i2c4 上通过这一更改进行通信、但我注意到中断仍然可能无法正常工作?
    我已移除所有器件(所有 i2c4 IC 都已从电路板上移除)、但尽管如此、使用 i2cdetect -r 5 时仍然会收到缓慢的响应。 日志显示以下内容:

    OMAP-Li2c fe800.i2c:控制器超时

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

    尊敬的 Evan:

    我希望 i2c4 的速度变慢、因为中断是通过 gpiomux 中断路由器而不是 GIC 路由的。

    超时是每次发生、还是偶尔发生?

    此致、
    Jared

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

    您好 Jared、

    它是一致的。 每个未连接的地址都会导致超时。
    当我在其他 i2c 总线上使用此函数时、未连接器件的地址可以快速完成。

    连接设备后、i2cdetect 会很快完成这些地址的读取。

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

    尊敬的 Evan:

    我看到... 真有意思。 我想它与 gpiomux 中断路由器有什么关系、但我不知道问题是什么。

    我会询问我们的开发团队是否有任何知识。

    此致、
    Jared

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

    尊敬的 Evan:

    该版本可以工作吗? (摘自:关于 AM67A:在 AM67 上启用 i2c4)     

    	main_i2c4: i2c@fe80000 {
    		compatible = "ti,am64-i2c", "ti,omap4-i2c";
    		reg = <0x00 0xfe80000 0x00 0x100>;
    		interrupts = <&main_gpio_intr 178 IRQ_TYPE_LEVEL_HIGH>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    		power-domains = <&k3_pds 257 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 257 2>;
    		clock-names = "fck";
    	};

    此致、
    Jared

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

    您好 Jared、

    我再次尝试、得到与之前相同的响应:

    OMAP-Li2c fe800.i2c:错误–6:未找到 IRQ 索引 0

    也许我们需要中断单元格=<2>或<3>?

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

    尊敬的 Evan:

    是的、 MAIN_GPIO_intr 具有中断单元=<1>、但将其更改为<2>可能会导致预先存在的子中断出现问题。

    此致、
    Jared

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

    我们 是否应该尝试其他中断控制器? 我记得数据表中还列出了其他几个参数。

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

    嗨、Jared、我将 DTS 中的时钟频率设置为 1MHz、它仍在 400kHz 的通信频率、但不再超时?

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

    尊敬的 Evan:

    我们应该尝试 不同的中断控制器吗? 我记得数据表列出了其他几个。

    我认为 R5FSS0_CORE0 或 MCU_R5FSS0_CORE0 路由器没有设备树节点。

    [quote userid=“367881" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1545424/am67a-enable-i2c4-on-am67/5955574 您好、Jared、我将 DTS 中的时钟频率设置为 1MHz、它仍在以 400kHz 的频率进行通信、但不再超时?

    我看到它最初设置为 100KHz、如果设置为 400kHz、它是否正常工作?

    此致、
    Jared

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

    尊敬的 Jared、编号 100KHz 和 400kHz、这两种情况都会导致 i2cdetect 出现某种延迟和无效读取。

    我发现它实际上发送的地址仍然是 400kHz、但随后在 1MHz 上进行通信。

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

    尊敬的 Evan:

    有意思。 我在内部提交了一个工单、但目前至少有 I2C4 正在运行。

    此致、
    Jared

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

    尊敬的 Evan:

    我们无法重新创建超时问题。 I2C4 在我们的 EVM 上正常运行、不会出现问题。

    此致、
    Jared

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

    您好 Jared、

    好消息、请您确认使用的 SDK 是哪个版本?

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

    尊敬的 Evan:

    该补丁应用于 11.0 SDK。

    此致、
    Jared