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

待续。。。

相关推荐
晚秋大魔王19 小时前
全志F10c200开发笔记——移植uboot
嵌入式·全志·f10c200s
华清远见成都中心1 天前
嵌入式开发入门指南:从零开始学习嵌入式
学习·嵌入式
我不是帅戈1 天前
STM32单片机内存分配详细讲解
stm32·单片机·嵌入式·内存管理·.map文件
s1ckrain2 天前
嵌入式操作系统学习笔记
学习·嵌入式·ucosii
憧憬一下2 天前
stm32之FLASH
stm32·单片机·嵌入式
忧虑的乌龟蛋4 天前
嵌入式Linux I2C驱动开发详解
linux·驱动开发·嵌入式·iic·i2c·读数据·写数据
小森77675 天前
(九)PMSM驱动控制学习---分流电阻采样及重构
stm32·嵌入式·电机控制·foc·永磁同步电机·pmsm·电流采样
FreakStudio5 天前
一文速通Python并行计算:10 Python多进程编程-进程之间的数据共享-基于共享内存和数据管理器
python·嵌入式·多线程·多进程·线程同步
买辣椒用券6 天前
ESP32开发入门(七):HTTP开发实践
网络协议·嵌入式
憧憬一下7 天前
stm32之USART
stm32·单片机·嵌入式硬件·串口·嵌入式·usart