1. 程式人生 > >RK3288 HDMI配置和除錯

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

[email protected]:/ $ 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:
        
[email protected]
[email protected] //支援的視訊顏色模式 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