Loading Documentation/i2c/writing-clients +14 −4 Original line number Diff line number Diff line Loading @@ -25,12 +25,23 @@ routines, and should be zero-initialized except for fields with data you provide. A client structure holds device-specific information like the driver model device node, and its I2C address. /* iff driver uses driver model ("new style") binding model: */ static struct i2c_device_id foo_idtable[] = { { "foo", my_id_for_foo }, { "bar", my_id_for_bar }, { } }; MODULE_DEVICE_TABLE(i2c, foo_idtable); static struct i2c_driver foo_driver = { .driver = { .name = "foo", }, /* iff driver uses driver model ("new style") binding model: */ .id_table = foo_ids, .probe = foo_probe, .remove = foo_remove, Loading Loading @@ -173,10 +184,9 @@ handle may be used during foo_probe(). If foo_probe() reports success (zero not a negative status code) it may save the handle and use it until foo_remove() returns. That binding model is used by most Linux drivers. Drivers match devices when i2c_client.driver_name and the driver name are the same; this approach is used in several other busses that don't have device typing support in the hardware. The driver and module name should match, so hotplug/coldplug mechanisms will modprobe the driver. The probe function is called when an entry in the id_table name field matches the device's name. It is passed the entry that was matched so the driver knows which one in the table matched. Device Creation (Standard driver model) Loading include/linux/i2c.h +1 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ struct i2c_client { struct i2c_adapter *adapter; /* the adapter we sit on */ struct i2c_driver *driver; /* and our access routines */ struct device dev; /* the device structure */ int irq; /* irq issued by device (or -1) */ int irq; /* irq issued by device */ struct list_head list; /* DEPRECATED */ struct completion released; }; Loading Loading
Documentation/i2c/writing-clients +14 −4 Original line number Diff line number Diff line Loading @@ -25,12 +25,23 @@ routines, and should be zero-initialized except for fields with data you provide. A client structure holds device-specific information like the driver model device node, and its I2C address. /* iff driver uses driver model ("new style") binding model: */ static struct i2c_device_id foo_idtable[] = { { "foo", my_id_for_foo }, { "bar", my_id_for_bar }, { } }; MODULE_DEVICE_TABLE(i2c, foo_idtable); static struct i2c_driver foo_driver = { .driver = { .name = "foo", }, /* iff driver uses driver model ("new style") binding model: */ .id_table = foo_ids, .probe = foo_probe, .remove = foo_remove, Loading Loading @@ -173,10 +184,9 @@ handle may be used during foo_probe(). If foo_probe() reports success (zero not a negative status code) it may save the handle and use it until foo_remove() returns. That binding model is used by most Linux drivers. Drivers match devices when i2c_client.driver_name and the driver name are the same; this approach is used in several other busses that don't have device typing support in the hardware. The driver and module name should match, so hotplug/coldplug mechanisms will modprobe the driver. The probe function is called when an entry in the id_table name field matches the device's name. It is passed the entry that was matched so the driver knows which one in the table matched. Device Creation (Standard driver model) Loading
include/linux/i2c.h +1 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ struct i2c_client { struct i2c_adapter *adapter; /* the adapter we sit on */ struct i2c_driver *driver; /* and our access routines */ struct device dev; /* the device structure */ int irq; /* irq issued by device (or -1) */ int irq; /* irq issued by device */ struct list_head list; /* DEPRECATED */ struct completion released; }; Loading