summaryrefslogtreecommitdiffstats
path: root/drivers/of
diff options
context:
space:
mode:
authorJoachim Eastwood <manabian@gmail.com>2015-05-06 20:09:09 +0200
committerRob Herring <robh@kernel.org>2015-05-28 19:59:40 +0200
commit3386e0fa905c31bf1dafa2cbe2ecceb7e5ce2e66 (patch)
tree7096ea89f1d2e5aa2366cf85b548d1c53284ed38 /drivers/of
parentof: Grammar s/property exist/property exists/ (diff)
downloadlinux-3386e0fa905c31bf1dafa2cbe2ecceb7e5ce2e66.tar.xz
linux-3386e0fa905c31bf1dafa2cbe2ecceb7e5ce2e66.zip
of: add helper function to retrive match data
It's a common operation for device drivers to retrive the data member from of_device_id struct in their probe function. Most driver end up doing: const struct of_device_id *match; match = of_match_device(driver_of_match, &pdev->dev); driver->data = match->data; With the of_device_get_match_data helper function all this can done in one go. Signed-off-by: Joachim Eastwood <manabian@gmail.com> [robh: add missing inline to dummmy declaration] Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'drivers/of')
-rw-r--r--drivers/of/device.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 20c1332a0018..8b91ea241b10 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -163,6 +163,18 @@ void of_device_unregister(struct platform_device *ofdev)
}
EXPORT_SYMBOL(of_device_unregister);
+const void *of_device_get_match_data(const struct device *dev)
+{
+ const struct of_device_id *match;
+
+ match = of_match_device(dev->driver->of_match_table, dev);
+ if (!match)
+ return NULL;
+
+ return match->data;
+}
+EXPORT_SYMBOL(of_device_get_match_data);
+
ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
{
const char *compat;