高通平台tp驱动(二)
上一篇大概讲了一下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驱动(二)相关推荐
- 高通平台tp驱动(一)
在网上对于gsl680驱动的剖析文章很多,本人自己也负责过tp驱动的移植,但是对于内部tp驱动的构造从未了解过,觉得有必要对tp驱动进行一个梳理.以下仅为本人观点,如有不对欢迎各路大佬指点,目的主要是 ...
- 高通平台LCD驱动参数说明
下面是高通平台LCD驱动参数的说明,此说明是根据经验值以及高通的寄存器说明得出的,并非高通官方说明,如有疑问,欢迎探讨.针对一些没有用过的参数,由于没有实践证明,故不做妄加的评论. mipi_xxx_ ...
- 高通平台TP和LCD 驱动Porting流程
ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/inpu ...
- 我所理解的高通平台Lcd驱动框架
帧缓冲(framebuffer)是 Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.用户不必关系物理显示 ...
- 高通平台TP常见问题
http://blog.csdn.net/wlwl0071986/article/details/8302135 导致触摸屏乱跳的原因大概分为5类: (1) 触摸屏硬件通道损坏 (2)触摸屏固件版本太 ...
- 高通平台LCD驱动分析
目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...
- linux v4l2 示例程序,linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)...
在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最下面的是ker ...
- linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)
在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最下面的是ker ...
- linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析
点击打开链接 在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构.本文以高通+android平台为示例,首先看一下整体框图: 这张图是从整体上来看的 1,图中最 ...
最新文章
- 做项目经理到底有多爽?
- SAP WM LQ02 为供应商寄售库存去K的时候,如果有Open TO单,则不能成功为物料去K?
- 数据结构 - 把二元查找树转变成排序的双向链表(C++)
- vscode如何使用命令面板
- 车载wince系统刷界面ui_UI入门秘笈,你想知道吗?
- 三菱M80加工中心伺服电机调试软件带序列号
- mac配置OpenGL超级宝典(第7版)环境
- unity 序列帧动画 UGUI GPU版
- 京东手机登录页面html,京东登录页面.html
- 如何利用Visio来绘制斜线!
- 拓嘉辰丰电商:一个营业执照支持开多少家店铺
- Windows下使用IDEAS对cala文件打jar包
- 不等距双杆模型_对磁场中双杆模型问题的解析(精)
- java代码读取excel文件_Java 读取excel 文件流代码实例
- Mac卸载程序清除残留文件
- 414 Request-URI Too Large
- JDK内置工具之appletviewer
- 申请计算机专业有关个人陈述吗,计算机专业个人陈述
- arduino ‘ does not name a type报错
- 智慧政务:政府运用大数据分析技术取得哪些成果