高通平台点亮LCD个人总结
高通平台LCD模块大致分为两部分:KERNEL和LK。在进行点屏之前,应该认真查看LCD原理图,弄清楚LCD亮屏需要满足的条件和上电时序,同时可以跟LCD IC原厂拿到初始化代码。
首先点亮KERNEL。
在点亮KERNEL之前,先进入bootable/bootloader/lk/target/msm****/rules.mk文件,将DEFINES += DISPLAY_SPLASH_SCREEN=1置0,disable掉LK中的显示。然后正式进入内核开始点亮LCD。对于一个新的项目,建议先进入msm****-mtp.dtsi或者msm****-mdss.dtsi文件,找到它include的相应的屏配置文件,因为这个是平台默认使用的LCD,我们可以借鉴它来实现点亮屏。我这里项目中默认使用的是#include "dsi-panel-sharp-dualmipi0-wqxga-video.dtsi",而我需要点亮的是信利CMD屏,于是复制dsi-panel-sharp-dualmipi0-wqxga-video.dtsi并重命名为dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi,因为是双DSI,所以需要重命名两个dtsi文件。进入重命名后的dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi文件,将sharp修改为truly,将video修改为cmd,将“qcom,mdss-dsi-panel-width” 和“qcom,mdss-dsi-panel-height” 修改成相应的分辨率(其他比如hfp属性可以先不修改),将屏初始化代码写入“qcom,mdss-dsi-on-command”,同时大致浏览一下其他属性值,比如broadcast,如果双dsi使用的只有一个IC,那么这个属性必须去掉,否则会导致系统进入Android动画之后,机器挂掉。具体去掉方法是在dualmipi0中删除“qcom,cmd-sync-wait-broadcast”,在dualmipi1中删除“qcom,cmd-sync-wait-broadcast”和“qcom,cmd-sync-wait-trigger”。当然这个还是不会影响LCD的显示的。接着进入msm****-mtp.dtsi文件,将屏的dtsi文件include进来,比如#include "dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi"和#include "dsi-panel-truly-dualmipi1-wqxga-cmd.dtsi",然后将DSI设置成主要接口,即qcom,mdss-pref-prim-intf = "dsi",再设置PANEL NODE,即qcom,dsi-pref-prim-pan = <&dsi_dual_truly_cmd_0>和qcom,dsi-pref-prim-pan = <&dsi_dual_truly_cmd_1>,注意的是这个值需要和屏dtsi文件里面的值保持一致。然后再添加&dsi_dual_truly_cmd_0相关代码,注意由于LK中disable掉显示的,这里面的qcom,cont-splash-enabled也应该disabled掉。接下来就需要根据原理图来设置LCD和背光的各路电压了,一般系统默认是有添加Reset的gpio口的,找到qcom,platform-reset-gpio的位置,仿照添加其他gpio口,比如lcd_reg_en供电1.8v,tps的正负5V,背光的使能口等等。这个时候注意各GPIO口的分类,PMU端和CPU端的GPIO口配置是不一样的。到此dtsi文件就处理完毕了,接下来进入MDSS文件夹下,打开mdss_dsi.c文件,还是仿照Reset口,获取其他gpio相应的属性节点,同时在mdss_dsi.h中声明。然后进入mdss_dsi_panel.c文件,在mdss_dsi_request_gpios中模仿Reset口申请其余gpio口,接下来就是重中之中的复位函数mdss_dsi_panel_reset了,这里面一定要根据上电时序来设置各路gpio口的高低电平的有效值以及下电时关闭各路电压。
到此理论上来说,KERNEL应该可以点亮了。接下来介绍下LK的点亮,记得先将将DEFINES += DISPLAY_SPLASH_SCREEN=1,再将qcom,cont-splash-enabled。
在bootable\bootloader\lk\dev\gcdb\display\include目录下,复制panel_sharp_wqxga_dualdsi_video.h并重命名panel_truly_wqxga_dualdsi_cmd.h,进入文件将sharp改为truly,video改为cmd,这里需要注意几点,一是结构体panel_config中的panel_node_id,需要跟dtsi中的名称保持一致;二是panel_config中的panel_type,video是MIPI_VIDEO_PANEL(0),cmd是MIPI_CMD_PANEL(1);三是初始化代码,小于或等于2个参数的,数据占一行,参数写在前面,datatype写在后面,dtsi里面datatype是29的且只有2个数值的,在LK里面如果只写成一行,则datatype写成23,写成二行就用29,并补0xff;大于2个参数的,第一行第一个数和第二个数之和是数值的个数(第2个一般是0x00),后面两个是datatype,第二行开始写数值,结尾一行不足4个的填写0xff. (23,15,05对应80,29和39对应c0).四是在结构体mipi_dsi_cmd中,第一个参数是相应数组的总个数,包括填充的oxff在内,同时初始化命令的个数一定要修改正确,否则会导致屏不亮。在点亮LK时,建议打开命令发送完成的打印信息mipi_dsi.c--》mdss_dual_dsi_cmd_dma_trigger_for_panel--》dprintf(INFO, "Panel CMD: command mode dma tested successfully\n");有多少条命令发送成功,就有多少个successfully打印的信息。然后将此panel_truly_wqxga_dualdsi_cmd.h文件include进oem_panel.c文件,然后仿照参考的panel_sharp_wqxga_dualdsi_video.h文件对应的SHARP_WQXGA_DUALDSI_VIDEO_PANEL添加相应的truly代码,主要是oem_panel_select和init_panel_data两个函数,添加case TRULY_WQXGA_DUALDSI_CMD_PANEL和修改panel_id;接下来就是在display.h中仿照Reset添加各路gpio口,等同于内核中mtp文件中的添加gpio口代码。最后就是target_display.c文件中的target_panel_reset复位函数,还是仿照Reset的配置和电平设置,来配置和设置其他各路GPIO相应的高低电平,注意gpio口的分类即可,这个和内核中的复位有点类似,只是LK和KERNEL中使用的函数可能有差异。
此致,点亮LCD的相关代码已经完成,这个时候LK和KERNEL应该都已经可以点亮了,如果不行,连接串口查看打印信息,解决跟LCD相关的异常信息;将各路GPIO口飞线测量各路电压是否正常;使用示波器测试reset时序是否正常。
当然,首先需要观察的就是背光是否起来,如果背光不亮,也可以先使背光常亮,来排除其他的问题。
高通平台点亮LCD个人总结的更多相关文章
- Android高通平台调试Camera驱动全纪录
项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...
- 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】
本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...
- 高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_L ...
- 高通平台读写nv总结
一,引言 1. 什么是NV 高通平台的NV,保存了系统运行过程中各个模块可能用到的一些参数值,它是以单个文件的形式保存在EFS中,但用户是不能随意访问的,只能通过QXDM来进行读 ...
- 高通平台读写nv总结【转】
本文转载自:https://blog.csdn.net/suofeng12345/article/details/52713993 一,引言 1. 什么是NV 高通平台的NV,保 ...
- 高通平台如何避免误入FFBM模式
前面两篇博客分别介绍了通过fastboot和QFIL工具退出FFBM模式的方法.虽然售后的同学可以这么指导用户做恢复,但步骤多操作也麻烦,且属于事后处理,如果大面积高概率地出现,会严重影响用户体验.这 ...
- 高通平台获取secure boot,串号等状态
adb shell下 运行./system/bin/r address 其中address对应各个flag参数的地址,具体如下: 无法打开/dev/mem节点(没有该节点),这时只需在内核配置中选上C ...
- 高通平台如何使用QPST抓DUMP
一 :确认手机状态 手机系统死机白屏后,使用USB线 连接手机和计算机.打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP ...
- 【shell】分享高通平台刷版本简单的一个shell脚本
#!/bin/shadb wait-for-deviceadb reboot bootloaderecho "start download"wait 5sudo fastboot ...
随机推荐
- 夺命雷公狗---DEDECMS----18dedecms之无可奈何标签-sql标签取出今天更新
我们在一些开发时候遇到普通标签都解决不了的问题的时候可以尝试下我们dedecms自带的sql标签,几乎可以完成任何的查询需求 语法如下所示: 我们在这里将刚才首页今天更新那块给改写下,原先的是: {d ...
- 10个免费的PHP编辑器/开发工具
转自: http://www.iteye.com/news/22672 一个好的编辑器或开发工具,能够极大提高我们的开发效率.下面介绍10个免费.强大的PHP编辑器/开发工具.这些编辑器拥有调试器.增 ...
- access调用联系
using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; us ...
- 【crunch bang】程序中文化
在应用程序中配置使用中文显示. # apt-get install locales # dpkg-reconfigure locales 安装文泉驿-微米黑字体: sudo apt-get insta ...
- 《Focus On 3D Terrain Programming》中一段代码的注释三
取自<Focus On 3D Terrain Programming>中的一段: //--------------------------------------------------- ...
- JVM总结
1. 内存分布: 1). 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.线程私有.如果线程正在执行的是一个J ...
- PHP用substr截取字符串出现中文乱码问题用mb_substr
PHP用substr截取字符串出现中文乱码问题用mb_substr实例:mb_substr('截取中文乱码问题测试',0,5, 'utf-8'); 语法 : string substr (string ...
- Oracle通过sqlplus spool导入导出数据
第一部分(实例,主要分两步),第二部分(参数小总结),第三部分(完全参数总结) 第一部分 第一步 :这是我的导出数据的脚本call.sqlconn scott/tigerset echo offset ...
- golang的helloworld
新建源码文件hello.go mkdir -p /work/goTest/ cd /work/goTest/ vim hello.go 编码hello.go文件: package main impor ...
- jquery函数和javascript函数的区别
一.窗口加载:http://www.w3school.com.cn/js/js_library_jquery.asp 在 JavaScript 中,您可以分配一个函数以处理窗口加载事件: JavaSc ...