环境:

rk3566 android11

kernel 内核版本,4.19.172

问题描述:

hdmi热插拔相关的问题,当插入HDMI 系统开机启动,并正常运行,HDMI有显示且显示正常,进行热插拔也是没有问题的,当不插入HDMI接口系统启动后,再将HDMI显示接口插入HDMI显示无信号,也无法进行热插拔,无法正常显示画面。当系统启动一端时间后,再插入HDMI插入HDMI能够正常显示,且能够进行热插拔。

问题分析:

首先可以保证我们的HDMI显示驱动是没有问题的,因为我们HDMI是可以正常显示的,那么再来考虑热插拔的问题,以及HDMI中断插入脚是否检测有变化,是否能够检测到我们的HDMI插入变化,再来考虑硬件电路的问题。其逐个排查以上的猜想。

问题解决思路:

由上面的判断,可确认HDMI驱动显示部分是没有问题的,通过与硬件沟通,以及利用示波器量中断脚,当HDMI插入拔出时其HDMI的中断脚有电平的变化,HDMI插入时为高电平,拔出为低电平。分析插入HDMI启动系统与启动时不插入HDMI的kernel完全一样,HDMI的相关LOG完全相同,没有报错,且HDMI初始化正常。。。。。。,说实话到这感觉有点无语,无从下手解决该问题,但是没有办法继续干等着发货,思绪一波,突然发现:(重点)该项目外部显示接口比较多,有edp、hdmi、mipi、lvds显示接口,而rk3566只有一个显示控制器,即VOP,RK356X 平台只有一 VOP,但是分出不同的 PORT,RK3566 有 2 个 PORT 分别为 VP0、VP1。而我的项目上使用的是edp 与HDMI显示是通过VP0,而MIPI 与LVDS 使用的是VP1。而这就是设计到了多屏抢占与热插拔的问题了。而我们本文就是该问题引起的,我发现我的edp屏不管插入或是拔出其状态一直是处于连接状态,而在多屏抢占时,又将EDP设置的优先级设置的最高,这就导致了即使我们插入了HDMI无信号输出,而上面的问题也得以解释了,而上电初始化时,插入HDMI时,系统会优先加载HDMI显示模块,所以的HDMI就会有显示,且处于连接状态。

多屏抢占与热插拔分析:

display_subsystem: display-subsystem {compatible = "rockchip,display-subsystem";memory-region = <&drm_logo>, <&drm_cubic_lut>;memory-region-names = "drm-logo", "drm-cubic-lut";ports = <&vop_out>;devfreq = <&dmc>;route {route_dsi0: route-dsi0 {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp0_out_dsi0>;};route_dsi1: route-dsi1 {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp0_out_dsi1>;};route_hdmi: route-hdmi {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp1_out_hdmi>;};route_lvds: route-lvds {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp1_out_lvds>;};route_edp: route-edp {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp0_out_edp>;};route_rgb: route-rgb {status = "disabled";logo,uboot = "logo.bmp";logo,kernel = "logo_kernel.bmp";logo,mode = "center";charge_logo,mode = "center";connect = <&vp2_out_rgb>;};};};

抢占:
route的节点是有顺序优先关系的, 如上, route_hdmi在route_mipi之前, 且它们都使用vopb做为显示输出, 当hdmi和mipi同接入时, hdmi会先将vopb抢走, 这样mipi就分配不到vop了, 现象为: hdmi显示, mipi不显示。
热拔插:
        如上抢占内容可知, 当hdmi插入时, 现象为hdmi显示, mipi不显示.但当hdmi处于拔出状态时, route_hdmi这一路将不会工作, 也即可以实现;hdmi不显示, mipi显示.由此实现同一配置, 插入hdmi和拔出hdmi启动过程通路状态不同,这里我们将hdmi的抢占优先级设置为最高。

还有个重要的配置口,就是edp (hpd-gpios) 该gpio 属性。

hpd-gpios 对于 Box-to-box Connection,一般需要 HPD功能,需要配置该属性。

&edp {status = "okay";//force-hpd;hpd-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;ports {port@1 {reg = <1>;edp_out_edp: endpoint {remote-endpoint = <&panel_in_edp>;};};};
};

编译下载,问题得以解决!!

IBOX66:/d/dri/0 # cat summary   //该目录下可查看显示连接状态
Video Port0: DISABLED
Video Port1: ACTIVEConnector: LVDS-1bus_format[1011]: RGB888_1X7X4_SPWGoverlay_mode[0] output_mode[0] color_space[0]Display mode: 1280x800p60clk[71100] real_clk[71100] type[48] flag[a]H: 1280 1390 1400 1440V: 800 810 813 823Cluster0-win0: ACTIVEwin_id: 0format: AB24 little-endian (0x34324241)[AFBC] SDR[0] color_space[0] glb_alpha[0xff]rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0csc: y2r[0] r2y[0] csc mode[0]zpos: 0src: pos[0, 0] rect[1280 x 800]dst: pos[0, 0] rect[1280 x 800]buf[0]: addr: 0x00000000017fc000 pitch: 5120 offset: 0Esmart0-win0: ACTIVEwin_id: 4format: AB24 little-endian (0x34324241) SDR[0] color_space[0] glb_alpha[0xff]rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0csc: y2r[0] r2y[0] csc mode[0]zpos: 1src: pos[0, 0] rect[1280 x 48]dst: pos[0, 0] rect[1280 x 48]buf[0]: addr: 0x0000000000bd8000 pitch: 5120 offset: 0
Video Port2: DISABLED

