October 2017
Intermediate to advanced
586 pages
14h 8m
English
An I2C driver is declared in kernel as an instance of struct i2c_driver, which looks as follows:
struct i2c_driver {
/* Standard driver model interfaces */
int (*probe)(struct i2c_client *, const struct i2c_device_id *);
int (*remove)(struct i2c_client *);
/* driver model interfaces that don't relate to enumeration */
void (*shutdown)(struct i2c_client *);
struct device_driver driver;
const struct i2c_device_id *id_table;
};
The struct i2c_driver structure contains and characterizes general access routines needed to handle the devices claiming the driver, whereas struct i2c_client contains device-specific information, such as its address. A struct i2c_client structure represents and characterizes an I2C device. Later ...