一. 简介
前面一篇文章学习了 Linux下 I2C 驱动框架与 I2C总线驱动(即I2C控制器驱动),文章如下:
Linux下I2C驱动实验: I2C驱动框架与I2C总线驱动-CSDN博客
Linux 内核也将 I2C 驱动分为两部分:
(1) I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。
(2) I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。
本文来学习一下 I2C 设备驱动。
二. Linux下I2C驱动实验:I2C设备驱动
I2C 设备驱动重点关注两个数据结构:i2c_client 和 i2c_driver,i2c_client 就是描述设备信息的,i2c_driver 描述驱动内容,类似于 platform_driver。
1. I2C 设备驱动涉及的结构体
(1)i2c_client 结构体
i2c_client
结构体定义在
include/linux/i2c.h
文件中,内容如下:
struct i2c_client {
unsigned short flags; /* 标志 */
unsigned short addr; /* 芯片地址,7 位,存在低 7 位*/
......
char name[I2C_NAME_SIZE]; /* 名字 */
struc