2374825_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2374825_zh-CN

2374825_zh-CN

i.MX 8M Plus(Scarthgap)上的 HDMI EDID 4 块读取失败

您好,

我正在 Yocto Scarthgap 电路板支持包 上使用 i.MX 8M Plus,在尝试读取 4 个 HDMI EDID 块(块 0 到 3)时遇到了问题。

[环境]

  • SoC:i.MX 8M Plus

  • 电路板支持包/操作系统:Yocto Project Scarthgap(内核版本:lf-6.6.52)

[问题描述]尝试读取所有 4 个 EDID 块时,系统无法从块 2 开始读取(段 1)。区块 0 和区块 1(0 段)读取成功,但读取操作随即失败。

[根本原因/分析]经过调试,我发现问题与段切换命令后使用的 DDC 地址有关:

  1. 要读取区块 2 和 3,必须正确执行区段切换命令。

  2. 切换网段后,驱动程序应使用标准 DDC 地址0xA0/0xA1(I2C 地址 0x50)读取实际 EDID 数据。

  3. 但是,驱动程序错误地尝试使用地址0x60/0x61(即段指针地址)读取数据,导致读取错误。

看来驱动程序错误地在随后的数据读取序列中重复使用了分段指针地址。

[问题]

  • 这是 i.MX 8M Plus Scarthgap BSP 上的 HDMI/DDC 驱动程序中的已知问题吗?

  • 是否有任何现有的修补程序或变通方法来修复这种地址不匹配问题?

如能提供需要修改的相关驱动程序代码的指导或指点,将不胜感激。

先行致谢。

Re: HDMI EDID 4-block read failure on i.MX 8M Plus (Scarthgap)
  • 这是一个已知的问题吗?
    实际上是的。恩智浦社区上至少有一份先前的 i.MX8MP 报告指出,i.MX8MP 无法正确读取块 1 / 段 0 以外的 E-EDID,该报告特别指出用户应访问drivers/gpu/drm/bridge/synopsys/dw-hdmi.c 进行调查。

  • 是否有现成的变通办法?
    是的。据报道,一种解决方法是绕过 HDMI 内部 DDC 引擎,通过在设备树中设置 ddc-i2c-bus 来使用普通的 SoC I2C 控制器进行 DDC。恩智浦社区线程报告称,将 HDMI DDC 引脚重新复用到I2C5 并使用ddc-i2c-bus = <&i2c5>; 解决了 i.MX8MP 上的多块 E-EDID 读取问题。

  • 是否已经有公共补丁?
    我在搜索结果中没有找到上游或 NXP 发布的公开补丁来专门修复你的 BSP 行的 dw-hdmi 中的这个 0x30/0x50 从属地址处理问题。公开可见的 dw-hdmi.c 代码仍然显示可以触发这种行为的 “从属地址取自第一条 I2C 消息” 逻辑。

 

如果你的主板布线允许,风险最低且已经报告的解决方法是将 HDMI DDC 从内部 dw-hdmi I2C 引擎移出常规 SoC I2C 控制器上。在 i.MX8MP 上,报告了一种解决方案

&i2c5 {
时钟频率 =<100000> ;
pinctrl-names ="默认" ;
pinctrl-0 =<& pinctrl_i2c5> ;
status ="okay" ;
};

 

&hdmi {
ddc-i2c-bus = < & i2c5 >;
status ="okay" ;
};

HDMI DDC 引脚与I2C5_SCL /I2C5_SDA 复用。恩智浦社区线程中的用户报告说,这一变更解决了 i.MX8MP 上的多块 E-EDID 读取问题。
Tags (1)
No ratings
Version history
Last update:
‎06-03-2026 03:33 AM
Updated by: