一,SPI设备驱动框架
在 platform驱动框架和PWM驱动框架中,都提到过驱动的分离,也就是控制器或总线和设备的分离。I2C的驱动结构,分为I2C总线和I2C设备。总线是芯片本身的I2C资源,而设备则是I2C外接的用户设备如RTC、EEPROM等。
1,I2C控制器驱动:内核中使用结构体i2c_adapter来表示I2C控制器,i2c_adapter结构体定义在文件include/linux/i2c.h中。
struct i2c_adapter
{
struct module *owner;
unsigned int class; /* classes to allow probing for */
const struct i2c_algorithm *algo; /* the algorithm to access the bus */
void *algo_data;
/* data fields that are valid for all devices */
const struct i2c_lock_operations *lock_ops;
struct rt_mutex bus_lock;
struct rt_mutex mux_lock;
int timeout; /* in jiffies */
int retries;
struct device dev; /* the adapter device */
int nr;