I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
我的理念:简单实用即可,不要搞一堆源码出来,结果让人看了以后还不知道怎么用,看我的:
1、在arch/arm/mach-xxx/ 自己的平台文件里添加i2c信息,美其名曰:i2c_board_info
例如:
static struct i2c_board_info __initdata xxxi2c_board_info[] = {
{
I2C_BOARD_INFO("abcd1", 0x20), /* 字符串要与后面的匹配,0x20是从设备地址 */
.platform_data = 0,
},
{
I2C_BOARD_INFO("abcd2", 0x21),
.platform_data = 0,
},
};
然后调用i2c_register_board_info(1, xxxi2c_board_info, ARRAY_SIZE(xxxi2c_board_info));
第一个参数是0还是1,我还不知道:-(
2、在另外一个设备驱动文件里,比如你放到/driver/char下做字符设备,一般是module_init(func_init())形式,则调用i2c_add_driver()即可,有几个要定义:
static const struct i2c_device_id xxx_led_id[] = {
{ "abcd1", 0 }, /* 该名称必须与BOARD_INFO的匹配才会调用probe函数 */
{ "abcd2", 0 },
{ }
};
MODULE_DEVICE_TABLE(i2c, xxx_led_id);
static struct i2c_driver xxx_led_driver = {
.driver = {
.name = "yourname", /* 该名字不需要与别的匹配 */
.owner = THIS_MODULE,
},
.probe = xxx_led_probe,
.remove = xxx_remove,
.id_table = xxx_led_id,
};
看到了吧,struct i2c_device_id里面的字符串与 I2C_BOARD_INFO里面的匹配后,xxx_led_probe才会调用。
如果不想用同一个probe,那就在写一个struct i2c_device_id和struct i2c_driver
怎么样,知道流程和每个结构体是干什么用的了吧?
I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info相关推荐
- Linux I2C总线(二)I2C设备驱动编写方法
Linux I2C总线 Linux I2C总线(一)I2C驱动框架 Linux I2C总线(二)I2C设备驱动编写方法 Linux I2C总线(二)I2C设备驱动编写方法 文章目录 Linux I2C ...
- Linux I2C设备驱动编写(二)
I2C对外API I2C client的注册 i2c_register_board_info具体实现 i2c_new_device I2C driver 关于I2C设备驱动的小总结 I2C adapt ...
- 迅为IMX6ULL开发板Linux I2C设备驱动编写流程-信息描述
1 .不使用设备树文件 当开始编写 I2C 设备驱动时,首先要添加设备信息.先来看一下在不使用设备树,使用平台文件时, 如何在平台文件中添加 I2C 设备信息. 在平台文件中通过 i2c_board_ ...
- Linux 设备驱动篇之I2c设备驱动
******************************************************************************************** 装载声明:希望 ...
- platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架
platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...
- Linux设备驱动篇——[I2C设备驱动-1]
Linux 设备驱动篇之I2c设备驱动 fulinux 一.I2C驱动体系 虽然I2C硬件体系结构和协议都很容易理解,但是Linux I2C驱动体系结构却有相当的复杂度,它主要由3部分组成,即I2C设 ...
- 用户空间访问I2C设备驱动
2012-01-11 15:33:43 标签:Linux I2C 字符设备 设备驱动 用户空间 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...
- Android上层与驱动交互完整篇(一)I2C设备驱动篇
Android上层与驱动交互完整篇(一) 驱动篇 以I2C设备驱动为例,创建与上层交互节点,解析数据并与设备进行通讯. kernel中编程如同站在巨人肩膀上,有时候,我们并不需要理解I2C总线是如何工 ...
- i2c设备驱动实例 ds1307为例
i2c设备驱动实例 ds1307为例 http://blog.csdn.net/airk000/article/details/21345457 http://blog.csdn.net/creazy ...
最新文章
- “你要是有这个功能就好了!”
- mysql慢查询日志时间戳_Mysql查询在时间戳的日期范围内非常慢
- iis 防火墙防止恶意ip攻击
- Pod详解-生命周期-概述
- 32位、64汇编区别
- PyTorch入门-简单图片分类
- linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
- shell_exec() php 执行shell脚本
- java基础知识五、六、七、八
- metasploit下载教程linux,Metasploit 3.6安装与配置之Linux篇
- USB OTG原理简述实际的USB连接线中,是没有USB_ID这根线的。 都是在接口部分直接拉死的。两用OTG设备都有一个Mini-AB插槽,所以一个Mini-A至Mini-B电缆可以直接将两个连接
- 微信小程序接受服务器发过来的消息,微信小程序API 接收消息和事件
- 8个电脑小技巧让你在朋友圈秒杀众人!
- 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述
- 悲观锁、乐观锁、自旋锁和读写锁
- pexpect学习(一)
- 矛与盾---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十五)
- Linux Let's Encrypt生成免费证书
- refresh方法_Android Shake to Refresh教程
- 数据库和databus