I2C驱动
在I2C总线驱动下,也是硬件设备和驱动分离,使以就需要通过它们的名字来匹配,这样驱动的probe函数才能被调用
查看linux内核的Documents目录下的说明文件,可知构造i2c设备有4种方法:
1、定义1个i2c_board_info结构体,然后i2c_register_board_info来注册i2c_board_info,加入链尾
链表何时使用:i2c_register_adapter-->i2c_scan_static_board_info-->i2c_new_device
使用限制:必须在i2c_register_adapter之前i2c_register_board_info,而内核启动之后i2c_register_adapter已经执行完了,再注册i2c_register_board_info也不会调用i2c_new_device所以这种方法不适合动态加载驱动(insmod)
2、直接i2c_new_device, i2c_new_probed_device
3、从用户空间创建设备
echo at24c08 0x50 > /sys/class/i2c_adapter/i2c-0/new_device
echo 0x50 > /sys/class/i2c_adapter/i2c-0/delete_device
4、上面的1/2/3都得事先指定适配器:IIC设备挂到哪一条I2C总线上
在i2c_driver中加入
.class = I2C_CLASS_HWMON,
.detect = ..., //检测能否找到设备
.address_list = ..., //支持的设备的地址
用class表示的这一类I2C适配器,用detect函数来确定能否找到address_list里的设备,如果能够找到就构造i2c_client,从而调用probe函数
probe执行的前提:i2c_board_info.type 和 i2c_driver.id_table.name一致
附I2C时序图:

I2C驱动的更多相关文章
- Smart210学习记录-----Linux i2c驱动
一:Linux i2c子系统简介: 1.Linux 的 I2C 体系结构分为 3 个组成部分: (1) I2C 核心. I2C 核心提供了 I2C 总线驱动和设备驱动的注册.注销方法,I2C 通信方法 ...
- linux下i2c驱动笔记 转
1. 几个基本概念 1.1. 设备模型 由 总线(bus_type) + 设备(device) + 驱动(device_driver) 组成,在该模型下,所有的设备通过总线连接起来,即使有些设备没有连 ...
- 【转】 i2c驱动调试经验
原文网址:http://blog.csdn.net/cmm20071020/article/details/7179958 把一个i2c驱动从2.6.21升级到2.6.39 上网查到一篇帖子,讲了驱动 ...
- 驱动: i2c驱动 >>>>
1. IIC协议: <<um_s3c2440a_rev10.pdf>> p481 Figure 20-3. IIC-Bus Interface Data Format< ...
- linux i2c驱动架构-dm368 i2c驱动分析
linux i2c驱动架构-dm368 i2c驱动分析 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinc ...
- I2C驱动框架 (kernel-3.4.2)
先用韦老师的图: 注: 新版本内核的i2c驱动框架采用了 i2c_client -------> i2c_bus_type <-------- i2c_driver 框架 如 ...
- 【Linux高级驱动】I2C驱动框架分析
1.i2c-dev.c(i2c设备驱动组件层) 功能:1)给用户提供接口 i2c_dev_init //入口函数 /*申请主设备号*/ register_chrdev(I2C_MAJOR(), &q ...
- Linux驱动:I2C驱动编写要点
继续上一篇博文没讲完的内容“针对 RepStart 型i2c设备的驱动模型”,其中涉及的内容有:i2c_client 的注册.i2c_driver 的注册.驱动程序的编写. 一.i2c 设备的注册分析 ...
- 【驱动】linux下I2C驱动架构全面分析
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...
- i2c驱动笔记
基于bcm5300x芯片 注册平台总线设备,设备名bcm5300x_i2c,通过名称与驱动进行匹配. 注册平台总线驱动.驱动名称"bcm5300x_i2c",与设备进行匹配. dr ...
随机推荐
- tp.c
calculate throughput /* gput.c: out.tr¤ò²òÀϤ·¤Æ¥¹¥ë¡¼¥×¥Ã¥ÈÆÃÀ¤ò·×»»¤¹¤ë * out.et¤ò²òÀϤ·¤ÆºÆÁ÷¥¿¥ ...
- linux下设置eclipse中的项目和类名的字体大小
由于刚装的eclipse中的项目和类名字体太小,并且windows中没有可以更改的方法, 所以参考了网上一些文章,终于修改成功,所以反馈进行分享,望国内开源风气如stackoverflow一样. 步骤 ...
- 查询SQL Server 版本信息
select SERVERPROPERTY('ProductVersion') as ProductionVersion, SERVERPROPERTY('ProductLevel')as Produ ...
- Android Studio添加取消代码注释快捷键
经常需要注释,取消注释代码 Ctrl + / 对每段代码前面添加或者取消 // Ctrl + Shift + / 对代码添加 或取消 /* */ Ctrl + B 查找定义 C ...
- 如何退出virtualbox scale mode
进入scale mode之后,可能会退不出来 HOST Key + C. 默认是 右Ctrl + C
- libevent核心-event和event_base结构体
参考:http://blog.csdn.net/yusiguyuan/article/category/2171081/2 http://blog.csdn.net/sparkliang/articl ...
- bzoj3609 [Heoi2014]人人尽说江南好
Description 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他 想起了小时候在江南玩过的一个游戏. 在过去,人们是要边玩 ...
- android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……
摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...
- nssm 在windows上部署服务
简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...
- 商品数量编辑按钮3D效果动画
.move-enter-active transition:all 0.4s linear transform:rotate(180deg).move-leave-active transition: ...