查看: 1779|回复: 0

[经验] RK3288 HDMI配置和调试

[复制链接]
  • TA的每日心情

    2018-11-20 13:41
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2019-2-15 14:21:04 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 电子月 于 2019-2-15 14:21 编辑

    RK3288 最大输出分辨率为 3840x2160
    HDMI 驱动代码位于 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 目录

    1、设置默认输出分辨率
    网上的资源是修改 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 中的 rockchip-hdmi.h 文件,
    1. /* HDMI default vide mode */
    2. #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输出:
    1. //路径:kernel\arch\arm\boot\dts\xxx.dts
    2. &hdmi {
    3.     status = "okay";
    4.     rockchip,hdmi_video_source = <DISPLAY_SOURCE_LCDC1>;
    5.     rockchip,defaultmode = <4>;
    6. };

    7. //路径:kernel\drivers\video\rockchip\hdmi\rockchip-hdmi.h
    8. /* HDMI video information code according CEA-861-F */
    9. enum hdmi_video_infomation_code {
    10.     HDMI_640X480P_60HZ = 1,
    11.     HDMI_720X480P_60HZ_4_3,
    12.     HDMI_720X480P_60HZ_16_9,
    13.     HDMI_1280X720P_60HZ,
    14.         ...
    15. }
    复制代码

    2、调试方法
    查看sink设备的EDID信息,含原始数据和解析后信息。
    cat /sys/class/display/HDMI/debug
    1. shell@xxx:/ $ cat /sys/class/display/HDMI/debug
    2. //EDID状态
    3. EDID status:Okay
    4. //原始数据
    5. Raw Data:
    6. 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x05, 0xe3, 0x80, 0x22, 0xfd, 0x05, 0x00, 0x00,
    7. 0x0e, 0x1a, 0x01, 0x03, 0xa0, 0x30, 0x1b, 0x78, 0xba, 0x5a, 0x65, 0xa7, 0x56, 0x52, 0x9c, 0x27,
    8. 0x0f, 0x50, 0x54, 0xbf, 0xef, 0x00, 0xd1, 0xc0, 0xb3, 0x00, 0x95, 0x00, 0x81, 0x80, 0x81, 0x40,
    9. 0x81, 0xc0, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c,
    10. 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x32, 0x4c, 0x1e,
    11. 0x53, 0x11, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x32,
    12. 0x32, 0x38, 0x30, 0x57, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff,
    13. 0x00, 0x41, 0x42, 0x38, 0x30, 0x36, 0x31, 0x34, 0x5a, 0x30, 0x31, 0x35, 0x33, 0x33, 0x01, 0xa8,
    14. 0x02, 0x03, 0x1b, 0x71, 0x23, 0x09, 0x07, 0x07, 0x83, 0x01, 0x00, 0x00, 0x67, 0x03, 0x0c, 0x00,
    15. 0x10, 0x00, 0x80, 0x21, 0x43, 0x01, 0x10, 0x84, 0xe2, 0x00, 0x0f, 0x01, 0x1d, 0x00, 0x72, 0x51,
    16. 0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0x81, 0x49, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
    17. 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    18. 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    19. 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    20. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    21. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf,
    22. ******** Show Sink Info ********
    23. //最大tmds通道时钟频率
    24. Max tmds clk is 0
    25. //支持的分辨率
    26. Support video mode:
    27.         1920x1080p@60Hz
    28.         1280x720p@60Hz
    29. //支持的视频颜色模式
    30. Support video color mode: RGB YCbCr422 YCbCr444
    31. //支持的视频颜色位深
    32. Support video color depth: 24bit
    33. //支持的音频类型
    34. Support audio type: LPCM
    35. //支持的最大音频通道
    36. Support max audio channel is 2
    37. //支持的音频采样速率
    38. Support audio sample rate: 32000 44100 48000
    39. //支持的音频字长
    40. 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信息。
    1. Device Drivers --->
    2.     Graphics support --->
    3.         [*] Rockchip HDMI support --->
    4.             [*] Rockchip HDMI Debugging
    复制代码

    本文作者 LeeAaron
    来源 博客园
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 23:41 , Processed in 0.111143 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.