1. 概述
对于 I2C
主机驱动,一旦编写完成就不需要再做修改,其他的 I2C
设备直接调用主机驱动提供的 API
函数完成读写操作即可。这个正好符合 Linux
的驱动分离与分层的思想,因此 Linux
内核也将 I2C
驱动分为两部分:
①、I2C
总线驱动,I2C
总线驱动就是 SOC
的 I2C
控制器驱动,也叫做 I2C
适配器驱动。
②、I2C
设备驱动,I2C
设备驱动就是针对具体的 I2C
设备而编写的驱动。
2. IIC总线驱动
相比platform
总线而言,I2C
不需要虚拟出一条总线,直接使用 I2C
总线即可。I2C
总线驱动重点是 I2C
适配器(也就是 SOC
的 I2C
接口控制器)驱动,这里要用到两个重要的数据结构:i2c_adapter
和 i2c_algorithm
,Linux
内核将 SOC
的