高通Android msm8953 驱动开发(一)--LCD调试

article/2025/9/22 12:31:06

本篇记录Andoird9 高通msm8953 ili9881c LCD调试过程,主要涉及到以下几个知识点:

  (一).利用GCDB生成lk 头文件和 kernel dts,点亮屏幕;

  (二).LCD兼容;

(三).LCD方向调整;

 

一.GCDB生成lk 头文件和 kernel dts

GCDB可以解析xml,我们需要将屏参配置到xml,可快速生成dts 和头文件,提升工作效率.

这个xml目录在device/qcom/common/display/tools,我们复制其中一个以此作为模板修改。

主要涉及到如下几个修改:

①. Panel configuration

②.Panel Resolution面板分辨率、前后沿等;

③.Panel Command informatio 面板命令参数;

④.Panel Timing 面板时序

 

 

Panel configuration:

仅需关注PanelType 、PanelFrameRate;

对于PanelType:描述面板支持的是video模式还是命令模式

 0 = VIDEO_MODE

1 = COMMAND_MODE

对于大多LCD而言,用的是video模式,配置为0即可;

PanelFrameRate:刷新率,数值越大,显示越流畅,大多能支持到60的帧率。

format,png

panel confgtation

 

Panel Resolution:

配置分辨率 、前后沿、脉冲宽度

format,png

panel resolution

 

Panel Color Information:描述颜色格式和颜色顺序。

ColorFormat:

24 = 888_RGB

18 = 666_RGB

16 = 565_RGB

12 = 444_RGB

8 = 332_RGB

3 = 111_RGB

 

ColorOrder:

0 = DSI_RGB_SWAP_RGB

1 = DSI_RGB_SWAP_RBG

2 = DSI_RGB_SWAP_BGR

3 = DSI_RGB_SWAP_BRG

4 = DSI_RGB_SWAP_GRB

5 = DSI_RGB_SWAP_GBR

 

对于9881c LCD 支持RGB888,故配置如下即可,不需交换顺序:

 

format,png

Panel Color Information

 

Video mode panel information:

修改TrafficMode即可,TrafficMode:流量模式。

0 = non burst with sync pulses

1 = non burst with sync start event

2 = burst mode

format,png

video mode panel information

Lane Configuration:

配置通道数量、通道使能及映射关系。

DSILaneMap:映射关系

0 = DLANE_SWAP_0123

1 = DLANE_SWAP_3012

2 = DLANE_SWAP_2301

3 = DLANE_SWAP_1230

4 = DLANE_SWAP_0321

5 = DLANE_SWAP_1032

6 = DLANE_SWAP_2103

7 = DLANE_SWAP_3210

 

通常配置为0,不改变通道映射关系。

 

LaneXState:对应通道是否使能

1 = ENABLE

0 = DISABLE

 

DSILanes:通道数量:

2 for 2 lane panel

4 for 4 lane panel

 

9881c支持4通道,配置如下即可

format,png

 

 

                                                Lane Configuration

Backlight:

配置背光最小最大亮度以及背光方式

BLMinLevel:背光最小值

BLMaxLevel:背光最大值

 

BLPMICControlType:背光类型

0 = PWM GPIO

1 = WLED

2 = DCS COMMANDS (for

OLED panel backlight controller)

3 = LPG

 

对于9881c 为WLED

配置如此下:

format,png

                                                        Backlight

 

Panel Command information:

mipi 命令,也是最重要的部分,这个决定了面板显示效果,通常调效果,更新主要是这部分,主要包含

OnCommand(上电初始化代码) 、OffCommand(下电反初始化代码)

通常给到的屏参格式如下:

REGISTER, CMD(Hex), Number(Hex), DATA(Hex), DATA(Hex), ....

format,png

屏厂给到的屏参

 

高通平台mipi参数格式如下:

REGISTER, WAIT, PayloadSize(2 byte), Payload(CMD,DATA,DATA)

其中:

REGISTER=0x39, 0x01, 0x00, 0x00,

PayloadSize = Number+1

Payload = CMD,DATA,DATA,

 

据此,可将屏厂给到的屏参转换如下:

REGISTER,FF,03,98,81,03 转换成:

0x39, 0x01, 0x00, 0x00, 0x00,0x00,0x00,0x04,0xFF,0x98,0x81,0x03

 

format,png

转换成平台格式屏参

 

Panel Timing:

