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

待续。。。

相关推荐
Dr.kangder4 小时前
嵌入式总线设备解析——TTE总线应用与实践
开发语言·网络·算法·嵌入式·多任务·同步机制
平凡的小蚂蚁7 小时前
Exynos4412-POP-7inLCD裸机开发完整教程(STM32 库风格)
驱动开发·stm32·单片机·嵌入式硬件·嵌入式·硬件工程
大辉狼_音频架构12 小时前
第 01 篇:音频采样与量化 —— 从 I2S 帧到奈奎斯特定理
嵌入式·音视频开发
燕卫博1 天前
借助AI的力量,将 ZYNQ 开发板改造成一个虚拟专用网络网关
人工智能·串口·嵌入式·zynq·reasonix·ser2mcp
深念Y2 天前
ZTE_UZ901_NVRAM经验总结
linux·服务器·网络·嵌入式硬件·嵌入式·随身wifi
深念Y2 天前
tcpfwd-doc
linux·嵌入式·arm·编译·tcp·服务
华清远见成都中心3 天前
PCB设计中的电源完整性与信号,完整性基础概念
嵌入式·pcb
C++ 老炮儿的技术栈3 天前
海思嵌入式开发笔记|U‑Boot、JFFS2、TSLIB、SQLite 调试常用命令汇总
嵌入式·c·嵌入式linux·tftp·海思·jffs2
NiCo3 天前
在 Windows 上跑 lwIP(三):把 lwIP 移植进自己的工程
嵌入式
Dr.kangder3 天前
嵌入式处理器架构解析(七)——SPARC
架构·嵌入式·软件工程