ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RK3288 HDMI配置和调试

RK3288 HDMI配置和调试

原创 Linux操作系统 作者:tt7643066 时间:2020-02-11 11:39:48 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
新创云智能科技 基于瑞芯微RK3588、RK3576、RK3568、RK3566、RK3399、RK3128等平台的核心板、开发板、工控板、主板,支持定制化OEM/ODM,提供产品解决方案。

注册时间:2019-09-14

  • 博文量
    66
  • 访问量
    122714