4.1. LCD 
参考文档: 
1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf

2) 80-NN766-1_A_Linux_Android_Display_Driver_Porting_Guide.pdf

3) 80-NH713-1_F_DSI_Timing_Parameters.xlsm

LCD调试主要有三个任务: 
4.1.1. 供电 
➢ DSI供电 
8974芯片内部的DSI模块需要三个外部供电 
mdss_dsi0: qcom,mdss_dsi@fd922800 { 
compatible = “qcom,mdss-dsi-ctrl”; 
label = “MDSS DSI CTRL->0”; 
cell-index = <0>; 
reg = <0xfd922800 0x1f8>, 
<0xfd922b00 0x2b0>, 
<0xfdf30000 0x108>; 
reg-names = “dsi_ctrl”, “dsi_phy”, “mmss_misc_phys”; 
//vdd-supply = <&pm8941_l22>; 
vdd-supply = <&pm8941_lvs3>; // lvs3 is for LCD vddio, not for dsi 
vddio-supply = <&pm8941_l12>; 
vdda-supply = <&pm8941_l2>; 
但是,根据高通的参考原理图,只有两个供电vddio-supply, vdda-supply是需要的。其中lvs3是用来给LCD vddio供电,不是给dsi用的。 
➢ LCD供电 
根据原理图看看LCD需要哪些供电 
qcom,mdss_dsi@fd922800{ 
qcom,dsi-pref-prim-pan = <&dsi_jdi_1080_vid>; 
qcom,platform-disp-en-gpio = <&msmgpio 82 0>; 
qcom,platform-disp-ep-gpio = <&msmgpio 51 0>; 
}; 
这两个GPIO是用来控制供电的,AVDD,VDD。 
供电需要根据具体的原理图来改。 
➢ GPIO配置 
主要有两个GPIO需要配置,reset和te。根据原理图配置 
qcom,platform-reset-gpio = <&pm8941_gpios 19 0>; 
qcom,platform-te-gpio = <&msmgpio 12 0>; 
4.1.2. 背光 
根据不同类型的屏幕,选择不同的背光,一般TFT用WLED来做背光,OLED是自发光的,背光电路由屏上的驱动IC提供。

    qcom,leds@d800 {
status = "okay";
qcom,wled_0 {
label = "wled";
linux,name = "wled:backlight";
linux,default-trigger = "bkl-trigger";
qcom,cs-out-en;
qcom,op-fdbck = <0>;
qcom,default-state = "on";
qcom,max-current = <20>;
qcom,ctrl-delay-us = <0>;
qcom,boost-curr-lim = <3>;
qcom,cp-sel = <0>;
qcom,switch-freq = <2>;
qcom,ovp-val = <2>;
qcom,num-strings = <2>;
qcom,id = <0>;
};
};

需要注意max-current,高通默认是25mA,但是LCD芯片的数据手册里大部分是20mA。设置过高,会导致屏幕发烫,多耗电。 
4.1.3. LCD驱动 
LCD的驱动已经由Vendor厂商做好了,除了一些GPIO的配置可能需要加入到驱动文件,剩下的主要是制作LCD的配置文件。 
&mdss_mdp { 
dsi_jdi_1080_vid: qcom,mdss_dsi_jdi_1080p_video { 
qcom,mdss-dsi-panel-name = “jdi 1080p video mode dsi panel”; 
qcom,mdss-dsi-panel-controller = <&mdss_dsi0>; 
qcom,mdss-dsi-panel-type = “dsi_video_mode”;○1 
qcom,mdss-dsi-panel-destination = “display_1”; 
qcom,mdss-dsi-panel-framerate = <60>; 
qcom,mdss-dsi-virtual-channel-id = <0>; 
qcom,mdss-dsi-stream = <0>; 
qcom,mdss-dsi-panel-width = <1080>; 
qcom,mdss-dsi-panel-height = <1920>; 
qcom,mdss-dsi-h-front-porch = <96>;○2 
qcom,mdss-dsi-h-back-porch = <64>; 
qcom,mdss-dsi-h-pulse-width = <16>; 
qcom,mdss-dsi-h-sync-skew = <0>; 
qcom,mdss-dsi-v-back-porch = <16>; 
qcom,mdss-dsi-v-front-porch = <4>; 
qcom,mdss-dsi-v-pulse-width = <1>; 
qcom,mdss-dsi-h-left-border = <0>; 
qcom,mdss-dsi-h-right-border = <0>; 
qcom,mdss-dsi-v-top-border = <0>; 
qcom,mdss-dsi-v-bottom-border = <0>; 
qcom,mdss-dsi-bpp = <24>; 
qcom,mdss-dsi-underflow-color = <0xff>; 
qcom,mdss-dsi-border-color = <0>; 
qcom,mdss-dsi-on-command = [15 01 00 00 00 00 02 55 00○3 
05 01 00 00 78 00 02 29 00 
05 01 00 00 78 00 02 11 00]; 
qcom,mdss-dsi-off-command = [05 01 00 00 02 00 02 28 00 
05 01 00 00 79 00 02 10 00]; 
qcom,mdss-dsi-on-command-state = “dsi_lp_mode”; 
qcom,mdss-dsi-off-command-state = “dsi_hs_mode”; 
qcom,mdss-dsi-h-sync-pulse = <0>; 
qcom,mdss-dsi-traffic-mode = “burst_mode”; 
qcom,mdss-dsi-bllp-eof-power-mode; 
qcom,mdss-dsi-bllp-power-mode; 
qcom,mdss-dsi-lane-0-state; 
qcom,mdss-dsi-lane-1-state; 
qcom,mdss-dsi-lane-2-state; 
qcom,mdss-dsi-lane-3-state; 
qcom,mdss-dsi-panel-timings = [e7 4f 26 00 7e 6a 2a 3a 2d 03 04 00];○4 
qcom,mdss-dsi-t-clk-post = <0x04>; 
qcom,mdss-dsi-t-clk-pre = <0x1b>; 
qcom,mdss-dsi-bl-min-level = <1>; 
qcom,mdss-dsi-bl-max-level = <4095>; 
qcom,mdss-dsi-dma-trigger = “trigger_sw”; 
qcom,mdss-dsi-mdp-trigger = “none”; 
qcom,mdss-dsi-bl-pmic-control-type = “bl_ctrl_wled”; 
qcom,mdss-dsi-reset-sequence = <1 20>, <0 200>, <1 20>; 
qcom,mdss-pan-physical-width-dimension = <61>; 
qcom,mdss-pan-physical-height-dimension = <110>; 
}; 
}; 
从LCD厂商提供的资料,确定○1panel type是video还是command。LCD厂商也会提供○2porch值和初始化序列○3mdss-dsi-on-command。但是厂商提供的初始化序列的格式可能不匹配,需要我们自己来改。 
○4panel timings是用一个表计算出来的80-NH713-1_F_DSI_Timing_Parameters.xlsm,这个excel文件需要office2010及以上版本的软件才能运行里面的宏。 
4.1.4. LK里的显示驱动 
LK的显示驱动默认是关闭的。LK的显示和Kernel里的是独立的,增加LK里的显示是为了更快的显示Logo,给用户更好的体验。Kernel里第一屏数据大概要7秒左右才能显示出来。 
1) 使能LK里的显示 
bootable/bootloader/lk/target/msm8974/rules.mk 
DEFINES += DISPLAY_SPLASH_SCREEN=1 0->1 
2) 生成驱动文件 
使用高通的GCDG工具可以生成dtsi和h文件用于kernel和lk。 
device/qcom/common/display/tools/ 
perl parser.pl panel_nt35590_720p_cmd.xml panel

