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

待续。。。

相关推荐
charlie11451419115 小时前
嵌入式现代C++教程:C++98——从C向C++的演化(3)
c语言·开发语言·c++·笔记·学习·嵌入式
无聊到发博客的菜鸟21 小时前
STM32 手册寄存器属性
stm32·单片机·嵌入式·rtos·寄存器
无聊到发博客的菜鸟1 天前
STM32 RTC时钟不准的问题
stm32·嵌入式·rtc·rtos
嵌入式×边缘AI:打怪升级日志2 天前
USB描述符
学习笔记·嵌入式·usb
铜豌豆_Y3 天前
【实用】GDB调试保姆级教程|常用操作|附笔记
linux·c语言·驱动开发·笔记·嵌入式
星源~3 天前
VsCode-单片机开发环境配置指定编译器
ide·vscode·单片机·物联网·嵌入式
迷人的星空3 天前
用对这些常识,嵌入式文件系统少踩坑?
物联网·嵌入式
charlie1145141914 天前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
月光技术杂谈4 天前
Linux发展到6.0了,其在嵌入式应用中,实时性方面有没有一些改进?
linux·嵌入式·实时性
切糕师学AI6 天前
Azure RTOS ThreadX 简介
microsoft·嵌入式·azure·rtos