读一款TP驱动

最近工作中遇到的,这里只做技术分析,不分享相关代码了。

Core.c

----lib

----chips

代码大概是三个部分。

先看看Core吧

还是标准的内核module流程。

复制代码
late_initcall(xxx_ts_init);
// module_init(xxx_ts_init);
module_exit(xxx_ts_exit);

MODULE_AUTHOR("XXX Driver Team");
MODULE_DESCRIPTION("XXX Touchscreen Driver");
MODULE_LICENSE("GPL v2");

这个TP是根据I2C来进行处理的。

复制代码
#ifdef I2C_PORT

static const struct i2c_device_id hyn_id_table[] = {

    {.name = HYN_DRIVER_NAME, .driver_data = 0,},

    {},

};



static struct i2c_driver xxx_ts_driver = {

    .probe = xxx_ts_probe,

    .remove = xxx_ts_remove,

    .driver = {

        .name = xxx_DRIVER_NAME,

        .owner = THIS_MODULE,

        .of_match_table = xxx_of_match_table,

    },

    .id_table = xxx_id_table,

};

match是用来匹配设备树的,这里很重要的就是probe和remove两个函数。

probe比较复杂。

里面就是调用linux内核的I2C函数,比如i2c_check_functionality,然后开始poweron,这里主要是用pinctrl设置端口,然后regulator_set_voltage设置端口电压。

之后是根据设备树判断设备是否加载,之后开始处理中断。创建中断线程。

remove则相对比较简单。

待续。。。

相关推荐
potato_may1 天前
工程框架搭建(续)
蓝桥杯·嵌入式·硬件·国赛·调度器·裸机开发·stm2
11cookies111 天前
VSCode + Renode:打造现代化的嵌入式仿真开发环
嵌入式
11cookies111 天前
我做了一个用 YAML 来驱动串口/TCP 协议执行的框架,上位机从此不需要写代码了
嵌入式
11cookies111 天前
VSCode + Renode 调试我手工实现的 RTOS:一次彻底改变我开发方式的体验
嵌入式
乔碧萝成都分萝1 天前
十六、一个基本的GPIO驱动程序
linux·驱动开发·嵌入式
potato_may1 天前
第三章:LED 模块详解
蓝桥杯·cubemx·嵌入式·led·stm332
大聪明-PLUS3 天前
C++编程中存在的问题
linux·嵌入式·arm·smarc
集大周杰伦4 天前
RV1126开发板烧录与SSH登录实践
linux·ssh·嵌入式·rv1126·瑞芯微开发工具·ssh 远程登录
MounRiver_Studio4 天前
RISC-V IDE MRS2使用笔记(四):编译后静态堆栈调用分析
ide·mcu·嵌入式·risc-v
大聪明-PLUS4 天前
C++中的复制语义和资源管理
linux·嵌入式·arm·smarc