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

待续。。。

相关推荐
番茄灭世神2 小时前
Linux应用编程介绍
linux·嵌入式
Hello_Embed5 小时前
libmodbus 移植 STM32(USB 串口后端篇)
笔记·stm32·单片机·嵌入式·freertos·libmodbus
Ch_champion11 小时前
嵌入式研发人员的共享盘文件目录-分享
嵌入式
凉、介1 天前
静态路由探究
网络·笔记·操作系统·嵌入式
网易独家音乐人Mike Zhou2 天前
【RealMCU】瑞昱官方LOG信息保存及解析,DebugAnalyzer自动化接收脚本(不需要用到ROM.trace文件)
单片机·mcu·物联网·自动化·嵌入式·iot·瑞昱
charlie1145141912 天前
嵌入式C++教程——ETL(Embedded Template Library)
开发语言·c++·笔记·学习·嵌入式·etl
良许Linux2 天前
51单片机都有哪些优缺点
单片机·程序员·嵌入式·编程
嵌入小生0073 天前
数据结构 | 常用排序算法大全及二分查找
linux·数据结构·算法·vim·排序算法·嵌入式
梵刹古音3 天前
【C语言】 结构化编程与选择结构
c语言·开发语言·嵌入式
百锦再4 天前
《C#上位机开发从门外到门内》2-7:网络通信(TCP/IP、UDP)
tcp/ip·udp·c#·嵌入式·上位机·通信·下位机