需要配置如下三个值:

PanelTimings:长度为12的数组,用于指定面板时序

TClkPost:DSI timing control clock post value

TClkPre:DSI timing control clock pre value

 

这个时序需通过高通配套的excel 表格生成(注意,只能使用微软excel生成)

①.选择表单DSI and MDP registers,配置红框参数:

format,png

Generate DSI Timing

②.选择表单DSI PHY timing setting,

按下Ctrl+j,如下:此时Check for T_CLK_ZERO为红色。

format,png

ctr+j

 

再按下Ctrk+k,此时Check for T_CLK_ZERO变成绿色,说明参数有效。

format,png

ctrk+k

再按下Ctrk+k,此时Check for T_CLK_ZERO变成绿色,说明参数有效。

 

此时DSI PHY registers的值即PanelTimings,TClkPost、TClkPre也得出

format,png

时序生成

 

到这里,就可以生成lk 和 kernel需要的dtsi 和头文件:

在/device/qcom/common/display/tools

执行perl parser.pl panel_xxx_xxx_vide.xml panel 生成对应的dtsi 和.h

其中,dtsi复制到kernel/msm-4.9/arch/arm64/boot/dts/qcom/

.h复制到bootable/bootloader/lk/dev/gcdb/display/include/

 

配置lk 和 kernel:

配置kernel:

包含dtsi:

kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8953-mdss-panels.dtsi

 

format,png

inclued dtsi

 

对于此平台,需添加DSI PHY 2.0.0 timing

format,png

DSI PHY 2.0.0 timing

 

 

format,png

dtsi添加DSI PHY 2.0.0 timing

其对应关系如下:

 

format,png

dtsi 与 DSI PHY 2.0.0 timing对应关系

同理lk  .h也需添加DSI PHY 2.0.0 timing

format,png

lk 添加DSI PHY 2.0.0 timing

 

配置lk

Panel configuration 和Lane configuration 需要稍微修改下,如下:

 

format,png

修改Panel configuration

 

 

format,png

修改Lane configuration

 

以及前面提到的lk 添加DSI PHY 2.0.0 timing。

接下来,把新增的面板添加lk 启动代码中:

仿照其它面板,添加新增的面板即可,如下:

 

format,png

添加到面板数组

前面生成了.h头文件,其目的是在为了在下边函数调用,将头文件数据配置到panel_struct 结构体,方便调用。

format,png

面板数据初始化

最后,在面板选择函数,新增面板。oem_panel_select()作用是lk在启动后通过auto_pan_loop计数,每遍历一个面板auto_pan_loop加1,直到auto_pan_loop不再增加,面板遍历完。在遍历过程中,lk通过上一步init_panel_data()配置的mipi.panel_read_cmds读取该面板的panel id,并与mipi.signature校验值比较,相等说明面板匹配上,否则遍历下一个面板。

这也是LCD兼容的原理。

format,png

面板选择函数

 

说到这,我们在签名配置的面板初始化函数panel_read_cmds 和mipi.signature,在生成.h时是没生成相应的命令的,需要我们自己配置。

 

format,png

panel id 读取相关命令

 

这个读取命令和正确值是屏厂给到的,没有的话给屏厂要即可。这里9881c panel id 读取和 正确值配置如下:

format,png

panel id 读取命令

 

format,png

panel id 正确数值

 

 

经过上面一大串的配置修改,现在可以编译烧录了,编译lk 、kernel、 dtbo,并烧录开机。

现象:开机无显示,黑屏

说明 lk阶段屏显已经异常了!

查看串口信息,打印如下:

 

format,png

kernel 阶段日志

可以知道lk 通过该cmdline 传递给kernel的屏是:qcom,mdss_dsi_ili9881d_720p_video,而我们接的是9881c,panel_node_id 是

qcom,mdss_dsi_wd10131ab_720p_video。说明在lk阶段面板选择上就已经出现问题。

再往前看lk 日志,如下:

format,png

format,png

lk阶段日志

 

可知auto_pan_loop=:0,lk尝试加载WD10131AB这个我们实际接上的面板,但是dsi panel init error,即面板初始化失败。

接下来查找"dsi panel init error"出处,看具体错误:

bootable/bootloader/lk/platform/msm_shared/mipi_dsi.c:

format,png

dsi panle init error 出处

 

进一步往下排查:

