本文主要是介绍display:dp/dsi:构建虚拟5kdp/dsi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
测试mdp的性能,屏幕成本很高
如何构建虚拟dp?
1.kernel打通覆盖dpcd以及edid的节点
2.正确的dpcd以及edid输入
对于1,
需要修改源码,简单的思路是创建一个sys节点,暴露dpcp以及edid的节点,顺便需要暴露hot-plug的节点。
这样就可以先改好dpcd以及edid,然后模拟hot-plug,保证在hot-plug执行的时候读取预先写入edid以及dpcd。
对于2,
正确的dpcd,一般我们修改最多的就是lane的数量以及lane的最大传输速率;修改dpcd主要影响link-training,实际上我遇到最多的就是link-traning的时候,电压和增益不匹配;link training的voltage level和pre-emphsis level需要组合尝试。参考dp spec。1.3版本https://download.csdn.net/download/u012839187/12793610
正确的edid,一般我们修改timing为主;如果分辨率小于4096,那么只需要改basic-edid即可,如果分辨率大于4096,那么就需要edid-extension,displayid,也就是以0x70开口的extension数据块。
验证,
是否成功的办法是查看/sys节点以及尝试使用modetest工具,查看dmesg去确认。
note
edid以及dpcd的生成可以使用工具980 Manager:https://www.quantumdata.com/downloads.html
如何构建虚拟dsi?
配置timing;配置对应的phy
qcom某款芯片为例:
1.dts里面qcom,mdss-dsi-display-timings & qcom,mdss-dsi-panel-phy-timings
2.如果有bridge,注意配置bridge
DP hot-plug
- 1.读取dpcd,edid
- 2.link-traning
- 3.发送消息给上层 uevent
-
4.用户层收到消息后,选择对应的perferd mode,通过kms设置mode
附一张分辨率图:
https://upload.wikimedia.org/wikipedia/commons/0/0c/Vector_Video_Standards8.svg
这篇关于display:dp/dsi:构建虚拟5kdp/dsi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!