您的位置:首页 > 其它

高通Qualcomm平台lk(light kernel)启动流程3——到高通lcm屏点亮

2017-10-08 20:11 447 查看
0lk 启动总体流程

1lk启动流程代码
lk app aboot abootc

lk target msm8953 target_displayc

lk dev gcdb display gcdb_displayc

更多相关文章:

《高通Qualcomm平台lk(light kernel)启动流程1——aboot_init()之前》:

http://blog.csdn.net/u014134180/article/details/78133916

《高通Qualcomm平台lk(light kernel)启动流程2——aboot_init()》:

http://blog.csdn.net/u014134180/article/details/78132580

《高通Qualcomm平台lk(light kernel)启动流程3——到高通lcm屏点亮》:

http://blog.csdn.net/u014134180/article/details/78177040

《[lcm] Qualcomm Android Display Subsystem 架构》

http://blog.csdn.net/u014134180/article/details/78129502

《[lcm] Qualcomm平台的显示屏lcd驱动移植步骤》:

http://blog.csdn.net/u014134180/article/details/78129499

《[lcm] Qualcomm平台兼容多显示屏lcd的方法&并从lk传输到kernel过程》:

http://blog.csdn.net/u014134180/article/details/78166978

《[lcm] Qualcomm平台显示屏lcd添加I2C读取功能》:

http://blog.csdn.net/u014134180/article/details/78176160

0、lk 启动总体流程



1、lk启动流程代码

lk/ app/ aboot/ aboot.c

aboot_init()
先判断如果是正常启动则
goto normal_boot
,否则就根据物理按键判断哪种启动方式,是
boot_into_fastboot
还是
boot_into_recovery
(《高通Qualcomm平台lk(light kernel)启动流程2——aboot_init()》)。



normal_boot
有一步就是初始化目标屏幕,
target_display_init()
是lcm在lk初始化唯一的一条入口函数。



lk/ target/ msm8953/ target_display.c

target_display_init()
函数里有很重要的函数就是
gcdb_display_init()
,里面有
do{…} while()
,这是高通原生lk LCD兼容的关键所在 。如果平台支持屏幕最大个数自动检测,msm8953支持兼容两个屏。(GCDB:Global Component Database全局组件数据库)



lk/ dev/ gcdb/ display/ gcdb_display.c

gcdb_display_init()

gcdb_display_init()初始化
pll_clk_func
power_func
bl_func
等功能,初始化好之后就调用msm_display_init()函数。

gcdb_display_init ()在该函数中有一个重要的函数就是 oem_panel_select(),该函数就是根据你的
hw_id
确定使用哪一款LCD,
hw_id
这个是在高通的私有代码中传过来的。

Oem_panel_select()->target/msm8953/oem_panel.c

msm_display_init()

msm_display_init()
里先Turn on panel,再Turn on backlight



Turn on backlight(bl_func(1))

gcdb_display_init ()
打开背光函数bl_func(1)指向函数
mdss_dsi_bl_enable




Turn on panel(power_func(1,…))

屏幕上电函数
power_func(1,…)
指向函数
mdss_dsi_panel_power


/* add by Bert for panel exist checking 20161125 Begin */
ret = mdss_dsi_panel_reset(enable);
if (ret) {dprintf(CRITICAL, "panel reset failed\n");return ret;}

ret = qup_blsp_i2c_device_init();
if (ret) {dprintf(CRITICAL, "qup blsp i2c touchpanel init ret=%d\n",ret);}

ret = goodix_ic_package_check();
if (ret==false) {dprintf(CRITICAL, "qup blsp i2c touchpanel check ret=%d\n",ret);}
/* add by Bert for panel exist checking 20161125 End */




static struct gpio_pin enable_gpio = {"msmgpio", 61, 3, 1, 0, 1};




Wu_Being博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!

《高通Qualcomm平台lk(light kernel)启动流程3——到高通lcm屏点亮》: http://blog.csdn.net/u014134180/article/details/78177040



如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: