struct i2c_driver — represent an I2C device driver
struct i2c_driver { unsigned int class; int (* attach_adapter) (struct i2c_adapter *); int (* detach_adapter) (struct i2c_adapter *); int (* probe) (struct i2c_client *, const struct i2c_device_id *); int (* remove) (struct i2c_client *); void (* shutdown) (struct i2c_client *); int (* suspend) (struct i2c_client *, pm_message_t mesg); int (* resume) (struct i2c_client *); void (* alert) (struct i2c_client *, unsigned int data); int (* command) (struct i2c_client *client, unsigned int cmd, void *arg); struct device_driver driver; const struct i2c_device_id * id_table; int (* detect) (struct i2c_client *, struct i2c_board_info *); const unsigned short * address_list; struct list_head clients; };
What kind of i2c device we instantiate (for detect)
Callback for bus addition (deprecated)
Callback for bus removal (deprecated)
Callback for device binding
Callback for device unbinding
Callback for device shutdown
Callback for device suspend
Callback for device resume
Alert callback, for example for the SMBus alert protocol
Callback for bus-wide signaling (optional)
Device driver model driver
List of I2C devices supported by this driver
Callback for device detection
The I2C addresses to probe (for detect)
List of detected clients we created (for i2c-core use only)
The driver.owner field should be set to the module owner of this driver. The driver.name field should be set to the name of this driver.
For automatic device detection, both detect
and address_data
must
be defined. class
should also be set, otherwise only devices forced
with module parameters will be created. The detect function must
fill at least the name field of the i2c_board_info structure it is
handed upon successful detection, and possibly also the flags field.
If detect
is missing, the driver will still work fine for enumerated
devices. Detected devices simply won't be supported. This is expected
for the many I2C/SMBus devices which can't be detected reliably, and
the ones which can always be enumerated in practice.
The i2c_client structure which is handed to the detect
callback is
not a real i2c_client. It is initialized just enough so that you can
call i2c_smbus_read_byte_data and friends on it. Don't do anything
else with it. In particular, calling dev_dbg and friends on it is
not allowed.