Linux下I2C设备驱动:i2c_driver 的注册示例代码

一.  简介

前面学习了 Linux下 I2C驱动框架分为:I2C总线驱动与I2C设备驱动两个部分。我们主要重点学习 I2C设备驱动,前一篇文章学习了I2C设备驱动相关的结构体与设备驱动注册与删除。文章如下:

Linux下I2C驱动实验:I2C 设备驱动-CSDN博客

本文来学习I2C设备驱动涉及的 i2c_driver 的注册,主要学习一下 i2c_driver 的注册代码示例框架。

二.  Linux下I2C设备驱动:i2c_driver 的注册示例代码

i2c_driver 的注册示例代码如下:

/* i2c 驱动的 probe 函数 */
static int xxx_probe(struct i2c_client *client,const struct i2c_device_id *id)
{/* 函数具体程序 */return 0;
}/* i2c 驱动的 remove 函数 */
static int xxx_remove(struct i2c_client *client)
{/* 函数具体程序 */return 0;
}/* 传统匹配方式 ID 列表 */
static const struct i2c_device_id xxx_id[] = {{ "xxx", 0 },{ }
};/* 设备树匹配列表 */
static const struct of_device_id xxx_of_match[] = {{.compatible = "xxx"},{/* Sentinel */}
};/* i2c 驱动结构体 */
static struct i2c_driver xxx_driver = {.probe = xxx_probe,.remove = xxx_remove,.driver = {.owner = THIS_MODULE,.name = "xxx",.of_match_table = of_match_ptr(xxx_of_match),},id_table = xxx_id,
};/* 驱动入口函数 */static  int __init xxx_init(void){int ret = 0;/* 注册驱动 */ret = i2c_add_driver(&xxx_driver);return ret;}/* 驱动出口函数 */static void __exit xxx_exit(void){/* 注销驱动 */i2c_del_driver(&xxx_driver);}module_init(xxx_init);module_exit(xxx_exit);

19~22 行, i2c_device_id ,无设备树的时候匹配 ID 表。

25~28 行,of_device_id,设备树所使用的匹配表。

31~41 行,i2c_driver,当 I2C 设备和 I2C 驱动匹配成功以后, probe 函数就会执行。

这些和 platform 驱动一样,probe 函数里面基本就是标准的字符设备驱动那一套了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象存储服务MinIO安装使用

对象存储服务MinIO安装使用 MinIO简介 MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置…

爬虫逆向非对称加密和对称加密案例

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 案例--aHR0cHM6Ly9jcmVkaXQuaGxqLmdvdi5jbi94eWdzL3l6d2ZzeHF5bWQv 第一步:分析页面、请求…

CTF 之Zhuanxv

拿到题目进行目录遍历发现有一个/list文件 打开/list文件,发现是一个登录界面 尝试过爆破,毫无疑问不可能成功。 刷新页面,抓包,然后放一个包,发现又发了一个请求。 GET /loadimage?fileNameweb_login_bg.jpg HTTP/…

1995-2021年各省分品种能源产量和消费量数据

1995-2021年各省分品种能源产量和消费量数据 1、时间:1995-2021年 2、来源:能源统计年鉴、各省年鉴 3、指标:能源消费总量、煤炭消费量、焦炭消费量、原油消费量、汽油消费量、煤油消费量、柴油消费量、燃料油消费量、天然气消费量、电力消…

不开玩笑,你应该像「搬砖」一样写代码!斯坦福大学研究如是说

由于程序员不可避免要进行很多重复性的工作,并且工作强度很高,导致有一种自嘲的说法出现:程序员们自称自己每天都在搬砖(实际上很多职场人都这么自嘲)。我相信当我们说工作像「搬砖」的时候,只是在表达一种…

JSX 入门:React 开发者的必备技能指南

JSX 是 React 的一种语法扩展,用于描述 UI 组件的外观。在 React 中,JSX 可以与 JavaScript 一起使用,帮助您在应用程序中创建动态和可重用的组件。以下是 JSX 的语法、使用技巧和注意事项,以及一些示例代码。 JSX 基础语法 JSX…

非关系型数据库——三万字Redis数据库详解

目录 前言 一、Redis概述 1.主要特点 2.Redis优缺点 3.Redis为什么这么快 4.Redis那么快,为什么不用它做主数据库,只用它做缓存 5.线程模型 5.1单线程架构 5.2多线程IO处理(Redis 6及以上) 5.3线程模型的优化 6.作用 …

