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

待续。。。

相关推荐
FreakStudio2 天前
一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool
python·嵌入式·面向对象·多进程·并行计算·电子diy
Spectre_Mercury3 天前
imx6ull(0):烧录、启动
嵌入式
才鲸嵌入式6 天前
Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速
c语言·ubuntu·嵌入式·qemu·虚拟机·模拟器
华清远见IT开放实验室7 天前
华清远见亮相第63届高博会,展示AI/嵌入式/物联网/具身智能全栈教学解决方案
物联网·嵌入式·硬件·具身智能·虚拟仿真·ai人工智能
FreakStudio8 天前
一文速通Python并行计算:11 Python多进程编程-进程之间的数据安全传输-基于队列和管道
python·嵌入式·面向对象·并行计算·电子diy
番茄灭世神9 天前
嵌入式Linux快速入门第1~2章
linux·嵌入式·imx6ull
FreakStudio10 天前
普通继电器 vs 磁保持继电器 vs MOS管:工作原理与电路设计全解析
嵌入式·硬件·技术栈·电子diy·电子计算机
无聊到发博客的菜鸟10 天前
RT-Thread源码阅读(3)——内核对象管理
stm32·单片机·物联网·嵌入式·rt-thread·rtt·rtos
自由的晚风10 天前
基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
经验分享·物联网·开源·嵌入式·小米·nuttx·openvela
s1ckrain11 天前
ARM笔记-ARM伪指令及编程基础
arm开发·嵌入式