From: Ulf Hansson <ulf.hansson@linaro.org>
To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, linux-pm@vger.kernel.org
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Lucas Stach <dev@lynxeye.de>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Kevin Hilman <khilman@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Jon Hunter <jonathanh@nvidia.com>,
Todor Tomov <todor.tomov@linaro.org>,
linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org,
Rajendra Nayak <rnayak@codeaurora.org>,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] PM / Domains: Introduce option to attach a device by name to genpd
Date: Fri, 29 Jun 2018 13:04:31 +0200 [thread overview]
Message-ID: <20180629110432.5179-3-ulf.hansson@linaro.org> (raw)
In-Reply-To: <20180629110432.5179-1-ulf.hansson@linaro.org>
For the multiple PM domain case, let's introduce a new function called
genpd_dev_pm_attach_by_name(). This allows a device to be associated with
its PM domain through genpd, by using a name based lookup.
Note that, genpd_dev_pm_attach_by_name() shall only be called by the driver
core / PM core, similar to how the existing dev_pm_domain_attach_by_id()
makes use of genpd_dev_pm_attach_by_id(). However, this is implemented by
following changes on top.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain.c | 24 ++++++++++++++++++++++++
include/linux/pm_domain.h | 8 ++++++++
2 files changed, 32 insertions(+)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index c298de8a8308..a70e4b7a3b14 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -2372,6 +2372,30 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev,
}
EXPORT_SYMBOL_GPL(genpd_dev_pm_attach_by_id);
+/**
+ * genpd_dev_pm_attach_by_name - Associate a device with one of its PM domains.
+ * @dev: The device used to lookup the PM domain.
+ * @name: The name of the PM domain.
+ *
+ * Parse device's OF node to find a PM domain specifier using the
+ * power-domain-names DT property. For further description see
+ * genpd_dev_pm_attach_by_id().
+ */
+struct device *genpd_dev_pm_attach_by_name(struct device *dev, char *name)
+{
+ int index;
+
+ if (!dev->of_node)
+ return NULL;
+
+ index = of_property_match_string(dev->of_node, "power-domain-names",
+ name);
+ if (index < 0)
+ return NULL;
+
+ return genpd_dev_pm_attach_by_id(dev, index);
+}
+
static const struct of_device_id idle_state_match[] = {
{ .compatible = "domain-idle-state", },
{ }
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index cb8d84090cfb..03e14a38462d 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -239,6 +239,8 @@ unsigned int of_genpd_opp_to_performance_state(struct device *dev,
int genpd_dev_pm_attach(struct device *dev);
struct device *genpd_dev_pm_attach_by_id(struct device *dev,
unsigned int index);
+struct device *genpd_dev_pm_attach_by_name(struct device *dev,
+ char *name);
#else /* !CONFIG_PM_GENERIC_DOMAINS_OF */
static inline int of_genpd_add_provider_simple(struct device_node *np,
struct generic_pm_domain *genpd)
@@ -290,6 +292,12 @@ static inline struct device *genpd_dev_pm_attach_by_id(struct device *dev,
return NULL;
}
+static inline struct device *genpd_dev_pm_attach_by_name(struct device *dev,
+ char *name)
+{
+ return NULL;
+}
+
static inline
struct generic_pm_domain *of_genpd_remove_last(struct device_node *np)
{
--
2.17.1
next prev parent reply other threads:[~2018-06-29 11:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-29 11:04 [PATCH 0/3] PM / Domains: Enable name based lookup at attach Ulf Hansson
2018-06-29 11:04 ` [PATCH 1/3] PM / Domains: dt: Add a power-domain-names property Ulf Hansson
2018-06-29 11:07 ` Ulf Hansson
2018-06-29 11:04 ` Ulf Hansson [this message]
2018-06-29 11:04 ` [PATCH 3/3] PM / Domains: Introduce dev_pm_domain_attach_by_name() Ulf Hansson
2018-07-02 6:20 ` [PATCH 0/3] PM / Domains: Enable name based lookup at attach Rajendra Nayak
2018-07-02 7:08 ` Viresh Kumar
2018-07-09 10:06 ` Rafael J. Wysocki
2018-07-09 11:38 ` Ulf Hansson
2018-07-11 9:43 ` Rafael J. Wysocki
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=20180629110432.5179-3-ulf.hansson@linaro.org \
--to=ulf.hansson@linaro.org \
--cc=dev@lynxeye.de \
--cc=geert+renesas@glider.be \
--cc=jonathanh@nvidia.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=rnayak@codeaurora.org \
--cc=todor.tomov@linaro.org \
--cc=viresh.kumar@linaro.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