aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-04-17 14:43:34 -0400
committerWolfram Sang <w.sang@pengutronix.de>2012-05-12 08:28:17 -0400
commit0938643e533cc80ef0cdfdd2e260c4910d0f8bc7 (patch)
tree7c31d3251861eed8e799b73712e9bc006a9e6804
parent643dd09eb27b40ced671564edbe2640935fe37c2 (diff)
of/i2c: implement of_find_i2c_adapter_by_node
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>
-rw-r--r--drivers/of/of_i2c.c14
-rw-r--r--include/linux/of_i2c.h4
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
index 068488717f69..1e173f357674 100644
--- a/drivers/of/of_i2c.c
+++ b/drivers/of/of_i2c.c
@@ -94,4 +94,18 @@ struct i2c_client *of_find_i2c_device_by_node(struct device_node *node)
94} 94}
95EXPORT_SYMBOL(of_find_i2c_device_by_node); 95EXPORT_SYMBOL(of_find_i2c_device_by_node);
96 96
97/* must call put_device() when done with returned i2c_adapter device */
98struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node)
99{
100 struct device *dev;
101
102 dev = bus_find_device(&i2c_bus_type, NULL, node,
103 of_dev_node_match);
104 if (!dev)
105 return NULL;
106
107 return i2c_verify_adapter(dev);
108}
109EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
110
97MODULE_LICENSE("GPL"); 111MODULE_LICENSE("GPL");
diff --git a/include/linux/of_i2c.h b/include/linux/of_i2c.h
index 0efe8d465f55..1cb775f8e663 100644
--- a/include/linux/of_i2c.h
+++ b/include/linux/of_i2c.h
@@ -20,6 +20,10 @@ extern void of_i2c_register_devices(struct i2c_adapter *adap);
20/* must call put_device() when done with returned i2c_client device */ 20/* must call put_device() when done with returned i2c_client device */
21extern struct i2c_client *of_find_i2c_device_by_node(struct device_node *node); 21extern struct i2c_client *of_find_i2c_device_by_node(struct device_node *node);
22 22
23/* must call put_device() when done with returned i2c_adapter device */
24extern struct i2c_adapter *of_find_i2c_adapter_by_node(
25 struct device_node *node);
26
23#else 27#else
24static inline void of_i2c_register_devices(struct i2c_adapter *adap) 28static inline void of_i2c_register_devices(struct i2c_adapter *adap)
25{ 29{