1、简介

我采用的开发环境是OK3399-C开发板,默认的HDMI输出频率是720P,而我使用的屏幕是800x600的分辨率,需改成固定分辨率。

2、增加HDMI支持的分辨率

在源码文件kernel/drivers/gpu/drm/drm_edid.c中的edid_cea_modes结构体中包含着各种分辨率,如果里面有你需要的就不用改,如果没有,需自己新加,例如800x600-60Hz。

/* 108 - 800x600p@60Hz 4:3 */
{ DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 40000, 800, 840, 968, 1056, 0, 600, 601, 605, 628, 0,   /* 800x600@60Hz从上面的edid_est_modes结构体拷贝过来 */DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) ,.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,  },

3、修改默认输出

在源码文件kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c的2569行dw_hdmi_connector_get_modes函数中,

struct edid *edid;
struct drm_display_mode *mode;
//const u8 def_modes[6] = {4, 16, 31, 19, 17, 2};
const u8 def_modes[1] = {108}; //将默认模式改为自己新加的108项
struct drm_display_info *info = &connector->display_info;
struct hdr_static_metadata *metedata =&connector->display_info.hdmi.hdr_panel_metadata;int i, ret = 0;if (!hdmi->ddc)return 0;edid = drm_get_edid(connector, hdmi->ddc);edid = NULL;   //要把edid强制输出为空,否则就跟随edid了。if (edid) {

4、其它可选择修改

在源码文件kernel/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c文件中493行,去掉如下选项

/*
if (mode->clock > 340000 &&connector->display_info.max_tmds_clock < 340000 &&(!drm_mode_is_420(&connector->display_info, mode) ||!connector->ycbcr_420_allowed))return MODE_BAD;
*/

在源码文件kernel/drivers/video/rockchip/hdmi/rockchip-hdm.h文件中hdmi_video_information_code结构体中加入新增的分辨率

HDMI_800X600P_60HZ_4_3,

在570行,修改默认的分辨率

/* HDMI default vide mode */
#define HDMI_VIDEO_DEFAULT_MODE         HDMI_800X600P_60HZ_4_3       //HDMI_1280X720P_60HZ

5、HDMI支持热插拔

我用的OK3399-C开发板的HDMI不支持热插拔,造成的原因是拔下后,系统切换成其它视频输出接口。权宜之计,驱动中一直挂着HDMI。在源码文件kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c文件中第1645行

enum drm_connector_status dw_hdmi_phy_read_hpd(struct dw_hdmi *hdmi,void *data)
{return hdmi_readb(hdmi, HDMI_PHY_STAT0) & HDMI_PHY_HPD ?connector_status_connected : connector_status_connected;//connector_status_connected : connector_status_disconnected;
}

6、结尾

修改上面的文件后,重新编译系统内核,并更新到开发板上,可以看到分辨率变成了800x600。

RK3399:HDMI输出固定频率与热插拔相关推荐

  1. 嵌入式linux hdmi分辨率,【Firefly3399Pro】rk3399pro在Framebuffer状态命令行模式中强制HDMI输出固定分辨率...

    环境 Ubuntu虚拟机做交叉编译环境 firefly3399pro-JD4核心板 + 配套Firefly底板 Linux-SDK官方 需求 固定HDMI不论显示器的大小,输出固定的分辨率 解决办法 ...

  2. STM32配置DAC输出固定电压和方波

    STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了.ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.1 ...

  3. 3399 hdmi输出特殊分辨率

    1.添加配置 drivers/gpu/drm/drm_edid.c /* 106 - 3840x2160p@50Hz 64:27 */{ DRM_MODE("3840x2160", ...

  4. 修改RK3399 HDMI显示分辨率

    转载自: [RK3399] HDMI正常输出4K30帧 无法输出60帧以及设置分辨率的流程分析 ** Platform: ROCKCHIP Chip: RK3399 OS: Android7.1.2 ...

  5. PYNQ-Z2 HDMI输出图形实验

    在本文中作者使用Xilinx的IP搭建一个HDMI输出图形的平台.在这个平台上设计目标是输出800*600像素的图像,本实验没有使用DDR缓存图像数据.本次实验使用到的工具: 开发板:PYNQ-Z2: ...

  6. SiT1618:抗冲击抗振动宽温振荡器7.3728-48MHz之间33个固定频率

    1.SiT1618简介 SiT1618抗冲击宽温振荡器有33个标准频率(7.3728-48MHz之间)和两个温度范围(分为工业级和汽车级).SiT1618具有±20 ppm稳定性,超小的2.0mm x ...

  7. pwm一个时间单位_详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...

    一.stm32的pwm输出引脚是使用的IO口的复用功能. 二.T2~T5这4个通用定时器均可输出4路PWM--CH1~CH4. 三.我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并 ...

  8. 在pycharm中自定义模板代码,快速输出固定代码块

    pycharm中有时会经常输出固定一段代码,为避免每次重复输入,可以自定义一段模板代码,请看以下图教程: 1.  点击 file   里面的   setting 2. 在搜索框输入live,就会显示出 ...

  9. STM32单片机一个定时器输出不同频率PWM波

      在使用STM32单片机输出PWM波形的时候,通常可以直接使用定时器提供的PWM模式.可以通过自动重装载寄存器(TIMx_ARR)来设置定时器的输出频率,然后通过捕获/ 比较寄存器 1(TIMx_C ...

最新文章

  1. Python持续点火,跟进还是观望?
  2. 为什么通过微服务的方法构建应用程序?
  3. 独家 | 10个数据科学家常犯的编程错误(附解决方案)
  4. PLATFORM软件有限公司
  5. html5 实现手机摇一摇功能(C)
  6. iOS后台下载功能(收集)
  7. 技术部门Leader是不是一定要技术大牛担任?
  8. ·XP注册表修改大全
  9. HadoopHA集群搭建
  10. 基于大中台小前台模式设计高并发电商架构
  11. linux除法脚本,经典shell-脚本实例
  12. 高效能人士的七个习惯_有史以来最具影响力管理类书籍 高效能人士的七个习惯 让你成为一名成功高效的人士...
  13. java程序设计精编教程第3版电子版课后答案_Java程序设计精编教程-(第3版)-微课版...
  14. autojs之提取text中的红色文字(图片二值化+百度智能云-文字识别OCR-接口调用)
  15. TensorFlow Probability概率编程-时序模型
  16. PHPCAS客户端搭建教程
  17. 天下大事做于细,从零实施ERP
  18. windows服务器ssl证书安装及配置
  19. 论文阅读_Hawkeye: Towards a Desired Directed Grey-box Fuzzer
  20. 攻防世界 Pwn 进阶 第二页

热门文章

  1. MAC电脑制作iPhone手机铃声
  2. 如何让品牌进入元宇宙
  3. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
  4. C# Web页面打印网页
  5. 尤里复仇退出界面_win10运行红警2尤里复仇的解决方法
  6. 拼多多砍价背后的逻辑
  7. 写微信公众号注意事项
  8. 汉语计算机语言,从计算机编程语言说汉语的比较优势
  9. linux实训分析与体会,linux实训总结与体会
  10. 内网渗透测试:域内权限维持思路总结