summaryrefslogtreecommitdiffstats
path: root/drivers/of/of_i2c.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-01-22 10:03:02 +0100
committerThomas Gleixner <tglx@linutronix.de>2009-01-22 10:03:02 +0100
commit6552ebae25ffd57574c6e72d17fce67fea08b918 (patch)
treecde6cc932c7e47d818154b011dfd8a6997d5c18e /drivers/of/of_i2c.c
parentrcu: remove duplicate CONFIG_RCU_CPU_STALL_DETECTOR (diff)
parentdebugobjects: add and use INIT_WORK_ON_STACK (diff)
downloadlinux-6552ebae25ffd57574c6e72d17fce67fea08b918.tar.xz
linux-6552ebae25ffd57574c6e72d17fce67fea08b918.zip
Merge branch 'core/debugobjects' into core/urgent
Diffstat (limited to 'drivers/of/of_i2c.c')
-rw-r--r--drivers/of/of_i2c.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
index e1b0ad6e918f..fa65a2b2ae2e 100644
--- a/drivers/of/of_i2c.c
+++ b/drivers/of/of_i2c.c
@@ -66,4 +66,23 @@ void of_register_i2c_devices(struct i2c_adapter *adap,
}
EXPORT_SYMBOL(of_register_i2c_devices);
+static int of_dev_node_match(struct device *dev, void *data)
+{
+ return dev_archdata_get_node(&dev->archdata) == data;
+}
+
+/* must call put_device() when done with returned i2c_client device */
+struct i2c_client *of_find_i2c_device_by_node(struct device_node *node)
+{
+ struct device *dev;
+
+ dev = bus_find_device(&i2c_bus_type, NULL, node,
+ of_dev_node_match);
+ if (!dev)
+ return NULL;
+
+ return to_i2c_client(dev);
+}
+EXPORT_SYMBOL(of_find_i2c_device_by_node);
+
MODULE_LICENSE("GPL");