rk3566 HDMI 热插拔HDMI显示无信号相关推荐

  1. 电脑显卡html接口无信号,笔记本电脑HDMI连接电视机显示无信号的解决方法

    记本HDMI连接电视机显示无信号,怎么处理?现在的液晶电视,HDMI(高清晰度多媒体接口)是标配,通常是用PC或是平板电脑输出影像,通过电视屏幕来显示,当遇到笔记本HDMI连接电视机显示无信号该怎么解 ...

  2. Dell服务器HDMI转接没显示,戴尔电脑为什么用hdmi线连接电视,却显示无信号

    戴尔电脑为什么用hdmi线连接电视,却显示无信号以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 戴尔电脑为什么用hdmi ...

  3. 笔记本通过扩展坞扩展显示器,显示器显示无信号

    mark一下困扰自己2个星期的问题 现象描述 2台轻薄笔记本,都是金属外壳,2空插座,通过金属扩展坞连接显示器后一直显示无信号.期间反复确认扩展坞和显示器有无问题,折腾了好久.最后的原因为笔记本静电. ...

  4. 电视打开显示本网络无电视服务器,当贝市场教你网络机顶盒显示无信号怎么办?...

    原标题:当贝市场教你网络机顶盒显示无信号怎么办? 最近发现很多网友反映家里的机顶盒在使用的时候突然提示没信号,现在楼主来告诉大家,网络机顶盒在使用的时候显示无信号怎么办? 网络机顶盒无信号一般是网络机 ...

  5. 计算机投影仪显示无信号如何解决,投影仪无信号输入的解决办法是什么?

    Lin_4987 2015-11-05 13:27 笔记本电脑连接投影仪无信号: 1.检查投影机与电脑连接使用的是VGA线还是HDMI线: 2.如果是VGA连接,请检查投影机是否选择到VGA或者电脑模 ...

  6. 树莓派连接电视显示器或电脑显示器,显示无信号

    树莓派连接电视显示器或电脑显示器,显示无信号 *1.*将sd卡通过读卡器接入电脑打开盘符里的config.txt文件 *2.*将 # uncomment if you get no picture o ...

  7. aoc显示器开机显示计算机,_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_...

    网友求助:_求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面_ 问题求各路大神帮忙解决,配置如下 电脑开机AOC显示器显示无信号,每次都要重新拔了再插才有画面 ...

  8. 计算机键盘指示灯不亮也不启动不了机,电脑开机时滴滴响 开不了机,显示器显示无信号,键盘灯不亮...

    电脑开机时滴滴响 开不了机,显示器显示无信号,键盘灯不亮以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 电脑开机时滴滴响 ...

  9. 计算机网络无法显示信号,电脑显示器无信号原因 电脑显示无信号的解决步骤...

    朋友们在使用电脑时有没有遇到过电脑显示无信号的情况呢,遇到此类情况我们一定会想办法去解决它.那么电脑显示无信号的原因是什么呢,它有什么解决办法呢,下面小编就来给大家介绍下吧. 电脑显示无信号原因 1. ...

最新文章

  1. 当老板说要把公司当家时,他在说...
  2. PHP 4.4.7 中用 PEAR 类库操作 ZIP 压缩文件
  3. qt中label画圆代表指示灯_【Qt编程】基于QWT的曲线绘制及图例显示操作——有样点的实现功能...
  4. SQL逻辑查询语句执行顺序
  5. SpringBoot中通过自定义缓存注解(AOP切面拦截)实现数据库数据缓存到Redis
  6. Tornado入门三
  7. 人类染色质开放状态数据库,ATACdb使用介绍
  8. Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory‘
  9. 使Jackson和Mybatis支持JSR310标准
  10. 基础知识—数据类型-第一个C++程序
  11. linux rdma服务,容器网络启用RDMA高速通讯-Freeflow
  12. FlexSPI driver用法
  13. [BZOJ4811][YNOI2017]由乃的OJ(树链剖分+线段树)
  14. python创建矩阵_python中Numpy的属性与创建矩阵
  15. Luyten 启动报错 This Application requires a Java Runtime Environment 1.7.0-1.8.0问题
  16. jQuery获取表单数据
  17. 必备技能10:管理学类重要期刊名录 -- UTD24 和 FT50
  18. hikaricp mysql_HikariCP
  19. matlab一维插值extrap,MSC Patran中基于Matlab插值函数的多场创建
  20. 移动设备管理与OMA DM 协议 V5(3)

热门文章

  1. 移动开发者如何获取免费流量
  2. PC端如何使用ITunes无线连接ios手机
  3. 苏宁回应股权质押给淘宝;日本政府用 AI 帮民众找对象;魅族回应 “暗中给手机植入木马” | EA周报...
  4. 没错,我真的拒了蚂蚁金服的Offer
  5. 弱电机房工程搬迁工作内容(方案)
  6. 程序设计思维与实践 Week14 限时大模拟A - 猫睡觉问题
  7. Android侧滑返回分析和实现(不高仿微信),flutter项目实战
  8. 苹果IOS企业开发者账号怎么申请——苹果账号申请记录(未完待续)
  9. ubuntu 下使用 Python 和 SL4A 的 Android 应用程序构建您自己的android开发环境
  10. Ubuntu20.04配置velodyne激光雷达环境