[RK3399] HDMI正常输出4K30帧 无法输出60帧以及设置分辨率的流程分析

**
Platform: ROCKCHIP
Chip: RK3399
OS: Android7.1.2
Kernel: 4.4.126
*
**
【接上篇】上篇虽然HDMI能正常输出4K,但是帧率却达不到60帧,只能30帧,具体分析如下
按网上和官方的分别试了下修改,均没成功kernel/driversideo/rockchipmi/rockchip-hdmiv2 中的 rockchip-hdmi.h 文件,
/* HDMI default vide mode */
#define HDMI_VIDEO_DEFAULT_MODE HDMI_1280X720P_60HZ

又在dtsi中加入 rockchip,defaultmode = <4>;也没有成功。
以上是开机那时候的分辨率。

修改与现象

将输出特殊分辨率的方法输出
相关文件:
kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
kernel/drivers/gpu/drm/drm_edid.c

如上修改:
1、在edid_cea_modes数据的最后定义特殊的分辨率(drm_edid.c文件中)。
2、把def_mode数组的第一个值改成特殊分辨率对应的 vic(vic在drivers/gpu/drm/drm_edid.c文件中edid_cea_modes结构体中).
3、edid = NULL;强制把edid赋为NULL,不管有没有读到edid都强制按def_modes来显示。
kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c下的函数dw_hdmi_connector_get_modes(),修改def_modes

  1. def_modes[1] = {97};//3840x2160P60

烧录设备结果:hdmi输出显示屏黑屏 cat 设备结果如下
在这里插入图片描述

  1. 特殊分辨率 def_modes[1] = {108};//特殊分辨率 800x1280P60
    /* 108 - 800x1280@60Hz */
    kernel/drivers/gpu/drm/drm_edid.c里edid_cea_modes[]:新增如下特殊分辨率:
    { DRM_MODE(“800x1280”, DRM_MODE_TYPE_DRIVER, 76000, 800, 848,
    880, 960, 0, 1280, 1300, 1304, 1314, 0,
    DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
    .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, },
    烧录设备结果:出图正常 cat 设备结果如下
    在这里插入图片描述
    在这里插入图片描述

原因:显示屏不支持4K60hz,支支持4K30hz,所以导致设备分辨率为60hz时黑屏

其工作流程:底层通过edid,读取到显示器的分辨率列表,然后反馈给Android系统,在系统界面里显示出来

设置分辨率的流程分析

先通过i2c获取屏的edid信息。
EDID的全称是Extended Display Identification Data(扩展显示标识数据),共有128字节。其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、
频率范围的限制以及显示器名和序列号的字符串等等。

如何查看edid信息?
cat sys/class/drm/card0-HDMI-A-1/edid > /data/edid.bin //然后把edid.bin拷贝出来
或者:cat sys/class/drm/card0-HDMI-A-1/edid |busybox hexdump

驱动文件清单
通用屏配置驱动:
drivers/gpu/drm/panel/panel-simple.c //.c文件里面包含mipi的时序参数配置和mipi一些接口还有背光的使能关闭等,配置屏参可以在此文件或者dts

Core:
drivers/gpu/drm/rockchip/rockchip_drm_drv.c
framebuffer drivers/gpu/drm/rockchip/rockchip_drm_fb.c
gem drivers/gpu/drm/rockchip/rockchip_drm_gem.c

vop:
drivers/gpu/drm/rockchip/rockchip_drm_vop.c<

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值