RK3288 HDMI配置和调试

本文介绍如何配置RK3288芯片组的HDMI驱动以设置默认分辨率及调试方法。包括修改板级dts文件来设置默认分辨率、查看支持的分辨率、切换分辨率等操作。

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

RK3288 最大输出分辨率为 3840x2160

HDMI 驱动代码位于 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 目录

 

1、设置默认输出分辨率

网上的资源是修改 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 中的 rockchip-hdmi.h 文件,

/* HDMI default vide mode */
#define HDMI_VIDEO_DEFAULT_MODE    HDMI_1280X720P_60HZ

官方文档中是修改板级 dts 文件,路径为 kernel\arch\arm\boot\dts\xxx.dts 

在 hdmi 节点中添加 rockchip,defaultmode = <value>,<value>值可以在 rockchip-hdmi.h 的 hdmi_video_infomation_code 中查到相应值。

hdmi_video_infomation_code 是一个枚举数组,从 1 开始,想设置哪个分辨率,value 值就填此分辨率的序号。

设置前首先得支持此分辨率。查看支持的分辨率:cat /sys/class/display/HDMI/modes

例如,设置默认分辨率为1280x720P60Hz输出:

复制代码
//路径:kernel\arch\arm\boot\dts\xxx.dts
&hdmi {
    status = "okay";
    rockchip,hdmi_video_source = <DISPLAY_SOURCE_LCDC1>;
    rockchip,defaultmode = <4>;
};

//路径:kernel\drivers\video\rockchip\hdmi\rockchip-hdmi.h
/* HDMI video information code according CEA-861-F */
enum hdmi_video_infomation_code {
    HDMI_640X480P_60HZ = 1,
    HDMI_720X480P_60HZ_4_3,
    HDMI_720X480P_60HZ_16_9,
    HDMI_1280X720P_60HZ,
        ...
}
复制代码

 

2、调试方法

查看sink设备的EDID信息,含原始数据和解析后信息。

cat /sys/class/display/HDMI/debug

复制代码
shell@xxx:/ $ cat /sys/class/display/HDMI/debug
//EDID状态
EDID status:Okay
//原始数据
Raw Data:
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x05, 0xe3, 0x80, 0x22, 0xfd, 0x05, 0x00, 0x00, 
0x0e, 0x1a, 0x01, 0x03, 0xa0, 0x30, 0x1b, 0x78, 0xba, 0x5a, 0x65, 0xa7, 0x56, 0x52, 0x9c, 0x27, 
0x0f, 0x50, 0x54, 0xbf, 0xef, 0x00, 0xd1, 0xc0, 0xb3, 0x00, 0x95, 0x00, 0x81, 0x80, 0x81, 0x40, 
0x81, 0xc0, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 
0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x32, 0x4c, 0x1e, 
0x53, 0x11, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x32, 
0x32, 0x38, 0x30, 0x57, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 
0x00, 0x41, 0x42, 0x38, 0x30, 0x36, 0x31, 0x34, 0x5a, 0x30, 0x31, 0x35, 0x33, 0x33, 0x01, 0xa8, 
0x02, 0x03, 0x1b, 0x71, 0x23, 0x09, 0x07, 0x07, 0x83, 0x01, 0x00, 0x00, 0x67, 0x03, 0x0c, 0x00, 
0x10, 0x00, 0x80, 0x21, 0x43, 0x01, 0x10, 0x84, 0xe2, 0x00, 0x0f, 0x01, 0x1d, 0x00, 0x72, 0x51, 
0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0x81, 0x49, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 
******** Show Sink Info ********
//最大tmds通道时钟频率
Max tmds clk is 0
//支持的分辨率
Support video mode:
        1920x1080p@60Hz
        1280x720p@60Hz
//支持的视频颜色模式
Support video color mode: RGB YCbCr422 YCbCr444
//支持的视频颜色位深
Support video color depth: 24bit
//支持的音频类型
Support audio type: LPCM
//支持的最大音频通道
Support max audio channel is 2
//支持的音频采样速率
Support audio sample rate: 32000 44100 48000
//支持的音频字长
Support audio word lenght: 16bit 20bit 24bit
复制代码

查看支持的分辨率

$ cat /sys/class/display/HDMI/modes

 

查看当前分辨率

$ cat /sys/class/display/HDMI/mode

 

切换分辨率

$ echo 1920x1080p-60 > /sys/class/display/HDMI/mode

 

查看HDMI是否连接

$ cat /sys/class/display/HDMI/connect

 

查看HDMI使能状态

$ cat /sys/class/display/HDMI/enable

 

设置HDMI使能,<value> 可取0或1,0表示关闭,1表示开启。

$ echo <value> > /sys/class/display/HDMI/enable

 

修改输出颜色

$ echo mode=<value> > /sys/class/display/HDMI/color

mode = 0 是自动模式,优先级为:

YCbCr444[16-235] > YCbCr422[16-235] > RGB[16-235] > RGB[0-255]

mode = 1 是RGB[0-255]

mode = 2 是RGB[16-235]

mode = 3 是YCbCr444[16-235]

mode = 4 是YCbCr422[16-235]

 

查看3D模式

$ cat /sys/class/display/HDMI/3dmode

 

设置3D模式

$ echo <value> > /sys/class/display/HDMI/3dmode

<value>可以取以下值:

0:Frame packing

6:Top and Bottom

8:Side by Side Half

 

在 make menuconfig 中打开内核的 Debug 选项,可以查看更多的Log信息。

Device Drivers --->
    Graphics support --->
        [*] Rockchip HDMI support --->
            [*] Rockchip HDMI Debugging
### RK3566 HDMI驱动调试教程及常见问题解决 #### 一、HDMIIN设备驱动特性 对于RK3568/RK3566平台上的HDMI输入(HDMIIN),其设备驱动相较于常规摄像头驱动增加了特定的功能模块来适应实际应用场景的需求,特别是针对拔插检测分辨率自动调整机制进行了优化处理[^1]。 #### 二、具体实现方式 以采用龙讯公司生产的LT6911UXC芯片为例,在该实例中实现了完整的HDMI接收器功能。通过定制化的Linux内核补丁文件,可以增强系统的兼容性稳定性,确保能够正确解析并呈现来自外部源设备的数据流[^3]。 ```bash # 应用必要的内核补丁以支持强制输出模式其他改进措施 cd /path/to/kernel/source git apply --directory=drivers/gpu/drm/bridge/synopsys ../patches/rk628-for-all/v27-240730/kernel/*.patch ``` #### 三、测试流程与工具使用 为了验证上述改动的有效性以及排查可能存在的问题,建议利用`modetest`这类命令行实用程序来进行初步诊断工作。这一步骤可以帮助确认当前配置下的基本显示性能指标是否正常运作,并进一步探索更复杂的交互行为如热插拔响应速度或是不同分辨率间的无缝过渡表现等[^2]。 ```bash # 列举可用的DRM连接器及其状态信息 modetest -c | grep Connector # 查询指定ID号对应的详细参数设置情况 modetest -D <connector_id> ``` #### 四、遇到的问题及对策 当面对诸如画面闪烁、色彩偏差或者是音频同步失真等情况时,则需深入分析日志记录寻找线索;同时也可以尝试更新至最新版本固件或查阅官方文档获取更多技术支持资源。另外值得注意的是某些高级特性的启用可能会依赖额外硬件组件的支持程度,因此务必提前做好充分调研再做决定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值