October 2017
Intermediate to advanced
586 pages
14h 8m
English
As we have seen in matching mechanisms, we need to provide a device_id array in order to expose devices that our driver can manage. Since we are talking about I2C devices, the structure would be i2c_device_id. That array will inform the kernel about the devices that we are interested in, in the driver.
Now, back to our I2C device driver; after having a look in include/linux/mod_devicetable.h, you will see how struct i2c_device_id is defined:
struct i2c_device_id {
char name[I2C_NAME_SIZE];
kernel_ulong_t driver_data; /* Data private to the driver */
};
The struct i2c_device_id must be embedded in a struct i2c_driver. In order to let the I2C core (for module auto-loading) know about devices we need to handle, ...