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
