]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
of/i2c: implement of_find_i2c_adapter_by_node
authorStephen Warren <swarren@nvidia.com>
Tue, 17 Apr 2012 18:43:34 +0000 (12:43 -0600)
committerWolfram Sang <w.sang@pengutronix.de>
Sat, 12 May 2012 12:28:17 +0000 (14:28 +0200)
This finds the struct i2c_adapter * for a given device tree node. Just
like of_find_i2c_device_by_node.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
drivers/of/of_i2c.c
include/linux/of_i2c.h

index 068488717f69b2867155e7f8596b519b39d2359f..1e173f3576743a702bef6125d2fc5d70bf612d24 100644 (file)
@@ -94,4 +94,18 @@ struct i2c_client *of_find_i2c_device_by_node(struct device_node *node)
 }
 EXPORT_SYMBOL(of_find_i2c_device_by_node);
 
+/* must call put_device() when done with returned i2c_adapter device */
+struct i2c_adapter *of_find_i2c_adapter_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 i2c_verify_adapter(dev);
+}
+EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
+
 MODULE_LICENSE("GPL");
index 0efe8d465f555d4a2c0f5e7ac26d97c28867db68..1cb775f8e663d6d2dc60d79b9be79ddaae480273 100644 (file)
@@ -20,6 +20,10 @@ extern void of_i2c_register_devices(struct i2c_adapter *adap);
 /* must call put_device() when done with returned i2c_client device */
 extern struct i2c_client *of_find_i2c_device_by_node(struct device_node *node);
 
+/* must call put_device() when done with returned i2c_adapter device */
+extern struct i2c_adapter *of_find_i2c_adapter_by_node(
+                                               struct device_node *node);
+
 #else
 static inline void of_i2c_register_devices(struct i2c_adapter *adap)
 {