On Tue, Jan 28, 2025 at 10:54:00PM +0100, Luca Weiss wrote: > 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.gerhold@xxxxxxxxxx> > Fixes: 17ee2fb4e856 ("remoteproc: qcom: pas: Vote for active/proxy power domains") > Signed-off-by: Luca Weiss <luca@xxxxxxxxxxxx> Not sure if Reviewed-by makes sense if I already did Suggested-by, but anyway: Reviewed-by: Stephan Gerhold <stephan.gerhold@xxxxxxxxxx> Thanks for making these fixes! > --- > 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 >