RK3399/RK3288 HDMI分辨率设置:添加kernel驱动及EDID配置详解

需积分: 33 31 下载量 156 浏览量 更新于2024-09-03 1 收藏 3KB TXT 举报
在rk3399和rk3288平台上的Android 7.1系统中,设置HDMI分辨率涉及到硬件驱动和底层代码的配置。首先,我们关注的是`device/rockchip/common/resolution_white.xml`文件中的关键信息。这个XML文件定义了一个具体的显示器分辨率,包括: 1. **时钟频率**:85500赫兹(Hz),这是视频信号传输的时钟速率,确保数据传输的稳定性和一致性。 2. **水平像素**(hdisplay):1366,表示屏幕宽度。 3. **HSYNC起始和结束点**:1436和1579,HSYNC是同步信号的一部分,用于调整屏幕的刷新过程。 4. **总水平像素**(htotal):1792,这包括HSYNC和非HSYNC区域。 5. **H-偏移**(hskew):0,用于校准图像的位置。 6. **垂直像素**(vdisplay):768,表示屏幕高度。 7. **VSYNC起始和结束点**:771和774,同样用于调整垂直刷新。 8. **总垂直像素**(vtotal):798,包括VSYNC信号。 9. **扫描方式**(vscan):0,通常指的是逐行扫描。 10. **刷新率**(vrefresh):60Hz,即每秒60帧,标准电视和计算机显示器的刷新率。 11. **标志**(flags):5,这个值可能与特定的显示特性或HDR支持有关,但必须谨慎修改,因为随意改动可能导致显示问题。 12. **VIC**(Video Input Clock):108,可能指视频输入时钟的比率,用于协调视频信号与系统时钟之间的关系。 在`kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c`文件中,`dw_hdmi_connector_get_modes`函数负责获取并处理HDMI连接器的可用模式。它首先检查HDMI设备是否支持DDC(Display Data Channel),然后读取EDID(Extended Display Identification Data)来获取显示器的物理特性。默认模式数组`def_modes`包含几种常见的分辨率选项(如4:3、16:9等),开发者可以根据项目需求从中选择合适的分辨率。 在这个过程中,开发者需要确保EDID数据的正确性,并根据系统的具体需求调整`def_modes`中的分辨率值。同时,对`flags`的管理也很重要,因为它可能涉及HDR功能的控制。如果系统不支持HDR,可能需要保持其默认值,否则可能导致兼容性问题。 设置rk3399和rk3288平台的HDMI分辨率,需要理解这些底层代码的工作原理,正确配置EDID数据,以及适配系统的显示接口和HDR特性。在实际操作中,可能还需要考虑其他因素,比如系统兼容性、用户界面的显示设置选项以及与硬件的交互。