注意这个parser.pl需要xml库,需要安装以下两个库才能使用:libxml2, libxml-libxml-perl。 
如果驱动正常,手机开机是会显示一个小企鹅的图标。 
4.1.5. 调试 
1) 闪屏,花屏 
调节Porch值 
2) 背光亮度,颜色,对比度等 
需要和屏厂一起调试

高通平台手机开发之LCD的更多相关文章

  1. Android高通平台调试Camera驱动全纪录

    项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...

  2. 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】

    本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...

  3. 高通平台读写nv总结

    一,引言      1. 什么是NV       高通平台的NV,保存了系统运行过程中各个模块可能用到的一些参数值,它是以单个文件的形式保存在EFS中,但用户是不能随意访问的,只能通过QXDM来进行读 ...

  4. 高通平台读写nv总结【转】

    本文转载自:https://blog.csdn.net/suofeng12345/article/details/52713993 一,引言      1. 什么是NV       高通平台的NV,保 ...

  5. 高通平台点亮LCD个人总结

    点击打开链接 高通平台LCD模块大致分为两部分:KERNEL和LK.在进行点屏之前,应该认真查看LCD原理图,弄清楚LCD亮屏需要满足的条件和上电时序,同时可以跟LCD IC原厂拿到初始化代码. 首先 ...

  6. 高通平台如何避免误入FFBM模式

    前面两篇博客分别介绍了通过fastboot和QFIL工具退出FFBM模式的方法.虽然售后的同学可以这么指导用户做恢复,但步骤多操作也麻烦,且属于事后处理,如果大面积高概率地出现,会严重影响用户体验.这 ...

  7. 高通平台如何使用QPST抓DUMP

    一 :确认手机状态 手机系统死机白屏后,使用USB线 连接手机和计算机.打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP ...

  8. 高通平台获取secure boot,串号等状态

    adb shell下 运行./system/bin/r address 其中address对应各个flag参数的地址,具体如下: 无法打开/dev/mem节点(没有该节点),这时只需在内核配置中选上C ...

  9. 【shell】分享高通平台刷版本简单的一个shell脚本

    #!/bin/shadb wait-for-deviceadb reboot bootloaderecho "start download"wait 5sudo fastboot ...

