高通平台TP和LCD 驱动Porting流程

本文档详细介绍如何为ELAN6730高通8208996平台进行Touch驱动及LCD内核移植。包括创建Touch驱动文件夹、配置触摸屏驱动、编写Makefile和Kconfig文件等内容。同时介绍了如何通过DSITimingParameters.xls生成Timing参数,并将其应用于LCD内核移植。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ELAN 6730 高通820 8996平台Porting手册

1.Touch porting

创建Touch驱动文件夹

cd	android/kernel/msm-3.18/drivers/input/touchscreen/
mkdir Damon_elan_tddi

在这里插入图片描述

cd Damon_elan_tddi

移入Touch驱动.c和.h档案,编写Makefile和Kconfig 在这里插入图片描述

vim Kconfig

在这里插入图片描述

vim Makefile

在这里插入图片描述

cd android/kernel/msm-3.18/drivers/input/touchscreen/
vim Makefile

在这里插入图片描述

vim Kconfig

在这里插入图片描述

vim arch/arm64/configs/msm_defconfig

在这里插入图片描述

vim arch/arm64/boot/dts/qcom/apq8096-dragonboard.dtsi

在这里插入图片描述
dts中的compatible要和驱动中的compatible匹配
在这里插入图片描述

2. LCD Kernel Porting

在高通文档DSI Timing Parameters.xls中填写Porch值等设定,生成Timing
在这里插入图片描述

把如下Timing填写到panel_damon_boe_6730.xml中
在这里插入图片描述
在这里插入图片描述

利用perl parser.pl xxxx.xml panel生成.h给lk用,.dtsi给kernel用
.dtsi放到kernel/arch/arm64/boot/dts/qcom/下

vim arch/arm64/boot/dts/qcom/apq8096-dragonboard.dtsi

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

把DSI_PHY2.0.0中的Timing设置,放到dtsi中
在这里插入图片描述

vim arch/arm64/boot/dts/qcom/msm8996-mdss-panels.dtsi

在这里插入图片描述
在这里插入图片描述

vim arch/arm64/boot/dts/qcom/msm8996-sde-display.dtsi

在这里插入图片描述

vim kernel/drivers/video/msm/mdss/mdss_dsi.c

在这里插入图片描述
编译烧录,理论上Kernel就可以正常显示

### LCD屏幕 Timing时序原理 LCD屏幕的timing时序是指控制显示器上每个像素刷新更新时间间隔的一系列参数。这些参数对于确保图像清晰、稳定至关重要,任何不准确都会导致图像模糊、闪烁或失真[^2]。 #### Linux对LCD的抽象图解析 Linux内核提供了一种高层次的抽象来描述LCD控制器如何与硬件交互。这种抽象模型有助于理解不同组件之间的关系以及它们是如何协同工作的。通过这种方式可以更直观地看到VSYNC(垂直同步)、HSYNC(水平同步)信号以及其他重要定时脉冲的作用[^1]。 #### 数据手册中的示意图说明 制造商通常会在其产品文档里给出详细的时序图表,这包括但不限于: - **帧周期(Frame Period)**:完成一行扫描所需的时间; - **行周期(Line Period)**:每条线的数据传输持续期间; - **前/后肩(Porch Time)**:在有效视频数据之前或之后留有的空白时间段; 这些图形化表示帮助开发者更好地掌握具体设备的要求并据此调整驱动程序配置。 #### Timing时序波形图解释 实际应用中使用的波形图展示了各种电平变化情况下的理想状态曲线。例如,在一个完整的场周期内,可以看到VSYNC下降沿触发新的一轮画面渲染过程;而HSYNC则决定了每一行何时开始被写入新内容。此外还有DE(数据使能)等其他辅助信号共同作用于整个显示流程之中。 ### 设置方法概述 为了正确设定LCD屏的timing时序,一般需要遵循以下几点指导原则: ```c // 定义关键参数结构体 struct lcd_timing_params { uint32_t hsync_len; // HSync长度 uint32_t vsync_len; // VSync长度 uint32_t hor_back_porch; // 水平后肩宽度 uint32_t ver_back_porch; // 垂直后肩高度 }; void configure_lcd(const struct lcd_timing_params *params) { // 配置寄存器以匹配所需的timings... } ``` 开发人员应当参照目标面板的技术规格书所提供的推荐值来进行初始化操作,并可能还需要经过多次测试迭代才能达到最佳视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值