点击打开链接

高通平台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个人总结的更多相关文章

  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. 高通平台手机开发之LCD

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

  4. 高通平台读写nv总结

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 去掉list重复值

    /** * 去掉list重复值 */ public List<String> removeDuplicate(List<String> list) { HashSet<S ...

  2. Arm环境搭建-基于博创科技(CentOS7.0系统安装篇1)

    CentOs 7.0安装和基本命令篇        目的:学习基本的linux命令,熟悉linux操作系统,安装linux.(安装过5.5,6.3并不是安装一帆风顺的,多次安装,有个10次多吧,基本会 ...

  3. oracle中清空表数据的两种方法

    1.delete from t 2 .truncate table t 区别: 1.delete是dml操作:truncate是ddl操作,ddl隐式提交不能回滚 2.delete from t可以回 ...

  4. 鸟哥的linux私房菜学习记录之开机流程、模块管理与Loader

  5. ERR: Call to undefined function openssl_random_pseudo_bytes()

    最近使用TP5/PHP7,总是出现ERR: Call to undefined function index\index\openssl_random_pseudo_bytes(),才发现是php没有 ...

  6. is_user_logged_in()

    function is_user_logged_in() { $user = wp_get_current_user(); return $user->exists(); } wp_get_cu ...

  7. makefile 中 $@ $^ %< 使用【转】

    转自:http://blog.csdn.net/kesaihao862/article/details/7332528 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 ...

  8. fedora 20 yum出错

    需要利用linux做项目,所以在win10装了vmvare 以及 fedora,据说这个linux比较稳定.. 1.系统装好以后,需要先把terminal调处理,这才符合程序猿的习惯嘛,具体方法如下 ...

  9. [转]centos中wget的使用方法

    本文转自 http://www.cnblogs.com/chusiping/archive/2011/11/10/2243805.html 和 http://www.jb51.net/os/RedHa ...

  10. sql server 快捷键

    书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个书签. F2 功能键 书签:移动到上一个书签. SHIFT+F2 取消查询. ALT ...