随机推荐

  1. jQuery 效果 – 隐藏和显示

    在 jQuery 中可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素,以及使用 toggle() 方法能够切换 hide() 和 show() 方法. 隐藏.显示.切换,滑动 ...

  2. IP_ADD_MEMBERSHIP 失败

    /*将本机加入多播组*/ err = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,&mreq, sizeof(mreq)); if (err &l ...

  3. Android简易实战教程--第四十二话《Spinner下拉级联效果》

    本篇承接第四十话第四十话<Spinner> 参考博客:http://blog.csdn.net/yayun0516 进入正题: Strings加入第一级数据: <string-arr ...

  4. FLAnimatedImage -ios gif图片加载框架介绍

    简介 FLAnimatedImage 是 Flipboard 团队开发的在它们 App 中渲染 GIF 图片使用的库. 后来 Flipboard 将 FLAnimatedImage 开源出来供大家使用 ...

  5. springMVC源码分析--AbstractUrlHandlerMapping(三)

    上一篇博客springMVC源码分析--AbstractHandlerMapping(二)中我们介绍了AbstractHandlerMapping了,接下来我们介绍其子类AbstractUrlHand ...

  6. 从1....n中随机输出m个不重复的数

    void knuth(int n, int m) { srand((unsigned) time( NULL)); for (int i = 0; i < n && m; i++ ...

  7. Activiti 流程部署方式 activi 动态部署(高级源码篇)

    Activiti的流程 部署方式有很多种方式,我们可以根据activit工作流引擎提供的ap方式进行部署. 当然了实际需求决定你要使用哪一种api操作,后面的总结详细介绍了使用场景. 下面看一下部署方 ...

  8. 剑指Offer——搜狐畅游笔试题+知识点总结

    剑指Offer--搜狐畅游笔试题+知识点总结 情景回顾 时间:2016.9.24 10:00-12:00 地点:山东省网络环境智能计算技术重点实验室 事件:搜狐畅游笔试   注意事项:要有大局观,该舍 ...

  9. Eclipse打jar包,资源文件的读取

    最近的工作中需要将java程序打一个jar包,然后在Linux中供调用.程序中需要读取一个配置文件.遇到了三个问题.第一个是依赖的第三方Jar包打成Jar包后找不到:第二个问题是资源文件所在的文件夹打 ...

  10. Android View框架总结(八)ViewGroup事件分发机制

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上 ...