上一篇大概讲了一下gsl680驱动的初始化部分,这部分是比较基础的,下面就开始第二部分:gsl680驱动的前期工作

首先会对一开始声明的input_dev结构体进行一个申请操作,但是这部分是与Input子系统相关的,目前先记住他,不分析他。知道是申请input子系统以及赋值即可。留到第三篇讲解

input_dev = input_allocate_device();
input_dev->name = client->name;
input_dev->phys = "I2C";
input_dev->dev.parent = &client->dev;
input_dev->id.bustype = BUS_I2C;

然后就是与供电相关的初始化操作,

regulator_get有2个参数,一个是device结构体,一个是id,到这里不难看出来他的目的就是获取对应设备树上的vdd属性(与本篇主体关联度不是特别大的一些api我不会写那么多,避免喧宾夺主),并且当vdd属性设置成功后,会设置他的值,这个GSL_VTG_MIN_UV、GSL_VTG_MAX_UV一般是由厂商在驱动头文件内设置好的,毕竟硬件也是他们提供的。

int rc;
err = gsl_ts_power_init(ts_data, true);ts_data->vdd = regulator_get(&ts_data->client->dev,"vdd");//ben.tang 20190912-1 vdd replace icif (IS_ERR(ts_data->vdd)) {rc = PTR_ERR(ts_data->vdd);dev_err(&ts_data->client->dev,"Regulator get failed vdd rc=%d\n", rc);return rc;}if (regulator_count_voltages(ts_data->vdd) > 0)rc = regulator_set_voltage(ts_data->vdd,GSL_I2C_VTG_MIN_UV,GSL_I2C_VTG_MAX_UV);ts_data->vcc_i2c = regulator_get(&ts_data->client->dev,"vcc_i2c");if (IS_ERR(ts_data->vcc_i2c)) {rc = PTR_ERR(ts_data->vcc_i2c);dev_err(&ts_data->client->dev,"Regulator get failed vcc-i2c rc=%d\n", rc);goto reg_vdd_set_vtg;}if (regulator_count_voltages(ts_data->vcc_i2c) > 0)rc = regulator_set_voltage(ts_data->vcc_i2c,GSL_I2C_VTG_MIN_UV,GSL_I2C_VTG_MAX_UV);

供电gpio初始化后,接下来就需要进行使能操作,对我们上面获取到的vdd及vcc_i2c对应的gpio进行使能

err = gsl_ts_power_on(ts_data, true);{rc = regulator_enable(ts_data->vdd);if (rc) {dev_err(&ts_data->client->dev,"Regulator vdd enable failed rc=%d\n", rc);return rc;}else{}udelay(50);rc = regulator_enable(ts_data->vcc_i2c);if (rc) {dev_err(&ts_data->client->dev,"Regulator vcc_i2c enable failed rc=%d\n", rc);regulator_disable(ts_data->vdd);}else{}
}

后面的就是input子系统的处理了,这里先不讲。那根据上面我们分析的点,我们的设备树又可以更新了

 gsl@40 {compatible = "silead,gsl-tp";silead,rst-gpio = <&tlmm 87 0x0>;silead,irq-gpio = <&tlmm 88 0x2002>;vdd-supply = <&pm6125_l21>;vcc_i2c-supply = <&pm6125_l9>;}

在第三篇我会分析在gsl680驱动内input子系统的操作以及中断队列这两个比较重要的点,如果有不对的地方欢迎大佬指出!

高通平台tp驱动(二)相关推荐

  1. 高通平台tp驱动(一)

    在网上对于gsl680驱动的剖析文章很多,本人自己也负责过tp驱动的移植,但是对于内部tp驱动的构造从未了解过,觉得有必要对tp驱动进行一个梳理.以下仅为本人观点,如有不对欢迎各路大佬指点,目的主要是 ...

  2. 高通平台LCD驱动参数说明

    下面是高通平台LCD驱动参数的说明,此说明是根据经验值以及高通的寄存器说明得出的,并非高通官方说明,如有疑问,欢迎探讨.针对一些没有用过的参数,由于没有实践证明,故不做妄加的评论. mipi_xxx_ ...

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

    ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/inpu ...

  4. 我所理解的高通平台Lcd驱动框架

    帧缓冲(framebuffer)是 Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.用户不必关系物理显示 ...

  5. 高通平台TP常见问题

    http://blog.csdn.net/wlwl0071986/article/details/8302135 导致触摸屏乱跳的原因大概分为5类: (1) 触摸屏硬件通道损坏 (2)触摸屏固件版本太 ...

  6. 高通平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  7. linux v4l2 示例程序,linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)...

    在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最下面的是ker ...

  8. linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)

    在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最下面的是ker ...

  9. linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析

    点击打开链接 在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最 ...

最新文章

  1. 做项目经理到底有多爽?
  2. SAP WM LQ02 为供应商寄售库存去K的时候,如果有Open TO单,则不能成功为物料去K?
  3. 数据结构 - 把二元查找树转变成排序的双向链表(C++)
  4. vscode如何使用命令面板
  5. 车载wince系统刷界面ui_UI入门秘笈,你想知道吗?
  6. 三菱M80加工中心伺服电机调试软件带序列号
  7. mac配置OpenGL超级宝典(第7版)环境
  8. unity 序列帧动画 UGUI GPU版
  9. 京东手机登录页面html,京东登录页面.html
  10. 如何利用Visio来绘制斜线!
  11. 拓嘉辰丰电商:一个营业执照支持开多少家店铺
  12. Windows下使用IDEAS对cala文件打jar包
  13. 不等距双杆模型_对磁场中双杆模型问题的解析(精)
  14. java代码读取excel文件_Java 读取excel 文件流代码实例
  15. Mac卸载程序清除残留文件
  16. 414 Request-URI Too Large
  17. JDK内置工具之appletviewer
  18. 申请计算机专业有关个人陈述吗,计算机专业个人陈述
  19. arduino ‘ does not name a type报错
  20. 智慧政务:政府运用大数据分析技术取得哪些成果

热门文章

  1. 不是技术也能看懂云原生
  2. 中国环境监测仪器行业发展状况与运营前景研究报告2022-2028年
  3. Go语言中结构体打Tag是什么意思?
  4. 《NASA食物计划》 题解
  5. CYCA五月复课季 直击模王仪式感满分的复课现场
  6. 智能电话机器人话术开发接口
  7. 树莓派CSI相机使用
  8. LPA-star算法(Lifelong Planning)及相关思考
  9. C++ char转换为int(char to int )
  10. 嵌入式 ARM 平台使用Python和PyQT开发界面应用程序