底层流程:

[display-sys.c] 
mode节点建立
HDMI set auto 流程 
写响应函数mode_store()   
HDMI set auto 流程
----->
[rockchip-hdmi-sysfs.c] hdmi_set_mode()
 
  HDMI set auto 流程
 
HDMI set auto 流程
 
其中hdmi_find_best_mode 会返回最佳分辨率    注意参数二为0
 
HDMI set auto 流程
 
然后调用hdmi_submit_work()  注意参数HDMI_SET_VIDEO
 
--------->
 [rockchip-hdmi-core.c] hdmi_submit_work()
 
HDMI set auto 流程
 核心是调用hdmi_work_queue 函数
 
------->
[rockchip-hdmi-core.c] hdmi_work_queue()
HDMI set auto 流程
 这里event  == HDMI_SET_VIDEO  上面有提到
 
HDMI set auto 流程
 
继续跟踪hdmi_wq_set_video()
 
------>
[rockchip-hdmi-core.c] hdmi_wq_set_video()
 
HDMI set auto 流程
 hdmi_wq_set_video 最后会调用hdmi_set_lcdc()
 
HDMI set auto 流程
 
------>
跟踪hdmi_set_info()
这个函数比较复杂挑重点:
首先 hdmi->vic !=0 的 这里是在hdmi_find_best_mode 中 若失败会返回0  正常会返回最佳的vic 值
 
HDMI set auto 流程
HDMI set auto 流程
 
其中hdmi_mode[]数组就是预置支持的分辨率:
 
HDMI set auto 流程
 
 
HDMI set auto 流程
 
匹配到之后调用合适时序参数!
 
 
所以重点其实就在于:vic的取值!如下:
HDMI set auto 流程
 
前面提到过 这个值来自于:hdmi_find_best_mode()函数
 
详细看这个函数:
HDMI set auto 流程
 
会到开头:
HDMI set auto 流程
这个函数参数vic 为0
 
所以看第二个if语句:
核心就是,list_entry()
 
HDMI set auto 流程
 
HDMI set auto 流程
 
HDMI set auto 流程
 
所以最终是在找HDMI支持的edid列表,返回列表中第一个元素的vic
 
 
那么现在重点现在就是 hdmi->edid.modelist 何时获得的????
 
 
 

相关文章:

  • 2021-10-31
  • 2022-12-23
  • 2022-03-09
  • 2022-12-23
  • 2022-02-18
  • 2023-02-10
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-12
  • 2021-12-06
  • 2021-11-23
  • 2021-11-25
  • 2022-02-22
相关资源
相似解决方案