PM / Domains: Enable genpd_dev_pm_attach_by_id|name() for single PM domain
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 18 Apr 2019 10:27:57 +0000 (12:27 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 25 Apr 2019 07:38:25 +0000 (09:38 +0200)
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>
drivers/base/power/domain.c

index a0b021d53084663754256bd664e8fb35df74adc6..d97bcf6918fb7adca28653950130f416d3d7404a 100644 (file)
@@ -2439,10 +2439,10 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev,
        if (!dev->of_node)
                return NULL;
 
-       /* Deal only with devices using multiple PM domains. */
+       /* Verify that the index is within a valid range. */
        num_domains = of_count_phandle_with_args(dev->of_node, "power-domains",
                                                 "#power-domain-cells");
-       if (num_domains < 2 || index >= num_domains)
+       if (index >= num_domains)
                return NULL;
 
        /* Allocate and register device on the genpd bus. */