RK3288 HDMI配置和除錯

tt7643066發表於2020-02-11

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部落格 ” ,連結:http://blog.itpub.net/69948385/viewspace-2675089/,如需轉載,請註明出處,否則將追究法律責任。

相關文章