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.

[参考译文] AM4378:I2C I/O 错误:RC =-121

Guru**** 691310 points
Other Parts Discussed in Thread: TVP5150, TVP5151, TVP5150AM1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/931037/am4378-i2c-i-o-error-rc--121

器件型号:AM4378
主题中讨论的其他器件:TVP5150TVP5151TVP5150AM1

尊敬的 TI:

我有一个基于 AM437X-gp-EVM 的定制板连接到 tvp5150。

我更改了设备树并在内核中启用了对 tvp5150的支持。

但我在引导过程中遇到 tvp5150的加载失败、如下所示。

[1.452528] tvp5150 1-005C:I2C I/O 错误:RC =-121
[1.457634] tvp5150:1-005C 的探测器失败,错误-121

器件树的相关部分如下所示

i2c1{(&I)
    tvp5150:tvp5150@5c{
        兼容="ti、tvp5150";
        reg =<0x5c>;
        端口{
            tvp5150_0:端点{
                远程端点=<&V pfe0_EP>;
            };
        };
    };
};

vpfe0{_vpfe0}(&V)
    状态="正常";
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&V vpfe0_PINS_DEFAULT>;
    pinctrl-1 =<&V vpfe0_PINS_SLEEP>;

    端口{
        #address-cells =<1>;
        #size-cells =<0>;

        vpfe0_EP:端点{
            从模式;
            远程端点=<&tvp5150_0>;
            TI、AM437X-VPFE-interface =<1>;
            HSYNC-ACTIVE =<1>;
            vsync-active =<1>;
            pclk-sample =<0>;
        };
    };
};

我检查了 I2C 总线。

root@AM437X-EVM:~# i2cdetect 1.
警告:无法使用 SMBus 快速写入命令、将跳过一些地址
警告! 该程序会使您的 I2C 总线混淆、导致数据丢失和更糟糕的情况!
我将探测文件/dev/i2c-1.
我将探测地址范围0x03-0x77。
继续? [y/n]、是
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:
10:
20:
30:------------ ------
40:
50:50 ---------- ------------ -- 5d ----
60:
70:

tvp5150的 I2C 总线地址为0x5d。 因此、我将地址从0x5c 更改为0x5d。

i2c1{(&I)
    tvp5150:tvp5150@5d{
        兼容="ti、tvp5150";
        reg =<0x5d>;
        端口{
            tvp5150_0:端点{
                远程端点=<&V pfe0_EP>;
            };
        };
    };
};

更改地址后、驱动程序已成功加载。

[1.454235] tvp5150 1-005D:找到的 TVP5151 (1.0)芯片@ 0xba (OMAP I2C 适配器)
[1.461499] tvp5150 1-005D:检测到 TVP5151。

顺便说一下、  驱动程序加载失败在电源复位后的启动过程中再次出现。

[1.452490] tvp5150 1-005D:I2C I/O 错误:RC =-121
[1.457593] tvp5150:1-005D 的探头失败,错误-121

我检查了 i2c 总线、发现地址从0x5d 更改为0x5c。

root@AM437X-EVM:~# i2cdetect 1.
警告:无法使用 SMBus 快速写入命令、将跳过一些地址
警告! 该程序会使您的 I2C 总线混淆、导致数据丢失和更糟糕的情况!
我将探测文件/dev/i2c-1.
我将探测地址范围0x03-0x77。
继续? [y/n]、是
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:
10:
20:
30:------------ ------
40:
50:50 ---------- ------------ -- 5c ------
60:
70:


我无法理解地址更改的原因。

是否有任何方法来修复该地址?

但斯克、基汉。

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

    您好、Kihan、

    您在 AM437x 上运行的是哪个版本的 Linux?

    此致、

    Nick

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

    您好、Nick、

    SDK 版本为06.03.00.106。

    内核版本为4.19.94+。

    root@AM437X-EVM:~# uname -a
    Linux AM437X-EVM 4.19.94+#3挤占8月1日星期六17:22:24 KST 2020 armv7l GNU/Linux


    谢谢、kihan。

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

    您好、Kihan、

    请注意,不建议在新设备上使用 TVP5150/5151,并且根据开机自检的要求,支持非常有限 ,请先阅读-TVP/ TVP/ THS 支持通知。 我不确定该驱动程序是否已在 Linux 4.19中进行了测试,因为即使是最新的 TVP5150AM1也没有 https://www.ti.com/product/TVP5150AM1上的任何其他软件更新 。

    如何设置 TVP5150从地址? 您是否尝试在器件树中设置 I2C 地址以匹配您在硬件中设置的从器件地址?

    此致、

    Nick