1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > LCD驱动调试分享——基于Qualcomm MSM8996平台Android7.1

LCD驱动调试分享——基于Qualcomm MSM8996平台Android7.1

时间:2023-11-03 07:51:02

相关推荐

LCD驱动调试分享——基于Qualcomm MSM8996平台Android7.1

LCD 分为LK 和kernel 两部分移植

首先要准备以下东西:屏IC 规格书,初始化代码,硬件原理图

屏IC 规格书—>获得时序等数据

初始化代码 —>获得初始化屏幕ic的命令,用于编写屏的.h文件(lk)和.dtsi文件(kernel)

硬件原理图 —>获得打开背光、reset等有关电源的引脚,在代码中拉高拉低

涉及到的文件是:

一、Lk部分:在Z:\G0335D\bootable\bootloader\lk目录下:

dev/gcdb/display/include/panel_jdi_gree_1080p_video.h

project/msm8996.mk

target/msm8996/oem_panel.c

target/msm8996/target_display.c

二、kernel部分:在G03X5/kernel/msm-3.18目录下:

arch/arm/boot/dts/qcom/dsi-panel-jdi-gree-1080p-video.dtsi

arch/arm/boot/dts/qcom/msm8996-mdss-panels.dtsi

arch/arm/boot/dts/qcom/msm8996-regulator.dtsi

arch/arm/boot/dts/qcom/msm8996-mtp.dtsi

arch/arm64/configs/msm_defconfig

drivers/misc/Kconfig

drivers/video/msm/mdss/mdss_dsi.h

drivers/video/msm/mdss/mdss_dsi.c

drivers/video/msm/mdss/mdss_dsi_panel.c

目录

一、Lk部分:在Z:\G0335D\bootable\bootloader\lk目录下:

1、分析:dev/gcdb/display/include/panel_jdi_gree_1080p_video.h

2、分析:bootable/bootloader/lk/target/msm8996/oem_panel.c

3、分析:bootable/bootloader/lk/target/msm8996/target_display.c

二、kernel部分:在G03X5/kernel/msm-3.18目录下:

1.首先要写好.dts文件

2、arch/arm/boot/dts/qcom/msm8996-mdss-panels.dtsi

3、arch/arm/boot/dts/qcom/msm8996-mtp.dtsi

4、arch/arm/boot/dts/qcom/msm8996-regulator.dtsi

5、drivers/video/msm/mdss/mdss_dsi.c

6、drivers/video/msm/mdss/mdss_dsi_panel.c

6、drivers/video/msm/mdss/mdss_dsi_panel.c

7、arch/arm64/configs/msm_defconfig

分别讲解:

一、Lk部分:在Z:\G0335D\bootable\bootloader\lk目录下:

dev/gcdb/display/include/panel_jdi_gree_1080p_video.h

project/msm8996.mk

target/msm8996/oem_panel.c

target/msm8996/target_display.c

1、分析:dev/gcdb/display/include/panel_jdi_gree_1080p_video.h

主要是配置面板Panel resolution、Panel configuration、Panel Command information、Panel Timing。作用:点亮屏幕

从device\qcom\common\display\tools下找到panel-xxxx.xml文件里面包含主要有9个部分。

xml文件每个配置具体含义可以查看高通的文档。可以知道代码时序中每一个值的具体含义,

Panel.h中可以找到其结构体

参考供应商提供的IC规格书:A531_TD4310_Register_Setting_Seqence_for_customer_0810.pdf

1)

以上表格说明的是Panel resolution

面板宽度(qcom,mdss-dsi-panel-width,HAdr)为1080

面板高度(qcom,mdss-dsi-panel-height,VAdr)为2160

水平前沿值(qcom,mdss-dsi-h-front-porch,HFP)为60

水平后沿值(qcom,mdss-dsi-h-back-porch,HBP)为30

水平脉冲宽度(qcom,mdss-dsi-h-pulse-width,Hsync)为130

HSyncSkew

垂直后沿值(qcom,mdss-dsi-v-back-porch,VBP)为6

垂直前沿值(qcom,mdss-dsi-v-front-porch,VFP)为8

垂直脉冲宽度(qcom,mdss-dsi-v-pulse-width,Vsync)为60

厂家没有特别指明的设置为0

以下为代码配置:

以上时序的每一个值表示具体是:

<!-- Panel Resolution --><PanelWidth>1080</PanelWidth><PanelHeight>1920</PanelHeight><HFrontPorch>60</HFrontPorch><HBackPorch>32</HBackPorch><HPulseWidth>16</HPulseWidth><HSyncSkew>0</HSyncSkew><VBackPorch>6</VBackPorch><VFrontPorch>8</VFrontPorch><VPulseWidth>2</VPulseWidth><HLeftBorder>0</HLeftBorder><HRightBorder>0</HRightBorder><VTopBorder>0</VTopBorder><VBottomBorder>0</VBottomBorder><!-- Optional Panel resolution configuration --><!--HActiveRes>0</HActiveRes><VActiveRes>0</VActiveRes><InvertDataPolarity>0</InvertDataPolarity><InvertVsyncPolarity>0</InvertVsyncPolarity><InvertHsyncPolarity>0</InvertHsyncPolarity -->

以上数值也要和kernel中kernel/msm-3.18/arch/arm/boot/dts/qcom/dsi-panel-jdi-gree-1080p-video.dtsi的对应起来

