MTK LK阶段 display框架

文章概述了LK阶段MTK平台的早期初始化,重点涉及display流程,LCM驱动匹配,framebuffer配置,DDP模块设置,以及logo显示和系统启动过程。

LK阶段display流程
./lk/kernel/main.c:186:
kmain
    // do any super early platform initialization
    platform_early_init();
    thread_t *thread_bs2 = thread_create("bootstrap2", &bootstrap2, NULL, DEFAULT_PRIORITY, DEFAULT_STACK_SIZE);
    bootstrap2
        arch_init();
        fs_init();
        platform_init(); //./lk/platform/mt6735/platform.c:974
            /* framebuffer的大小
            透过读id找到现在插入的LCM,根据LCM的分辨率申请相应大小的frame buffer并确定frame buffer起始地址*/
            g_fb_size = mt_disp_get_vram_size();
            //framebuffer的起始地址
            g_fb_base = mblock_reserve_ext(&g_boot_arg->mblock_info, g_fb_size, 0x10000, 0x80000000, 0, "framebuffer");
            //mtk display系统初始化 ddp中各个模块和lcm配置初始化
            mt_disp_init((void *)g_fb_base);
                primary_display_init(NULL);
                    /* 根据 lcm_name 名字从 lcm_driver_list 数组表当中寻找lcm驱动进行匹配。并将找到的lcm驱动赋值到plcm->drv中,
                        那么返回的plcm变量则包含lcm_drv的访问地址,这样就能访问lcm驱动的接口了 */
                    disp_lcm_handle *disp_lcm_probe(char *plcm_name, LCM_INTERFACE_ID lcm_id)
                        /* 判断LCM_DRIVER链表中lcm驱动的数量,如果为1个就直接拿来用给设备,不需要调用compare_id函数,如果多个就需要匹配硬件id号了。 */
                        lcm_drv->compare_id() 
                        for (i=0; i<_lcm_count(); i++) {
                            /*vendor / mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c
                              我们一般需要把厂家提供的lcm_driver添加到lcm_driver_list数组,*/
                            lcm_drv= lcm_driver_list[i]; 
                            DISPDBG("we will check lcm: %s\n", lcm_drv->name);
                    /* 同kernel流程一样 */
                    lcm_param = disp_lcm_get_params(pgc->plcm);
                    if (primary_display_mode == DIRECT_LINK_MODE) {
                        _build_path_direct_link();
                            pgc->dpmgr_handle = dpmgr_create_path(DDP_SCENARIO_PRIMARY_DISP, pgc->cmdq_handle_config);
                            
                            //根据lcm接口类型获得目标模块,这里为DI

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值