summaryrefslogtreecommitdiff
path: root/include/linux/of_platform.h
diff options
context:
space:
mode:
authorBenjamin Gaignard <benjamin.gaignard@linaro.org>2017-02-24 19:14:33 +0300
committerDaniel Vetter <daniel.vetter@ffwll.ch>2017-02-27 19:20:13 +0300
commit38b0b219fbe89d824213beabf03bfb00b5d2c8fa (patch)
tree094323ec9a2ac237ee06895ff0806f1e5e317d76 /include/linux/of_platform.h
parent40ee6fbef75fe6452dc9e69e6f9f1a2c7808ed67 (diff)
downloadlinux-38b0b219fbe89d824213beabf03bfb00b5d2c8fa.tar.xz
of: add devm_ functions for populate and depopulate
Lots of calls to of_platform_populate() are not unbalanced by a call to of_platform_depopulate(). This create issues while drivers are bind/unbind. In way to solve those issues is to add devm_of_platform_populate() which will call of_platform_depopulate() when the device is unbound from the bus. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1487952874-23635-2-git-send-email-benjamin.gaignard@linaro.org
Diffstat (limited to 'include/linux/of_platform.h')
-rw-r--r--include/linux/of_platform.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index 956a1006aefc..dc8224ae28d5 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -76,6 +76,10 @@ extern int of_platform_default_populate(struct device_node *root,
const struct of_dev_auxdata *lookup,
struct device *parent);
extern void of_platform_depopulate(struct device *parent);
+
+extern int devm_of_platform_populate(struct device *dev);
+
+extern void devm_of_platform_depopulate(struct device *dev);
#else
static inline int of_platform_populate(struct device_node *root,
const struct of_device_id *matches,
@@ -91,6 +95,13 @@ static inline int of_platform_default_populate(struct device_node *root,
return -ENODEV;
}
static inline void of_platform_depopulate(struct device *parent) { }
+
+static inline int devm_of_platform_populate(struct device *dev)
+{
+ return -ENODEV;
+}
+
+static inline void devm_of_platform_depopulate(struct device *dev) { }
#endif
#if defined(CONFIG_OF_DYNAMIC) && defined(CONFIG_OF_ADDRESS)