summaryrefslogtreecommitdiffstats
path: root/include/linux/i2c.h
diff options
context:
space:
mode:
authorJean Delvare2007-05-01 23:26:31 +0200
committerJean Delvare2007-05-01 23:26:31 +0200
commit12b5053ac58709c7d475888bc18d1f61958afc4e (patch)
tree13a6afc6ad6d3f22568045ba71277c1331fd4283 /include/linux/i2c.h
parenti2c-algo-bit: Add i2c_bit_add_numbered_bus (diff)
downloadkernel-qcow2-linux-12b5053ac58709c7d475888bc18d1f61958afc4e.tar.gz
kernel-qcow2-linux-12b5053ac58709c7d475888bc18d1f61958afc4e.tar.xz
kernel-qcow2-linux-12b5053ac58709c7d475888bc18d1f61958afc4e.zip
i2c: Add i2c_new_probed_device()
Add a new helper function to instantiate an i2c device. It is meant as a replacement for i2c_new_device() when you don't know for sure at which address your I2C/SMBus device lives. This happens frequently on TV adapters for example, you know there is a tuner chip on the bus, but depending on the exact board model and revision, it can live at different addresses. So, the new i2c_new_probed_device() function will probe the bus according to a list of addresses, and as soon as one of these addresses responds, it will call i2c_new_device() on that one address. This function will make it possible to port the old i2c drivers to the new model quickly. Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'include/linux/i2c.h')
-rw-r--r--include/linux/i2c.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 36d6814a6df4..da95ce79d075 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -245,6 +245,15 @@ struct i2c_board_info {
extern struct i2c_client *
i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info);
+/* If you don't know the exact address of an I2C device, use this variant
+ * instead, which can probe for device presence in a list of possible
+ * addresses.
+ */
+extern struct i2c_client *
+i2c_new_probed_device(struct i2c_adapter *adap,
+ struct i2c_board_info *info,
+ unsigned short const *addr_list);
+
extern void i2c_unregister_device(struct i2c_client *);
/* Mainboard arch_initcall() code should register all its I2C devices.