RK3399:HDMI输出固定频率与热插拔
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输出固定频率与热插拔相关推荐
- 嵌入式linux hdmi分辨率,【Firefly3399Pro】rk3399pro在Framebuffer状态命令行模式中强制HDMI输出固定分辨率...
环境 Ubuntu虚拟机做交叉编译环境 firefly3399pro-JD4核心板 + 配套Firefly底板 Linux-SDK官方 需求 固定HDMI不论显示器的大小,输出固定的分辨率 解决办法 ...
- STM32配置DAC输出固定电压和方波
STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了.ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.1 ...
- 3399 hdmi输出特殊分辨率
1.添加配置 drivers/gpu/drm/drm_edid.c /* 106 - 3840x2160p@50Hz 64:27 */{ DRM_MODE("3840x2160", ...
- 修改RK3399 HDMI显示分辨率
转载自: [RK3399] HDMI正常输出4K30帧 无法输出60帧以及设置分辨率的流程分析 ** Platform: ROCKCHIP Chip: RK3399 OS: Android7.1.2 ...
- PYNQ-Z2 HDMI输出图形实验
在本文中作者使用Xilinx的IP搭建一个HDMI输出图形的平台.在这个平台上设计目标是输出800*600像素的图像,本实验没有使用DDR缓存图像数据.本次实验使用到的工具: 开发板:PYNQ-Z2: ...
- SiT1618:抗冲击抗振动宽温振荡器7.3728-48MHz之间33个固定频率
1.SiT1618简介 SiT1618抗冲击宽温振荡器有33个标准频率(7.3728-48MHz之间)和两个温度范围(分为工业级和汽车级).SiT1618具有±20 ppm稳定性,超小的2.0mm x ...
- pwm一个时间单位_详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...
一.stm32的pwm输出引脚是使用的IO口的复用功能. 二.T2~T5这4个通用定时器均可输出4路PWM--CH1~CH4. 三.我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并 ...
- 在pycharm中自定义模板代码,快速输出固定代码块
pycharm中有时会经常输出固定一段代码,为避免每次重复输入,可以自定义一段模板代码,请看以下图教程: 1. 点击 file 里面的 setting 2. 在搜索框输入live,就会显示出 ...
- STM32单片机一个定时器输出不同频率PWM波
在使用STM32单片机输出PWM波形的时候,通常可以直接使用定时器提供的PWM模式.可以通过自动重装载寄存器(TIMx_ARR)来设置定时器的输出频率,然后通过捕获/ 比较寄存器 1(TIMx_C ...
最新文章
- Python持续点火,跟进还是观望?
- 为什么通过微服务的方法构建应用程序?
- 独家 | 10个数据科学家常犯的编程错误(附解决方案)
- PLATFORM软件有限公司
- html5 实现手机摇一摇功能(C)
- iOS后台下载功能(收集)
- 技术部门Leader是不是一定要技术大牛担任?
- ·XP注册表修改大全
- HadoopHA集群搭建
- 基于大中台小前台模式设计高并发电商架构
- linux除法脚本,经典shell-脚本实例
- 高效能人士的七个习惯_有史以来最具影响力管理类书籍 高效能人士的七个习惯 让你成为一名成功高效的人士...
- java程序设计精编教程第3版电子版课后答案_Java程序设计精编教程-(第3版)-微课版...
- autojs之提取text中的红色文字(图片二值化+百度智能云-文字识别OCR-接口调用)
- TensorFlow Probability概率编程-时序模型
- PHPCAS客户端搭建教程
- 天下大事做于细,从零实施ERP
- windows服务器ssl证书安装及配置
- 论文阅读_Hawkeye: Towards a Desired Directed Grey-box Fuzzer
- 攻防世界 Pwn 进阶 第二页