[IMX6Q]LCD LVDS driver 注册流程

Kernel Version: 3.0.35


ldb.c: LVDS driver
mxc_dispdrv.c display通用注册handle接口,用于统一管理各种接口。
mxc_ipuv3_fb.c 平台核心驱动,最终用于注册driver到fb中。


ldb device 注册:
imx6q_add_ldb ->    //board-mx6-tek.c
    imx_add_ldb ->
        imx_add_platform_device ->     //device name是mxc_ldb
            imx_add_platform_device_dmamask ->
                platform_device_alloc    //分配一个platform_device
                platform_device_add    //添加device

ldb driver 注册:
ldb_init ->    //ldb.c
    ldb_probe ->
        mxc_dispdrv_register ->    //ldb_drv添加到dispdrv_list,后面注册fb会用到
            


fb device 注册:
mx6_tek_board_init ->    //board-mx6-tek.c,每个平台的init函数不同,可参考board-mx6-xxx.c
    imx6q_add_ipuv3fb ->
        imx_add_ipuv3_fb ->    //tek_fb_data和IPU的number成倍数对应,一个IPU可支持两个fb,IM6Q有两个IPU,所以可支持4个fb.
            imx_add_platform_device_dmamask ->     //device name: mxc_sdc_fb
                platform_device_alloc
                platform_device_add    //添加一个device

fb driver 注册:
mxcfb_init ->    //mxc_ipuv3_fb.c
    platform_driver_register ->    //driver name: mxc_sdc_fb, 有几个ipu就应该会probe相对的次数。
        mxcfb_probe ->
            mxcfb_init_fbinfo    //初始化fbinfo, 其中fb->var.active为FB_ACTIVATE_NOW
            mxcfb_option_setup    //从cmdline获取fb设置,如果没有,就默认使用board中tek_fb_data里的值。
                fb_get_options    //拿之前video=mxcfb0获取的值和mxcfbx做比较,如果相匹配,然后在解析对应后面的参数。x是当前对应的fb number号,所以这样就会一一对应。如果后面带:off字样,表示不使用此路通道。
            mxcfb_dispdrv_init     ->
                mxc_dispdrv_gethandle ->    //根据传进来的disp_dev name在dispdrv_list中匹配获取对应的driver handle,这里是获取的是ldb的handle,它的注册是在ldb_probe()的mxc_dispdrv_register实现的,它将自己添加到了dispdrv_list。
                    entry->drv->init    ->    //mxc_dispdrv.c 调用对应driver的init函数,这里就是ldb driver对应的init了。
                        ldb_disp_init ->    ldb.c
                            fb_find_mode    //寻找最合适的LCD参数
            mxcfb_register    ->

                register_framebuffer    //注册fb


lcd 参数匹配可参考:

http://blog.csdn.net/kris_fei/article/details/50401422


你可能感兴趣的:([IMX6Q]LCD LVDS driver 注册流程)