mdss_dsi_config

    - ->mdss_dsi_panel_initialize

                -->mdss_dsi_read_panel_signature

 

增加打印,panel id 读取值打印为0,signature值与配置的一致,说明是panel id读取失败导致9881c面板初始化提前结束退出 ,在遍历到最后一个面板9881d默认选择了它,因此选择的屏与实际不一致,导致屏不亮!

format,png

panle id校验函数

 

到这就有郁闷了。。。

这么看似乎是panel_read_cmds 与 mipi.signature值不对,然而并不是,这块屏在其它平台用过,确定panel_read_cmds 与 mipi.signature值没填错。

好吧,接下来排查其它因素,经过一番排查,发现是.h上电初始化命令 video_on_command需要增加一个命令ff 98 81 01.

重新编译烧录上电,成功!!!

如果有人知道何这串命令为会与panel id读取相关,欢迎留言告知,感谢~

format,png

video_on_commadn上电初始化命令

 

到此,LCD已经点亮正常显示,还有个小问题需要解决:因结构原因,屏幕显示方向翻转180度。查阅手册,高通平台支持dtsi配置

项"qcom,mdss-dsi-panel-orientation"修改屏显方向。

其控制逻辑在:

kernel/msm-4.9/drivers/video/fbdev/msm/mdss_dsi_panel.c:

format,png

面板方向控制逻辑

可知"qcom,mdss-dsi-panel-orientation"有如下取值:

qcom,mdss-dsi-panel-orientation="180"

qcom,mdss-dsi-panel-orientation="hflip"

qcom,mdss-dsi-panel-orientation="vflip"

 

故修改dtsi如下:

format,png

dtsi配置面板方向

 

到此,LCD调试完成,但是!!!此前用到的另一款屏是720*1080,这款是800*1280.

显然开机LOGO需要适配不同分辨率的LCD。

下一篇讲解Android 高通MSM8953平台 开机logo 多分辨率适配

 

 


http://chatgpt.dhexx.cn/article/MjUKpg87.shtml

相关文章

msm8953 LCD移植详解

一、简介 本文是基于高通msm8953的LCD模块移植说明。LCD移植主要是涉及到LK和kernel部分的修改。 二、实操准备 1、专业术语 HSYNC:行同步信号,表示扫描1行的开始。 VSYNC:帧同步信号,表示扫描1帧的开始,一帧也就是LCD显示的一个画面。 HFP:Horizon …

Qcom平台添加 Camera 驱动(msm8953)

前言 硬件平台:MSM8953/SDM450 软件平台:Android9.0 主摄IC: IMX258 (AF、Flash) 前摄IC: GC5025(AF) 景深: OV5670/GC5025(AF) Qocm平台Android5.1 和Android8.0 (N1 msm8909)流程基本一致,And…

高通平台msm8953 display子系统学习

硬件上,高通平台有一个mipi-dsi接口连接LCM,由MDP(mobile display processor)进行管理,就是一般说的LCD控制器 软件上,高通平台提供MDSS(Multimedia Display Sub-system)进行管理 …

[高通MSM8953_64][Android10]解决制作差分包不生成system_manifest.xml的问题

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MSM8953_64 版本: Android 10 kernel: msm-4.9 问题描述 设备在调试OTA升级功能的时候,制作OTA全量包测试升级功能,升级正常;然后,测试差分包升级失败了&am…

4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板

核心板特性 A53架构 8核(8*2.2GHz(A53)) 产品尺寸小,便于客户集成,减少产品体积;支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G;支持4+128存储器,SD3.0支持128G;尺寸小、集成度高、大板布板灵活;支持全网通=、wifi双频;支持快充,QC3.04线MIPI 分辨率1920*1280…

【EMMC】MSM8953里时钟是如何分频的

时钟源 MSM8953振荡频率为19.2 MHz的单晶振荡器(XO)。XO作为所有pll的源,也可以作为其他时钟的源。MSM8953没有单独的休眠晶体,使用586的除数从XO生成睡眠时钟32.768khz作为时钟信号源。 分析代码 在host中probe函数里有在初始…

高通625系列-MSM8953 (Cortex-A53架构)

核心板特性 A53架构 8核(8*2.2GHz(A53)) 产品尺寸小,便于客户集成,减少产品体积;支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G;支持4128存储器,SD3.0支持128G;尺寸小、集成…

如何收集 小番茄的种子

