From: Jon Smirl <jonsmirl@gmail.com>
To: linuxppc-dev@ozlabs.org
Subject: [PATCH] Add the of_find_i2c_device_by_node function.
Date: Tue, 30 Dec 2008 15:11:07 -0500 [thread overview]
Message-ID: <20081230201107.26810.71390.stgit@localhost> (raw)
Add the of_find_i2c_device_by_node function. This allows you to follow
a reference in the device tree to an i2c device node and then locate
the linux device instantiated by the device tree. Example use, an i2s
codec controlled by i2c.
This was waiting for Anton's i2c patches that were just added.
Signed-off-by: Jon Smirl <jonsmirl@gmail.com>
---
drivers/of/of_i2c.c | 19 +++++++++++++++++++
include/linux/of_i2c.h | 3 +++
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
index e1b0ad6..fa65a2b 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");
diff --git a/include/linux/of_i2c.h b/include/linux/of_i2c.h
index bd2a870..34974b5 100644
--- a/include/linux/of_i2c.h
+++ b/include/linux/of_i2c.h
@@ -17,4 +17,7 @@
void of_register_i2c_devices(struct i2c_adapter *adap,
struct device_node *adap_node);
+/* must call put_device() when done with returned i2c_client device */
+struct i2c_client *of_find_i2c_device_by_node(struct device_node *node);
+
#endif /* __LINUX_OF_I2C_H */
next reply other threads:[~2008-12-30 20:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-30 20:11 Jon Smirl [this message]
2009-01-06 16:29 ` [PATCH] Add the of_find_i2c_device_by_node function Jon Smirl
-- strict thread matches above, loose matches on Subject: below --
2008-10-21 0:23 Jon Smirl
2008-10-19 14:00 Jon Smirl
2008-10-19 21:20 ` Anton Vorontsov
2008-10-19 21:50 ` Jon Smirl
2008-10-19 22:03 ` Anton Vorontsov
2008-10-20 5:19 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081230201107.26810.71390.stgit@localhost \
--to=jonsmirl@gmail.com \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).