1 手把手教你写Linux I2C 设备驱动 Linux I2C 驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C 设备,几乎都需要编写相应的I2C 驱动去配置和控制它,例如 RTC 实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM 芯片、AD/DA 转换芯片等等
Linux I2C 驱动涉及的知识点还是挺多的,主要分为Linux I2C 的总线驱动(I2C BUS Driver)和设备驱动(I2C Clients Driver),本文主要关注如何快速地完成一个具体的I2C设备驱动(I2C Clients Driver)
关于 Linux I2C 驱动的整体架构、核心原理等可以在网上搜索其他相关文章学习
本文主要参考了 Linux内核源码目录下的
/Documentation/i2c/writing-clients 文档
以手头的一款视频采集芯片TVP5158 为驱动目标,编写Linux I2C 设备驱动
i2c_driver 结构体对象 每一个 I2C 设备驱动,必须首先创造一个 i2c_driver 结构体对象,该结构体包含了 I2C设备探测和注销的一些基本方法和信息,示例如下: 1
static struct i2c_driver tvp5158_i2c_driver = { 2
driver = { 3
name = "tvp5158_i2c_driver", 4
attach_adapter = &tvp5158_attach_adapter, 6
detach_client = &tvp5158_detach_client, 7
command = NULL, 8
}; 其中,name 字段标识本驱动的名称(不要超过 31 个字符),attach_adapter 和d