本申请涉及热插拔检测与处理,特别是涉及一种基于hdmi(high-definition multimedia interface,高清多媒体接口)的热插拔检测与处理方法、装置及存储介质。
背景技术:
1、hdmi是一种数字音视频接口标准,广泛用于连接电视、显示器、投影仪、音响系统和计算机等设备。hdmi标准的不断演进,如hdmi 2.0和hdmi 2.1,提供更高的带宽和支持更高的分辨率和刷新率,使其在高清和超高清视频传输方面更为重要。hdmi标准自身包括对热插拔的支持。这意味着当你在计算机或其他设备运行时插入或拔出hdmi连接线时,设备通常会自动检测并进行相应的调整,以适应新的连接状态。
2、目前,hdmi热插拔技术已经在市场上普遍存在。它们的热插拔检测(hpd)原理是:当显卡端(source)通过hdmi接口的hpd引脚检测到显示器与显卡端(source)相连时(hpd从低电平到高电平),显卡端(source)认为已经有显示设备连接,并通过hdmi接口中的显示器数据通道ddc(ddc i2c总线)读取显示器edid存储器中存储的edid数据(扩展显示器识别数据),如果检测到显示器的工作模式范围与显卡端(source)的输出设置相适应,则显卡端(source)就激活tmds信号发送电路发送正常的hdmi信号给显示设备。当显卡端(source)通过hpd引脚检测到显示器的hdmi接口与显卡端(source)断开时,显卡端(source)就断开tmds信号发送电路,停止发送hdmi信号。
3、显卡端(source)对hpd信号的电压存在要求,即当显卡端(source)检测到hdmi接口上的hpd引脚电压大于2v时,判断为hdmi显示设备(sink)通过hdmi接口与显卡端(source)连接:当检测到hpd引脚电压小于0.8v时,则判断为hdmi显示设备(sink)通过hdmi/dvi接口与显卡端(source)之间的连接已经断开。在日常生活中,插拔显示器的hdmi口抑或是插拔显卡端的hdmi口是再稀松平常不过的操作,然而由于部分型号的显示器在热插拔的时候会存在电平抖动的情况,导致内核态也相应做出一些异常处理,例如断开连接时内核本应该上报1个断开连接的热插拔事件,现在却变成了拔出---接入---拔出的情况,上报了3个热插拔事件,反之接入连接时则反。在传统的热插拔机制下,显示器肉眼直观呈现出来的就是显示器在拔出的过程中屏幕灭了亮起再灭,显然这种显示现象是异常的。
技术实现思路
1、本发明针对上述问题,提供了一种基于hdmi(high-definition multimediainterface,高清多媒体接口)的热插拔检测与处理方法、装置及存储介质,主要应用于显卡驱动技术领域,作为一种基于hdmi的热插拔检测与处理方法,旨在兼容多种显示器,完善传统的热插拔检测与处理机制,让gpu更好地处理热插拔事件,使同一显卡在不同型号的显示器下显示效果均符合设计预期。
2、本发明的第一方面,一种基于hdmi的热插拔检测与处理方法,包括:
3、当检测到hdmi热插拔信号为拔出并且获取不到显示器edid信息时,判定为hdmi端口断开连接;
4、当检测到hdmi热插拔信号为接入并且能获取到显示器edid信息时,判定为hdmi端口建立连接;
5、当检测到hdmi热插拔信号为接入并且获取不到显示器edid信息或者检测到hdmi热插拔信号为拔出但能获取到显示器edid信息时,重新进行热插拔信号检测并限定重新检测次数阈值。
6、在一实施例中,若重新检测次数超过阈值,则进行报错。
7、在一实施例中,利用detect回调函数探测hdmi connector的连接状态。
8、在一实施例中,调用drm_get_edid函数读取显示器的edid信息。
9、在一实施例中,调用drm_syssfs_hotplug_event产生一个drm uevent,调用drm_client_dev_hotplug向用户发送热插拔事件。
10、本发明的第二方面,提供了一种基于hdmi的热插拔检测与处理装置,所述装置包括用于检测hdmi热插拔信号的热插拔信号获取模块、用于获取显示器edid信息的edid信号获取模块和数据处理模块,所述数据处理模块根据所述hdmi热插拔信号和所述显示器edid信息判定所述hdmi端口是否建立连接并进行处理,具体包括:
11、当检测到hdmi热插拔信号为拔出并且获取不到显示器edid信息时,判定为hdmi端口断开连接;
12、当检测到hdmi热插拔信号为接入并且能获取到显示器edid信息时,判定为hdmi端口建立连接;
13、当检测到hdmi热插拔信号为接入并且获取不到显示器edid信息或者检测到hdmi热插拔信号为拔出但能获取到显示器edid信息时,重新进行热插拔信号检测并限定重新检测次数阈值。
14、根据本公开实施例的第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于hdmi的热插拔检测与处理方法。
15、根据本公开实施例的第四方面,提供一种非临时计算机可读存储介质,所述存储介质上存储有计算机指令,所述指令被处理器执行时实现上述基于hdmi的热插拔检测与处理方法。
16、本发明提供的一种基于hdmi(high-definition multimedia interface,高清多媒体接口)的热插拔检测与处理方法、装置及存储介质,克服了传统热插拔处理流程在部分显示器上存在电平跳变,而后产生多个热插拔事件导致显示器显示异常的问题,本发明改进了热插拔检测逻辑和处理流程,兼容多种显示器的热插拔事件处理,解决了显卡端热插拔或者是显示器端在热插拔过程中存在的桌面闪屏问题,给用户带来了更好的桌面使用体验。
1.一种基于hdmi的热插拔检测与处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于hdmi的热插拔检测与处理方法,其特征在于,若重新检测次数超过阈值,则进行报错。
3.根据权利要求1所述的基于hdmi的热插拔检测与处理方法,其特征在于,利用detect回调函数探测hdmi connector的连接状态。
4.根据权利要求1所述的基于hdmi的热插拔检测与处理方法,其特征在于,调用drm_get_edid函数读取显示器的edid信息。
5.根据权利要求1所述的基于hdmi的热插拔检测与处理方法,其特征在于,调用drm_syssfs_hotplug_event产生一个drm uevent,调用drm_client_dev_hotplug向用户发送热插拔事件。
6.一种基于hdmi的热插拔检测与处理装置,其特征在于,所述装置包括用于检测hdmi热插拔信号的热插拔信号获取模块、用于获取显示器edid信息的edid信号获取模块和数据处理模块,所述数据处理模块根据所述hdmi热插拔信号和所述显示器edid信息判定hdmi端口是否建立连接并进行处理,具体包括:
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述基于hdmi的热插拔检测与处理方法。
8.一种非临时计算机可读存储介质,所述存储介质上存储有计算机指令,其特征在于,所述指令被处理器执行时实现如权利要求1至5任一项所述基于hdmi的热插拔检测与处理方法。