diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2019-04-18 06:27:57 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2019-04-25 03:38:25 -0400 |
commit | 3ccf3f0cd1971e007680114ff732e8a717aafbf8 (patch) | |
tree | bf806664f456cd98f12f2076860e64ab4ce6eabf | |
parent | e8b04de9da71b56dbbc5fa443d4ab52b617977bb (diff) |
PM / Domains: Enable genpd_dev_pm_attach_by_id|name() for single PM domain
If a call to dev_pm_domain_attach() succeeds to attach a device to its
single PM domain, the important point is to prevent subsequent
dev_pm_domain_attach_by_name|id() calls from failing. That is done by
checking the dev->pm_domain pointer and then returning -EEXIST, rather
than continuing to call genpd_dev_pm_attach_by_id|name().
For this reason, enable genpd_dev_pm_attach_by_id|name() to be used for
single PM domains too. This simplifies future users, so they only need
to use dev_pm_domain_attach_by_id|name() instead of having to combine
it with dev_pm_domain_attach().
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/base/power/domain.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index a0b021d53084..d97bcf6918fb 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c | |||
@@ -2439,10 +2439,10 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev, | |||
2439 | if (!dev->of_node) | 2439 | if (!dev->of_node) |
2440 | return NULL; | 2440 | return NULL; |
2441 | 2441 | ||
2442 | /* Deal only with devices using multiple PM domains. */ | 2442 | /* Verify that the index is within a valid range. */ |
2443 | num_domains = of_count_phandle_with_args(dev->of_node, "power-domains", | 2443 | num_domains = of_count_phandle_with_args(dev->of_node, "power-domains", |
2444 | "#power-domain-cells"); | 2444 | "#power-domain-cells"); |
2445 | if (num_domains < 2 || index >= num_domains) | 2445 | if (index >= num_domains) |
2446 | return NULL; | 2446 | return NULL; |
2447 | 2447 | ||
2448 | /* Allocate and register device on the genpd bus. */ | 2448 | /* Allocate and register device on the genpd bus. */ |