• 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 文件,路径为 kernelarcharmootdtsxxx.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输出:

    //路径:kernelarcharmootdtsxxx.dts
    &hdmi {
        status = "okay";
        rockchip,hdmi_video_source = <DISPLAY_SOURCE_LCDC1>;
        rockchip,defaultmode = <4>;
    };
    
    //路径:kerneldriversvideo
    ockchiphdmi
    ockchip-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
  • 相关阅读:
    OpenCV2:总结篇 PS算法实现
    DirectX9:第四部分 顶点着色器
    DirectX9:基础篇 第一章 初始化Direct3D
    OpenCV2:高中篇 图像锐化技术-边缘检测算子
    他山之石:C++书籍推荐
    C89:论回调函数
    OpenCV2:幼儿园篇 第六章 图像转换
    四维空间引发-维度空间(0-10)来自我的教授的班长
    802.11全家
    提示窗UIAlertView与UIAlertController的用法(持续更新中)
  • 原文地址:https://www.cnblogs.com/lialong1st/p/8522240.html
Copyright © 2020-2023  润新知