读一款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则相对比较简单。

待续。。。

相关推荐
嵌入式阿蔡1 小时前
嵌入式安全认证2026:PSA Certified从Arm主导到全球标准
嵌入式
阿源-10 小时前
PCI 总线协议解析
嵌入式·x86·固件
2301_8150910112 小时前
ARM汇编入门笔记(二):启动代码、指令详解与C语言混合编程
嵌入式·arm汇编
DaTou大头14 小时前
STM32第三篇
单片机·嵌入式·电路基础
纯音乐sjc18 小时前
SPI 通信协议详解:从四线制到 ADXL345
面试·嵌入式
纯音乐sjc19 小时前
嵌入式面试复习准备
面试·嵌入式
潘潘的嵌入式日记1 天前
位操作怎么写才不出错?置位、清位、翻转、取位一次讲清
c语言·嵌入式·寄存器·位操作
金士顿1 天前
ASP.NET Core BackgroundService 深度解析:设备后台任务到底应该怎么设计
linux·嵌入式·asp.net core·arm64
嵌入式阿蔡1 天前
CRA合规的工程化落地:SBOM、24小时响应与攻击面分析
嵌入式
嵌入式阿蔡1 天前
工业物理AI 2026:从巡检机器人到AI原生工厂
嵌入式