回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测

回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测 目录 回归预测 | Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-GPR鲸鱼算法优化高斯过程回归多变量回归预测 1.Matlab实现…

系统设计取舍问题

在需求设计过程中,常常面临着取舍问题。由于资源和时间的限制,不可能满足所有的需求,因此需要进行取舍。以下是一些常见的需求设计取舍问题和应对方法: 优先级:对于不同的需求,可以根据其重要性和紧急程度来…

蓝桥杯考前复习二

1.快速幂 public static long qmi(long a, long b, long p) {long r 1;while (b ! 0) {if ((b & 1) 1) {r (r * a) % p;}b >> 1;a a * a % p;}return r;} 2.Java日期类 日期问题暂更 3.日期问题模板 考前更新 4.状态机DP 1.松散子序列 - 蓝桥云课 (lanqia…

LOOP AT内表循环事件块 程序实例

REPORT zdemo_0006. *声明一个结构 DATA: BEGIN OF gs_alv, va1 TYPE char2, va2 TYPE char2, va3 TYPE char2, va4 TYPE char2, END OF gs_alv. *声明内表 DATA: gt_alv LIKE TABLE OF gs_alv. *赋值宏 DEFINE append_va. gs_alv-va1…

吹爆!遥感高光谱分类(Python)

目录 一、数据集下载 二、安装包 三、数据处理 四、模型训练 五、模型推理 六、踩坑记录 一、数据集下载 Hyperspectral Remote Sensing Scenes - Grupo de Inteligencia Computacional (GIC) (ehu.eus) Installing SPy — Spectral Python 0.21 documentation 二、安装…

算法打卡day36|动态规划篇04| 01背包理论基础、416. 分割等和子集

目录 01背包理论基础 01背包问题描述 01背包解法 二维数组 一维数组 算法题 Leetcode 416. 分割等和子集 个人思路 解法 动态规划 01背包理论基础 不同的背包种类,虽然有那么多中南背包,但其中01背包和完全背包是重中之重; 01背包问…

Python + Appium 自动化操作微信入门看这一篇就够了

Appium 是一个开源的自动化测试工具,支持 Android、iOS 平台上的原生应用,支持 Java、Python、PHP 等多种语言。 Appium 封装了 Selenium,能够为用户提供所有常见的 JSON 格式的 Selenium 命令以及额外的移动设备相关的控制命令,…

LABVIEW--正弦+高斯噪声信号及滤波

前面板信号 后面板 LABVIEW源程序链接:https://pan.baidu.com/s/11B-75i4fHZwWQyjxn9yCyQ?pwd7tfj 提取码:7tfj

中文地址分词器源码阅读(jiedi)

文章目录 structure.p文件pd.read_excelenumerate思维导图核心源码讲解jiedi.pytrain.py 总结 structure 点击左边的Structure按钮就如Structure界面。从Structure我们可以看出当前代码文件中有多少个全局变量、函数、类以及类中有多少个成员变量和成员函数。 其中V图标表示全…

AI普及时代,【AI书童】助你提升自我竞争力

AI运营官招募令!!! 【AI书童】运营官 未来智慧人工智能 2024-03-26 12:00 浙江 微信公众号:未来智慧人工智能 助力个人和企业在人工智能时代持续成功 随着ChatGPT、GPT-4和Sora等创新技术的推出,人工智能在多模态领…

《梦幻西游》迎来史上最大翻车,老玩家们为何纷纷揭竿而起?

因一次调整,21岁的《梦幻西游》迎来了自己有史以来最大的一波节奏。 玩家在微博上炮轰官方,称:“游戏借着打击工作室牟利的称号,砍副本活动产出,然后自己口袋无限卖”,要求改善游戏现状。 从3月29日起&am…

小黑逆向爬虫探索与成长之路:小黑独立破解毛毛租数据加密与解密

前言 有道和招标网的加密入口定位在前面两期做了详细的介绍,本小结将通过简单的关键词搜索定位到加密与解密入口 数据接口寻找与请求 根据响应数据长度,确定数据接口,发现传入的参数需要加密,响应的结果需要解密,后…

nodejs应用程序不同部署环境下的差异配置方案

一、背景 nodejs应用程序,不同于java语言使用分布式配置,当部署于不同的环境里,因为环境的差异,配置项的值也不尽相同。 最常见的差异就是数据库的连接信息,而代码是一份,不能把生产环境的信息暴露在非生产…