1.把西红柿切成两半,注意要从果柄处对切。 2.打开西红柿,你应该可以看到西红柿基本上分成四个均匀的部分,每个部分之间有种子和凝胶。 3.找一个小勺子挖出种子,你也可以直接用挤出的方法把种子挤出来,放在小碗里&#…

IOS破解软件,比较全的网站。

转载于:https://blog.51cto.com/14259888/2369621

2023最新仿第八区APP分发平台源码

**> 支持APK,IPA分发 ,在线本机ios签名,安卓ios应用封装****> 需要看演示站可以联系https://jq.qq.com/?_wv1027&kjZBe9aHx**

iApp对接hybbs社区APP源码

介绍: 首先得搭建一个HYBBS论坛程序 服务器或者主机不能带有任何cc,防火墙策略! 否则软件提交参数会被拦截,则null mian.iyu载入事件填自己的hybbs论坛网址 http打头 /结尾 论坛模板使用官方默认,移动端设置电脑端模板…

苹果应用商店app_切勿更新!IOS最新观影APP上架苹果商店

苹果软件管家 每个果粉都应该关注的一个公众号 原本前天想给大家推送一款影视APP 结果管家刚写完APP就被下架了 相信今天应该不会出现这个问题了 相信果粉们都知道大象影视这款APP 很早之前就下载体验过 但是效果真的一般,广告很多 本次大象影视换壳上架苹果应用商店…

梦幻星球社区APP源码 HYBBS的iApp社区源码

介绍: 极其好用的对接HYBBS的iApp社区源码 BUG修复: 修复评论无法显示 修复无法发送评论 修复头像显示 修复板块图片 … 更新: 新增功能页面 优化回复评论 优化帖子、帖子列表 优化我的、个人主页页面 优化注册、登录页面 增加背景设置 网盘…

iOS应用跳转(包括iPhone原有应用跳转和第三方应用跳转)

文章目录 iOS应用间跳转简介应用间跳转应用场景应用间跳转实现步骤跳转到本地或第三方应用的一些URL Schemes iOS应用间跳转简介 在开发的过程中,我们经常会遇到需要从一个应用程序跳转到另一个应用程序的场景。这就需要我们掌握iOS应用程序之间的相互跳转知识。 …

iOS开发~社区分享

1、概要 随着iOS平台逐渐成熟,连最初让人恼火的社区分享功能现在都变的几行代码就可以搞定,下面分享下“分享”功能原生实现。 2、实现 iOS6之前使用TWTweetComposeViewController实现分享功能,但iOS6之后改用SLComposeViewController实现&…

番茄助手 VS2015

转载地址: https://www.cnblogs.com/DswCnblog/p/5625893.html 首先在官网下载原版: VA_X_Setup2270_0.exe VA_X官方下载链接:http://www.wholetomato.com/downloads/default.asp 安装官版。 下载补丁 。 下载链接: http://pan.baidu.c…

linux安装番茄时钟,Tomato Pie番茄钟

Tomato Pie插件简介 Tomato Pie 是一款开源的Chrome 新标签页扩展,适用于番茄工作法,直观,简单,拥有马赛克统计图、浏览器通知、扩展栏图标倒计时等功能。我们之前介绍过一款just Focus - 番茄钟免费应用软件(Mac、iOS)。 番茄钟是…

番茄学习--番茄工具推荐

首先,这个工具是青峰推荐的,自己觉得用的很顺手,就推荐给大家。 这是一个在线的番茄学习工具--番茄土豆。他的网址是:https://pomotodo.com/ 下面我来说说这个工具的特点吧: 首先,在开始番茄之前,你什么都不用想,只需要点击“开始一个番茄”按钮即可。这样你就开始了一…

番茄助手 VS2015

转载地址: https://www.cnblogs.com/DswCnblog/p/5625893.html 1. 首先在官网下载原版: VA_X_Setup2270_0.exe VA_X官方下载链接:http://www.wholetomato.com/downloads/default.asp 2. 安装官版。 3. 下载补丁 。 下载链接: http:/…

短视频平台-小说推文(番茄小说)推广任务详情

字节旗下平台:番茄小说 今日头条,抖音故事,抖音漫画官方每周只出一次数据!!!!! 预计每周二出上周四之前的数据,有时官方回传数据较晚,会延迟到周三出! 请达人知悉! 注意: 再次强调!番茄拉新规则! 是以设备第一次下载番茄小说后搜…