在bootable/bootloader/lk/dev/gcdb/display/include/panel.h中可以找到其结构体:

typedef struct panel_resolution{uint16_t panel_width;uint16_t panel_height;uint16_t hfront_porch;uint16_t hback_porch;uint16_t hpulse_width;uint16_t hsync_skew;uint16_t vfront_porch;uint16_t vback_porch;uint16_t vpulse_width;uint16_t hleft_border;uint16_t hright_border;uint16_t vtop_border;uint16_t vbottom_border;uint16_t hactive_res;uint16_t vactive_res;uint16_t invert_data_polarity;uint16_t invert_vsync_polarity;uint16_t invert_hsync_polarity;};

2)

时序需要计算,参考高通文档:80-NH713-1_H_DSI_Timing_Parameters.xlsm 第2.2.2 小结DSI PHY timing calculation:

Panel timing 和kernel中G03X5/kernel/msm-3.18/arch/arm/boot/dts/qcom/dsi-panel-jdi-gree-1080p-video.dtsi对应起来

2、分析:bootable/bootloader/lk/target/msm8996/oem_panel.c

首先,添加头文件#include “include/xxx.h” —>上一步的头文件

接着在屏列表信息中添加新屏:

在枚举类型中添加新屏:

在进入oem_panel_select函数中,事先要知道hw_id是什么,switch后进入相应的分支,进行如下赋值:

在init_panel_data函数中,利用switch (panel_id),找到相应的地方,给panelstruct结构体赋值

以下是通过读取GPIO49和别的屏做兼容。

3、分析:bootable/bootloader/lk/target/msm8996/target_display.c

此文件主要是进行点亮背光和设置reset引脚

根据原理图,在代码某处拉高引脚

由以上原理图得知:配置引脚开背光:

配置reset引脚:

display.h中定义了显示屏相关的引脚,和一些相关的宏以及配置信息

panel.h中定义了显示屏代码中相关的结构体

二、kernel部分:在G03X5/kernel/msm-3.18目录下:

arch/arm/boot/dts/qcom/dsi-panel-jdi-gree-1080p-video.dtsi

arch/arm/boot/dts/qcom/msm8996-mdss-panels.dtsi

arch/arm/boot/dts/qcom/msm8996-regulator.dtsi

arch/arm/boot/dts/qcom/msm8996-mtp.dtsi

arch/arm64/configs/msm_defconfig

drivers/misc/Kconfig

drivers/video/msm/mdss/mdss_dsi.h

drivers/video/msm/mdss/mdss_dsi.c

drivers/video/msm/mdss/mdss_dsi_panel.c

1.首先要写好.dts文件

arch/arm/boot/dts/qcom/dsi-panel-jdi-gree-1080p-video.dtsi 主要是进行添加新屏的参数和lk中对应起来

&mdss_mdp在这个节点中进行添加配置值

以上代码中

//指定面板 PHY 定时设置的长度为 12 的数组,跟lk一样

qcom,mdss-dsi-panel-timings = [D6 32 22 00 60 66 26 36 28 03 04 00];

//指定模式切换后的字节时钟周期,跟lk一样

qcom,mdss-dsi-t-clk-post = <0x13>;

//指定模式切换前的字节时钟周期,跟lk一样

qcom,mdss-dsi-t-clk-pre = <0x2E>;qcom,mdss-dsi-bl-min-level = <1>;

//背光最大电流,255

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_pwm";

//屏幕的上电时序,1代表拉高,0代表拉低,10、20/152代表时间

qcom,mdss-dsi-reset-sequence = <1 10>, <0 20>, <1 152>

2、arch/arm/boot/dts/qcom/msm8996-mdss-panels.dtsi

该文件中包含有#include "dsi-panel-jdi-gree-1080p-video.dtsi"

这个文件的配置,时序需要计算,参考高通文档:80-NH713-1_H_DSI_Timing_Parameters.xlsm 第2.2.2 小结DSI PHY timing calculation:将供应商提供的IC规格书中的具体值填入下表红色圈中即可

填完以上数值后,就可以在DSI PHY 2.0.0 timing setting tab得到下表

将以上数值具体说明:

3、arch/arm/boot/dts/qcom/msm8996-mtp.dtsi

该文件主要讲明的是

1)LCD mipi dsi 的方式single 代表只有一个通道驱动,支持video模式,也支持cmd模式

2)背光参数的设置

hw-config = "single_dsi"; //mipi dsi接口为一个通道驱动qcom,dsi-pref-prim-pan = <&dsi_ft8716_1080p_video>; //表示跟添加的显示屏的节点名称一样qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled"; // pwm启动背光

4、arch/arm/boot/dts/qcom/msm8996-regulator.dtsi

设置背光参数

5、 drivers/video/msm/mdss/mdss_dsi.c

6、drivers/video/msm/mdss/mdss_dsi_panel.c

在kernel中的mdss_dsi.c或者mdss_dsi_panel.c中打开背光引脚和进行reset上电

drivers/video/msm/mdss/mdss_dsi.c中

6、drivers/video/msm/mdss/mdss_dsi_panel.c

7、arch/arm64/configs/msm_defconfig

drivers/misc/Kconfig

代码编译规则的配置

G03X5/kernel/msm-3.18/drivers/misc/Kconfig

G03X5/kernel/msm-3.18/arch/arm64/configs/msm_defconfig

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。