Linux 的 I2C 总线驱动模型

Linux 的I2C 总线驱动架构
Bus Driver vs. Device Driver
Linux 中I2C 驱动分为两个部分,总线(BUS)和设备(DEVICE)。我把他们分别比喻为铁路和列车,相当的贴切啊!
1. 总线驱动

总线驱动是为系统中每个I2C 总线增加相应的读写方法,也包括I2C总线控制器的初始化等,但是总线驱动只提供读写函数,本身不会进行任何的通讯,因为它并不知道设备是否真正存在。这样设计也是为了减小SOC芯片驱动和外围设备驱动的耦合性。

1.2. 设备驱动

设备驱动则是与挂在I2C 总线上的具体的设备通讯的驱动。通过I2C总线驱动提供的函数,不同SOC的I2C总线控制器的差异对设备驱动透明。

在系统开机时,首先装载的是I2C总线驱动。一个总线驱动用于支持一条特定的I2C总线的读写。一个总线驱动通常需要两个模块,一个struct i2c_adapter 和一个struct i2c_algorithm 来描述。
via

Leave a Reply