Only go into the if condition for single-PD handling when there's
actually just one power domain specified there. Otherwise it'll be an
issue in the dts and we should fail in the regular code path.

This also mirrors the latest changes in the qcom_q6v5_mss driver.

Suggested-by: Stephan Gerhold <stephan.gerh...@linaro.org>
Fixes: 17ee2fb4e856 ("remoteproc: qcom: pas: Vote for active/proxy power 
domains")
Signed-off-by: Luca Weiss <l...@lucaweiss.eu>
---
 drivers/remoteproc/qcom_q6v5_pas.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_pas.c 
b/drivers/remoteproc/qcom_q6v5_pas.c
index 
aca44bb6522f00cb525c4b816040445287444434..c1e9bbae61770ccad3e22d132a411bc6ced7180f
 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -509,16 +509,16 @@ static int adsp_pds_attach(struct device *dev, struct 
device **devs,
        if (!pd_names)
                return 0;
 
+       while (pd_names[num_pds])
+               num_pds++;
+
        /* Handle single power domain */
-       if (dev->pm_domain) {
+       if (num_pds == 1 && dev->pm_domain) {
                devs[0] = dev;
                pm_runtime_enable(dev);
                return 1;
        }
 
-       while (pd_names[num_pds])
-               num_pds++;
-
        for (i = 0; i < num_pds; i++) {
                devs[i] = dev_pm_domain_attach_by_name(dev, pd_names[i]);
                if (IS_ERR_OR_NULL(devs[i])) {
@@ -543,7 +543,7 @@ static void adsp_pds_detach(struct qcom_adsp *adsp, struct 
device **pds,
        int i;
 
        /* Handle single power domain */
-       if (dev->pm_domain && pd_count) {
+       if (pd_count == 1 && dev->pm_domain) {
                pm_runtime_disable(dev);
                return;
        }

-- 
2.48.1


Reply via email to