主要讲android中lcd驱动注册的主线,以msm7627为例。熟悉这个芯片的兄弟应该知道,msm7627的2d是通过一个mdp的硬件来做的,7627上这个硬件的版本是3.02。它支持EBI2/MDDI/RGB接口,这里以RGB接口为例,给大家看张图:
首先,在board.c文件里会注册panel/lcdc/mdp/framebuffer四个devices, 然后从panel的驱动初始化函数开始,做init,然后注册panel的驱动,如果驱动的name和device的name match上,则调用panel的probe函数,在该函数里会重新注册一个LCDC 设备。
接着,在LCDC的驱动初始化函数中,会注册LCDC的驱动,如果驱动的name和device的name match上,则调用LCDC的probe函数,在该函数里会重新注册一个MDP设备。
在MDP的驱动初始化函数中,会注册MDP的驱动,如果驱动的name和device的name match上,则调用framebuffer的probe函数,在该函数里会完成整个framebuffer的设置。
基本的framebuffer驱动注册过程就是这样,参数从panel开始,一步一步的传递到framebuffer.当用户调用framebuffer驱动时,函数调用一步一步的传递下去。
最后,顺带一下,目前的release中,framebuffer在lcdc mode下,只支持RGB565,如果客户需要支持其它的type,可以自己修改,难度也不大。