文章首次写在个人微信公众号【Linux驱动】。

#近况说明
从3月到5月中旬,这段时间一直在做高通5G中端手机平台的项目。硬件平台为SM7250,软件平台为android Q(10),截至目前,搭载这款高通处理器平台的手机还未发布。作为新人,参与到5G终端项目,一个人搞起来LCM和TP模块,从0到1的过程,是有很多感受的。从平台代码的熟悉到现在完成整个项目Display和Touch部分,虽然辛苦,却也开心。废话不多说了。首先介绍一下SM7250对Display和touch部分(我当时拿到的IC 厂商的驱动还没有适配高通的DRM架构)的改动。
#SM7250对display部分的改进

代码路径
display驱动路径: kernel/msm-4.19/techpack/display
displayDTS路径: vendor/qcom/proprietary/devicetree-4.19/qcom
display UEFI路径:
boot_images/QcomPkg/SocPkg/SaipanPkg

采用了DRM架构:

之前一直是FB架构,为啥用这个架构了,如下:
fb 驱动以前主要是嵌入式设备用,android 最开始也是用fb,但是渐渐就发现他不好用了,主要是对多硬件图层的支持不好,不过那时候drm对嵌入式系统也不友好,Google 中间还开发了一个叫做ADF的 驱动框架带代替FB,不过没什么人响应后面 drm 里面加了atomic kms 的功能,对多图层的支持基本能满足android的需求了,而且很多芯片厂家的芯片既要做android 又要做chrome,比如三星的exynos,nVidia的tegra,还有国内的rk3288 rk3399,所以都直接转向drm了,要不然就要维护两套驱动.所以drm 现在就成了android 上的标准图形驱动而且现在如果想超 linux mainline 提交显示驱动的话,要求必须走drm,fb的不会被接受 前几年 freescale 那边有人提交fb的设备驱动 就被要求改成drm.

FB与DRM在代码里面的区别如下:

DRM代码里面主要的概念和数据:

#Frame buffers (struct drm_framebuffer)Frame buffers are abstract memory objects that provide a source ofpixels to scan out to a CRTC. Implementation depends on the memorymanager used and the IOMMU capabilities.
#Planes (struct drm_pane)A plane represents an image source that can be blended with or overlaidon top of a CRTC during the scan out process. Planes are associated with a frame buffer to crop a portion of the image memory (source)and optionally scale it to a destination size. The result is thenblended with or overlaid on top of a CRTC.
#CRTC (struct drm_crtc)
CRT controller (CRTC) is not related only to CRT displays. It
configures the appropriate display settings,display timings/
resolution, scans out frame buffer content to one or more displays,and so on.
#ncoder (struct drm_encoder)Takes pixels data from CRTC and converts it to the format suitablefor any attached connectors. #Connectors (struct drm_connector)
Represents display interface (HDMI, DisplayPort, DSI, VGA),
transmits signal to display, detects display, exposes mode,
and so on.
#Bridge
Associated with an encoder, participates in mode set, device
power management, connection detection, and so on.

#SM7250对touch部分的改进
主要是对suspend 和resume部分的流程加了DRM的宏控

#if defined(CONFIG_FB)
#if defined(CONFIG_DRM)  //主要后面适配了DRM部分
#include <drm/drm_panel.h>
#elif defined(CONFIG_FB)#include <linux/notifier.h>#include <linux/fb.h>

#TP的bringup
TP的通信采用SPI,SPI信号采用四条信号线SPI_MOSI, SPI_MISO,SPI_SCLK, SPI_CS ,SPI_CS拉低才有效,主要用来选择SPI从设备,硬件说已经拉低选择我们的TP设备。原理图如下:


SPI使用的使用的是GPIO_6 、GPIO_7 、GPIO_8 GPIO_9 这4个gpio —>这是哪个spi总线上的?在资源配置表里面查看:

默认gpio6 gpio7 是i2c gpio8是tp_reset gpio9是tp_int
在设备数xxx_pinctrl.dtsi 搜索gpio6,gpio7,gpio8 gpio9
查看对应的 qupv3_se7_i2c

通过总结发现gpio6 gpio7 对应的为 qupv3_se7
查看spi qupv3_se7_spi 的总线地址:spi@984000

打开spi总线:

在另外的目录下引用spi总线添加TP 设备资源:

#TP设备树的注释:

&qupv3_se7_spi {status = "ok";qcom,spi-touch-active = "focaltech,fts";//后面单独分析focaltech@0 { //spi 从设备的地址选择0 compatible = "focaltech,fts";reg = <0x0>;spi-max-frequency = <6000000>;//spi的最大传输速率 6MHZ interrupt-parent = <&tlmm>;//使用MSM 中断interrupts = <68 0x2>; //中断号focaltech,reset-gpio = <&tlmm 4 0x01>;        //reset引脚 和初始状态focaltech,irq-gpio = <&tlmm 68 0x02>;//中断引脚 和初始状态   focaltech,max-touch-number = <10>;  //最大触点                    focaltech,display-coords =  <0 0 1080 2340>;//tp 的分辨率左上角坐标:(0,0)  右下角坐标:(1080,2340)qcom,spi-touch-active = "focaltech,fts";panel = <&dsi_ft8719p_1080p_video>;pinctrl-names = "pmx_ts_active","pmx_ts_suspend";//pinctl主要用在某些特殊状态下,比如在使用TP suspend前,需要让中断引脚从某个固定的状态到拉高或则拉低,前面某个固定的状态需要通过pinctrl来实现pinctrl-0 = <&ts_ft_int_active &ts_ft_reset_active>;pinctrl-1 = <&ts_ft_int_suspend &ts_ft_reset_suspend>;}
};

