在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驱动的更多相关文章

  1. Smart210学习记录-----Linux i2c驱动

    一:Linux i2c子系统简介: 1.Linux 的 I2C 体系结构分为 3 个组成部分: (1) I2C 核心. I2C 核心提供了 I2C 总线驱动和设备驱动的注册.注销方法,I2C 通信方法 ...

  2. linux下i2c驱动笔记 转

    1. 几个基本概念 1.1. 设备模型 由 总线(bus_type) + 设备(device) + 驱动(device_driver) 组成,在该模型下,所有的设备通过总线连接起来,即使有些设备没有连 ...

  3. 【转】 i2c驱动调试经验

    原文网址:http://blog.csdn.net/cmm20071020/article/details/7179958 把一个i2c驱动从2.6.21升级到2.6.39 上网查到一篇帖子,讲了驱动 ...

  4. 驱动: i2c驱动 >>>>

    1. IIC协议: <<um_s3c2440a_rev10.pdf>>  p481 Figure 20-3. IIC-Bus Interface Data Format< ...

  5. linux i2c驱动架构-dm368 i2c驱动分析

      linux i2c驱动架构-dm368 i2c驱动分析   在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinc ...

  6. I2C驱动框架 (kernel-3.4.2)

    先用韦老师的图: 注:  新版本内核的i2c驱动框架采用了    i2c_client -------> i2c_bus_type  <-------- i2c_driver   框架 如 ...

  7. 【Linux高级驱动】I2C驱动框架分析

    1.i2c-dev.c(i2c设备驱动组件层) 功能:1)给用户提供接口 i2c_dev_init  //入口函数 /*申请主设备号*/ register_chrdev(I2C_MAJOR(), &q ...

  8. Linux驱动:I2C驱动编写要点

    继续上一篇博文没讲完的内容“针对 RepStart 型i2c设备的驱动模型”,其中涉及的内容有:i2c_client 的注册.i2c_driver 的注册.驱动程序的编写. 一.i2c 设备的注册分析 ...

  9. 【驱动】linux下I2C驱动架构全面分析

    I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...

  10. i2c驱动笔记

    基于bcm5300x芯片 注册平台总线设备,设备名bcm5300x_i2c,通过名称与驱动进行匹配. 注册平台总线驱动.驱动名称"bcm5300x_i2c",与设备进行匹配. dr ...

随机推荐

  1. tp.c

    calculate throughput /* gput.c: out.tr¤ò²òÀϤ·¤Æ¥¹¥ë¡¼¥×¥Ã¥ÈÆÃÀ­¤ò·×»»¤¹¤ë * out.et¤ò²òÀϤ·¤ÆºÆÁ÷¥¿¥ ...

  2. linux下设置eclipse中的项目和类名的字体大小

    由于刚装的eclipse中的项目和类名字体太小,并且windows中没有可以更改的方法, 所以参考了网上一些文章,终于修改成功,所以反馈进行分享,望国内开源风气如stackoverflow一样. 步骤 ...

  3. 查询SQL Server 版本信息

    select SERVERPROPERTY('ProductVersion') as ProductionVersion, SERVERPROPERTY('ProductLevel')as Produ ...

  4. Android Studio添加取消代码注释快捷键

    经常需要注释,取消注释代码 Ctrl + /       对每段代码前面添加或者取消 // Ctrl + Shift + /   对代码添加 或取消 /* */ Ctrl + B     查找定义 C ...

  5. 如何退出virtualbox scale mode

    进入scale mode之后,可能会退不出来 HOST Key + C. 默认是 右Ctrl + C

  6. libevent核心-event和event_base结构体

    参考:http://blog.csdn.net/yusiguyuan/article/category/2171081/2 http://blog.csdn.net/sparkliang/articl ...

  7. bzoj3609 [Heoi2014]人人尽说江南好

    Description 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他 想起了小时候在江南玩过的一个游戏.    在过去,人们是要边玩 ...

  8. android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……

    摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...

  9. nssm 在windows上部署服务

    简介 NSSM是一款可将Nodejs项目注册为Windows系统服务的工具.当你的Node.js项目需要部署在Windows Server上时,NSSM是一个不错的选择. 特点 NSSM将Node.j ...

  10. 商品数量编辑按钮3D效果动画

    .move-enter-active transition:all 0.4s linear transform:rotate(180deg).move-leave-active transition: ...