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

待续。。。

相关推荐
凉、介21 小时前
Virtio 系列(一):框架概览
笔记·学习·嵌入式·虚拟化·virtio
charlie1145141911 天前
RK3506B: buildroot:出一份正规的最小 rootfs
开发语言·嵌入式·开源项目·rk3506b
piaoyiren1 天前
串口指令控制8路LED音乐流水灯程序
51单片机·嵌入式·普中
青衫嵌入式2 天前
懂了汽车,就懂了 C 语言面向对象编程
嵌入式
华清远见IT开放实验室2 天前
从嵌入式到具身智能:嵌入式AI机器狗FS_D2,一站式打通高校嵌入式+AI+机器人教学全链路
人工智能·ai·嵌入式·实验室·具身智能·高校
piaoyiren2 天前
STC8 6 位数字密码锁程序功能
51单片机·嵌入式·普中
dddwjzx3 天前
嵌入式Linux C应用编程入门——高级I/O
linux·嵌入式
piaoyiren3 天前
普中A6 静态数码管显示 数字
单片机·嵌入式·普中a6
阿拉斯攀登3 天前
平台设备驱动:platform bus 与设备树
linux·嵌入式硬件·嵌入式·linux驱动·字符设备驱动
阿拉斯攀登3 天前
SPI 设备驱动开发
linux·驱动开发·嵌入式硬件·linux内核·嵌入式·linux驱动·spi