最近翻了一下全志平台里和 HDMI 相关的问题,感觉这类问题表面看是“屏不亮/无信号”,实际经常不是 HDMI 这一层单独坏了,而是显示链路里某一环没接上。这里整理一下排查思路,方便后面遇到类似问题少走弯路。
全志平台一般不是只开一个 hdmi 节点就完事,前面还有 DE/TCON/disp 这一串。屏不亮时,先别急着改 HDMI 参数,建议先看启动日志里有没有这些信息:
disp/DE 是否初始化成功
TCON 是否绑定到 HDMI 输出
HDMI PHY 是否 enable
最终输出模式是 720p/1080p 还是默认 fallback
如果 DE/TCON 没起来,HDMI 后面再怎么调也不会有图。
常见要核对:
hdmi / hdmi-phy 节点 status 是否 okay
tcon、mixer/de、display-engine 相关节点是否打开
clock/reset 是否完整
pinctrl 里 HPD/DDC 相关引脚有没有配对
电源域/regulator 是否被裁掉
有些板子原理图上 HDMI 5V、HPD、DDC 是经过电平转换或开关管的,DTS 里如果少了 GPIO/regulator,现象就会很像“线插了但系统不知道”。
HDMI 调试建议把 HPD 和 EDID 拆开看:
HPD 不对:系统可能认为没插显示器;
HPD 对了但 EDID 读不到:一般是 DDC/I2C、上拉、电平转换、线材、显示器兼容性问题;
EDID 能读到但无图:再看 mode、pixel clock、PHY、TCON/DE 数据流。
有条件的话,用示波器/逻辑分析仪看一下 DDC 的 SCL/SDA,有时候比盯半天 dmesg 快。
一上来别直接 1080p60 拉满。建议先固定一个保守模式,例如 720p60 或 1024x768,确认链路通了再往上调。
如果某些显示器能亮、某些不亮,优先怀疑 EDID 解析/模式选择/PHY 参数边界,而不是单纯“HDMI 驱动坏”。
有的项目要求开机 logo,U-Boot 阶段就要点 HDMI;有的只要求进 Linux 后显示。两边配置不一定共用:
U-Boot 能亮,Linux 不亮:查内核 DTS/DRM/disp 配置;
U-Boot 不亮,Linux 能亮:查 U-Boot 显示驱动和板级配置;
两边都不亮:先回到供电、HPD、DDC、clock/reset 这些基础项。
我一般会这样排:
确认 HDMI 5V 输出、HPD 电平;
看内核 log,确认 HDMI/PHY/DE/TCON 是否 probe 成功;
读 EDID,看 DDC 是否通;
固定 720p60 输出;
再调分辨率、音频、热插拔;
最后才考虑改 PHY/timing 细节。
简单说,HDMI “无信号”不要只盯一个 hdmi 节点。全志平台显示链路比较长,DTS、clock/reset、HPD、DDC、EDID、TCON/DE 任一环断了,最后表现都可能是黑屏。先把链路拆开验证,定位会快很多。
离线