首页 > Linux操作系统 > Linux操作系统 > RK3288 HDMI配置和调试
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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69948385/viewspace-2675089/ ,如需转载,请注明出处,否则将追究法律责任。