TP 中pinctrl在驱动中的使用:
查看设备树里面的pinctrl属性:

在使用TP的供电是让int 和 reset处于固定的状态(时序调整时用):用pinctrl来实现

#SM7250平台中使用DRM架构,对TP的影响

主要影响到了TP的suspend流程,使用第三方的TP驱动,无法跑到suspend,简要分析以前平台主要使用include/fb.h里面的参数来控制suspend 和resume流程,使用CONFIG_FB宏 来控制

使用include/fb.h的参数:

新平台使用DRM架构,使用CONFIG_DRM这个宏来控制

#sm7250平台对TP的修改
设备树:

SM7250(高通5G)平台TP bringup相关推荐

  1. SM7250(高通5G)平台LCD bringup

    写在前面的话 高通平台显示这一块,自从去年开始,高通全面使用SMxxxx命名的芯片 比如高端系列:SM8350(骁龙888),SM8250(骁龙865),SM8150(骁龙855) 中端系列:SM72 ...

  2. 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南

    高通5G平台:ping包异常问题排查指南 1. 背景 2. Ping包数据流走向及网络架构 2.1 终端与网络架构图 2.2 终端与基站之间协议栈数据流走向图 3. Ping包问题常见分析思路 3.1 ...

  3. 高通SDX55平台:5G速率问题排查分析方法

    高通SDX55平台:5G速率问题排查分析方法 1. 背景 2. 测速环境配置介绍 2.1 测速工具 2.2 工具使用 2.3 网络参数介绍 2.3.1 带宽 2.3.2 信号质量 2.3.3 RB 2 ...

  4. 高通SDX55平台:R8168 PHY驱动适配

    高通SDX55平台 R8168 PHY驱动适配 1. SDX55 CPE应用场景 高通5G平台SDX55支持5G独立组网(SA)和非独立组网(NSA)两种网络架构,同时兼容LTE和WCDMA制式,拥有 ...

  5. android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide

    [高通SDM660平台]Camera 驱动 Bringup Guide 一.Kernel 代码移植 1. DTS 文件配置 1.1 sdm660.dtsi 1.2 sdm660-camera.dtsi ...

  6. 【高通SDM660平台】(1) --- Camera 驱动 Bringup Guide

    [高通SDM660平台]Camera 驱动 Bringup Guide 一.Kernel 代码移植 1. DTS 文件配置 1.1 sdm660.dtsi 1.2 sdm660-camera.dtsi ...

  7. 高通5G智能平台概述

    高通5G智能平台概述 高通 android 智能手机解决方案的软件包括两个部分 以linux 操作系统为基础的 android 系统 以 L4,REX为基础的 Modem 部分 在高通系列的架构中,一 ...

  8. android_驱动_qcom_【高通SDM660平台】(4) --- Camera Init 初始化流程

    [高通SDM660平台]Camera Init 初始化流程 一.Camera 系统架构 二.Camera Init 初始化流程 2.1 CameraService 启动 2.2 CameraServi ...

  9. 【高通SDM660平台 Android 10.0】(10) --- Camera Sensor lib 与 Kernel Camera Probe 代码分析

    [高通SDM660平台 Android 10.0]Camera Sensor lib 与 Kernel Camera Probe 代码分析 一.libmmcamera_imx258.so 代码分析 1 ...

最新文章

  1. Windows、WSL 与 Linux 的性能对比
  2. MDK生成的BIN文件用DNW通过USB下载RAM中运行的问题
  3. springmvc教程(1)
  4. 宏观经济学自我学习与总结
  5. mysql 一主一备_Mysql一个主一备
  6. Python稳基修炼的经典案例15(计算机二级、初学者必会字符格式处理)
  7. meta你到底了解多少
  8. 【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
  9. 要求用户首先输入员工数量,然后输入相应员工信息,格式为: name,age,gender,salary,hiredate 例如: 张三,25,男,5000,2006-02-15 每一行为一个员
  10. 利用动态加载实现手机淘宝的节日特效
  11. 时区的转换nbsp;格林尼治标准时间(GMT…
  12. JavaScript高级程序设计[美]Nicholas C.Zakas著 读书笔记(一)
  13. 微信公众号 Cookie
  14. 能给我讲解一下高通C2D的知识吗
  15. 算法养成:弱鸡大学生浅谈c++stl
  16. 两万字长文总结,梳理 Java 入门进阶那些事
  17. 6-10 两个字符串穿插 (10分)pta,c
  18. 模拟购物车购物过程python,用函数模拟简单的购物车(Python)
  19. 用什么软件可以检测苹果耳机芯片_创新发布Sound Blaster X3外置声卡:支持新一代Super XFi耳机音效...
  20. 基于Python知乎回答爬虫 +jieba关键字统计可视化

热门文章

  1. xxljob在业务代码中添加任务(登录后token验证)
  2. 【Life】香水蛋挞露营FootBall
  3. 什么样的回答才足够个性?吾来个性化回复举手参评
  4. 2021年中国餐厨垃圾产量、厨余垃圾处理器及发展趋势分析[图]
  5. 大学生第一次写论文?我悟了
  6. Vue3电影中后台开发纪实(八):打包上线
  7. 【自动驾驶规划】综述(一)
  8. Linux快捷键之强制关闭
  9. python绘制云图实例
  10. 北邮2019网络安全学业网络研究学院机试复试回忆版