高通平台点亮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 ...
随机推荐
- fnd_profile.value('AFLOG_ENABLED')的取值 和配置文件相关SQL
SELECT * FROM FND_PROFILE_OPTIONS_VL TT WHERE TT.PROFILE_OPTION_NAME LIKE '%AFLOG%' FND:启用调试日志 详细的参考 ...
- CCS3属性之text-overflow:ellipsis;的用法和注意之处
语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象内文本溢出时不显示省略标记(...),而是将溢出的部分裁切掉. ellipsi ...
- 开源软件free download manager在windows defender中报毒
从官网上下载的fdm lite 3.9.6,从图片中可以看出安装包有数字签名,windows defender报毒,在线杀毒也检出木马,官网的程序更新到了3.9.6版本,在sourceforge上的源 ...
- 帮初学者改代码——有多少青春可以挥霍之“c语言 多重排序”
原文:“c语言 多重排序” 原代码: #include<stdio.h> #include<string.h> struct A { char name[100]; int g ...
- COM编程之五 动静态链接
[1]静态链接 静态链接是指由链接器在链接时将库的内容加入到可执行程序中的做法. 链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序. 函数和数据被编译 ...
- 由 "select *" 引发的“惨案”
今天凌晨做发布, 要合并多个分数据库的表数据到主数据库中, 有 30+ 分数据库. 前面都比较顺利, 在临近结束时,突然发现一个字段的值插入错误. 有一个表 T,字段分别为 (f1, f2, f3, ...
- hide your website's wordpress info/path/way
Hide Wordpress Info of your website plugin hide-wp 使用apache语句和wp方法重写 但这个插件有个局限就是,你的网站使用的wordpress的话, ...
- MySQL存储过程循环添加数据
经常需要测试数据,写个存储过程方便日后使用. DROP PROCEDURE IF EXISTS add_member; DELIMITER $$ CREATE PROCEDURE add_member ...
- Extended Data Type Properties [AX 2012]
Extended Data Type Properties [AX 2012] This topic has not yet been rated - Rate this topic Updated: ...
- linux string 操作
http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 字符替换 sed -i 's/3306/3308/g' my.cnf my ...