我的理念:简单实用即可,不要搞一堆源码出来,结果让人看了以后还不知道怎么用,看我的:

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相关推荐

  1. Linux I2C总线(二)I2C设备驱动编写方法

    Linux I2C总线 Linux I2C总线(一)I2C驱动框架 Linux I2C总线(二)I2C设备驱动编写方法 Linux I2C总线(二)I2C设备驱动编写方法 文章目录 Linux I2C ...

  2. Linux I2C设备驱动编写(二)

    I2C对外API I2C client的注册 i2c_register_board_info具体实现 i2c_new_device I2C driver 关于I2C设备驱动的小总结 I2C adapt ...

  3. 迅为IMX6ULL开发板Linux I2C设备驱动编写流程-信息描述

    1 .不使用设备树文件 当开始编写 I2C 设备驱动时,首先要添加设备信息.先来看一下在不使用设备树,使用平台文件时, 如何在平台文件中添加 I2C 设备信息. 在平台文件中通过 i2c_board_ ...

  4. Linux 设备驱动篇之I2c设备驱动

    ******************************************************************************************** 装载声明:希望 ...

  5. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

  6. Linux设备驱动篇——[I2C设备驱动-1]

    Linux 设备驱动篇之I2c设备驱动 fulinux 一.I2C驱动体系 虽然I2C硬件体系结构和协议都很容易理解,但是Linux I2C驱动体系结构却有相当的复杂度,它主要由3部分组成,即I2C设 ...

  7. 用户空间访问I2C设备驱动

    2012-01-11 15:33:43 标签:Linux I2C 字符设备 设备驱动 用户空间 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...

  8. Android上层与驱动交互完整篇(一)I2C设备驱动篇

    Android上层与驱动交互完整篇(一) 驱动篇 以I2C设备驱动为例,创建与上层交互节点,解析数据并与设备进行通讯. kernel中编程如同站在巨人肩膀上,有时候,我们并不需要理解I2C总线是如何工 ...

  9. i2c设备驱动实例 ds1307为例

    i2c设备驱动实例 ds1307为例 http://blog.csdn.net/airk000/article/details/21345457 http://blog.csdn.net/creazy ...

最新文章

  1. “你要是有这个功能就好了!”
  2. mysql慢查询日志时间戳_Mysql查询在时间戳的日期范围内非常慢
  3. iis 防火墙防止恶意ip攻击
  4. Pod详解-生命周期-概述
  5. 32位、64汇编区别
  6. PyTorch入门-简单图片分类
  7. linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. shell_exec() php 执行shell脚本
  9. java基础知识五、六、七、八
  10. metasploit下载教程linux,Metasploit 3.6安装与配置之Linux篇
  11. USB OTG原理简述实际的USB连接线中,是没有USB_ID这根线的。 都是在接口部分直接拉死的。两用OTG设备都有一个Mini-AB插槽,所以一个Mini-A至Mini-B电缆可以直接将两个连接
  12. 微信小程序接受服务器发过来的消息,微信小程序API 接收消息和事件
  13. 8个电脑小技巧让你在朋友圈秒杀众人!
  14. 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述
  15. 悲观锁、乐观锁、自旋锁和读写锁
  16. pexpect学习(一)
  17. 矛与盾---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十五)
  18. Linux Let's Encrypt生成免费证书
  19. refresh方法_Android Shake to Refresh教程
  20. 数据库和databus

热门文章

  1. jquery.easyui常用示例
  2. virtualbox配置apache_virtualbox 网络配置 (转)
  3. 数据结构实验二 树和二叉树的实现
  4. C语言ASM汇编内嵌语法zz
  5. ad17编辑界面怎么检查未连线_软件账务处理流程之——凭证审核与检查
  6. 靠谱的Pycharm安装详细教程
  7. git 多用户多仓库配置
  8. [SimplePlayer] 2. 在屏幕上显示视频图像
  9. js总结:对于字符串的切割截取和合并
  10. gulp插件gulp-ruby-sass和livereload插件