[RK3399][Android7.1] HDMI显示屏(副屏)调试记录小结

本文详细介绍了在RK3399平台上,基于Android 7.1系统和Kernel v4.4.83的HDMI显示屏调试过程,涉及HPD引脚检测、I2C读取EDID、分辨率设置等关键步骤。当HPD为High但EDID未准备好时,可能导致HDMI显示为DVI,出现有图无声的问题。I2C部分解释了内部I2C和普通I2C的使用,并指出EDID读取失败会默认选择1024x768@60分辨率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

驱动文件:

dw-hdmi.c: HDMI驱动,包括内部I2C接口实现。
drm_edid.c: edid相关。
dw_hdmi-rockchip.c: drm框架部分。


探测引脚

HPD(Hotplug Dectect)用于监测HDMI设备是否存在,为high那么可以通过DDC去读EDID,HDMI有规定在HDMI 5vAC断电时source device可以读reciever device的EDID,也就是需要Hotplug为High。其中有两种Hotplug相关的情况会导致HDMI被识别为DVI:

  • Hotplug为High,不过EDID并没有准备好,那么信号源设备会由于无法读到EDID而认为接收设备为DVI,这样会导致HDMI有图像无声的问题。
  • Hotplug为Low,也会导致信号源无法读到EDID而认为接收设备为DVI,从而导致HDMI有图无声。

插拔是否成功可以在check_hdmi_irq()@dw-hdmi.c中打印log。


I2C部分:

I2C主要用于读取EDID,内部框图如下:
在这里插入图片描述

分内部I2C和普通I2C两种。
普通的I2C可以配置到任何一路,和正常外设使用一样。DTS配置ddc-i2c-bus属性即可:

&hdmi {
	status = "okay";
	ddc-i2c-bus = <&i2c4>;	//选择硬件对应使用的I2C
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值