以8909为例,高通显示驱动主要涉及mdp、msmfb、dsi、lcd四个驱动,其中msmfb、lcd在dts中是挂载在mdp下面的,在kernel解析设备节点生成platform_device时是不会展开的。
显示驱动注册流程如下图:
备注:
-
dsi驱动探测在mdp驱动探测完成标志mdp_probe_done为真时才会继续探测。
-
lcd只有设备节点,没有注册platform_device和platform_driver,在dsi驱动探测函数中找到LCD设备节点,然后调用LCD初始化函数,直接通过设备节点解析dts信息。
-
在dsi驱动探测的最后,找到msmfb对应的设备节点,通过of_platform_device_create生成msmfb对应的platform_device,这样msmfb的设备和驱动才会匹配并调用probe函数。
-
在msmfb的探测函数中调用mdss_fb_register----->register_framebuffer,完成FB设备的注册。