PM: domains: Trust domain-idle-states from DT to be correct by genpd
authorUlf Hansson <ulf.hansson@linaro.org>
Wed, 11 May 2022 14:57:04 +0000 (16:57 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 19 May 2022 18:16:05 +0000 (20:16 +0200)
If genpd has parsed the domain-idle-states from DT, it's reasonable to
believe that the parsed data should be correct for the HW in question.
Based upon this, it seem superfluous to let genpd measure the corresponding
power-on/off latencies for these states.

Therefore, let's improve the behaviour in genpd by avoiding the
measurements for the domain-idle-states that have been parsed from DT.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/domain.c

index 83b073c..739e52c 100644 (file)
@@ -509,7 +509,7 @@ static int _genpd_power_on(struct generic_pm_domain *genpd, bool timed)
        if (!genpd->power_on)
                goto out;
 
-       timed = timed && genpd->gd;
+       timed = timed && genpd->gd && !genpd->states[state_idx].fwnode;
        if (!timed) {
                ret = genpd->power_on(genpd);
                if (ret)
@@ -559,7 +559,7 @@ static int _genpd_power_off(struct generic_pm_domain *genpd, bool timed)
        if (!genpd->power_off)
                goto out;
 
-       timed = timed && genpd->gd;
+       timed = timed && genpd->gd && !genpd->states[state_idx].fwnode;
        if (!timed) {
                ret = genpd->power_off(genpd);
                if (ret)