aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pm_domain.h
diff options
context:
space:
mode:
authorJon Hunter <jonathanh@nvidia.com>2016-09-12 12:01:05 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-09-13 02:49:32 +0200
commitec69572b3f0daf1f26b3e563d56e487d515a3cd1 (patch)
treed1b3de58420b6e37d3a59c134d41e6928b0592b0 /include/linux/pm_domain.h
parentPM / Domains: Always enable debugfs support if available (diff)
downloadlinux-dev-ec69572b3f0daf1f26b3e563d56e487d515a3cd1.tar.xz
linux-dev-ec69572b3f0daf1f26b3e563d56e487d515a3cd1.zip
PM / Domains: Add new helper functions for device-tree
Ideally, if we are returning a reference to a PM domain via a call to of_genpd_get_from_provider(), then we should keep track of such references via a reference count. The reference count could then be used to determine if a PM domain can be safely removed. Alternatively, it is possible to avoid such external references by providing APIs to access the PM domain and hence, eliminate any calls to of_genpd_get_from_provider(). Add new helper functions for adding a device and a subdomain to a PM domain when using device-tree, so that external calls to of_genpd_get_from_provider() can be removed. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/linux/pm_domain.h')
-rw-r--r--include/linux/pm_domain.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index 31fec858088c..e1964a242389 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -208,6 +208,10 @@ struct generic_pm_domain *__of_genpd_xlate_simple(
struct generic_pm_domain *__of_genpd_xlate_onecell(
struct of_phandle_args *genpdspec,
void *data);
+extern int of_genpd_add_device(struct of_phandle_args *args,
+ struct device *dev);
+extern int of_genpd_add_subdomain(struct of_phandle_args *parent,
+ struct of_phandle_args *new_subdomain);
int genpd_dev_pm_attach(struct device *dev);
#else /* !CONFIG_PM_GENERIC_DOMAINS_OF */
@@ -227,6 +231,18 @@ static inline struct generic_pm_domain *of_genpd_get_from_provider(
#define __of_genpd_xlate_simple NULL
#define __of_genpd_xlate_onecell NULL
+static inline int of_genpd_add_device(struct of_phandle_args *args,
+ struct device *dev)
+{
+ return -ENODEV;
+}
+
+static inline int of_genpd_add_subdomain(struct of_phandle_args *parent,
+ struct of_phandle_args *new_subdomain)
+{
+ return -ENODEV;
+}
+
static inline int genpd_dev_pm_attach(struct device *dev)
{
return -ENODEV;