* [PATCH v2 0/3] remoteproc: Hawi CDSP support with per-PD proxy performance states
@ 2026-09-02 20:43 Mukesh Ojha
2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:43 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Mukesh Ojha
qcom,hawi-cdsp-pas was initially grouped as a fallback to
qcom,sm8550-cdsp-pas on the hardware-level compatibility. Bringup revealed
that the NSP proxy power domain on Hawi requires a specific RPMH
performance level below what sm8550 already supports, breaking the
compatibility contract the fallback string implies. Remove
qcom,hawi-cdsp-pas from the sm8550-cdsp-pas fallback items block, add it to
the standalone compatible enum, and extend the existing cx/mxc/nsp
power-domain constraint to cover it explicitly.
The fix is two-part: first, propagate the dev_pm_genpd_set_performance_state()
return value so the failure becomes visible instead of silently proceeding
with firmware load. Second, introduce a per-PD performance state table
in qcom_pas_data so platforms can declare explicit RPMH levels for each
proxy domain. Platforms that omit the table retain the existing INT_MAX
behaviour. Hawi CDSP declares CX/MXC at TURBO and NSP at NOM, matching
the hardware requirement.
The binding and DTS are updated in tandem: qcom,hawi-cdsp-pas is made a
standalone compatible (dropped from the sm8550-cdsp-pas fallback group)
because the proxy PD behaviour diverges from sm8550, breaking the
compatibility contract the fallback string implies.
---
Changes in v2:
- Propagating the err dev_pm_genpd_set_performance_state() as a
separate commit.
- Added a binding correction for hawi as it should be
standalone one instead of falling back to sm8550.
- Add num_proxy_pd_performance_states count field with a WARN_ON in
probe to catch mismatch between the array size and the actual proxy
PD count at boot time, returning -EINVAL if they diverge.
- [v1] https://lore.kernel.org/lkml/20260828181311.4038346-3-mukesh.ojha@oss.qualcomm.com/
Mukesh Ojha (3):
remoteproc: qcom_q6v5_pas: propagate
dev_pm_genpd_set_performance_state() errors
dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas
standalone
remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for
Hawi CDSP
.../bindings/remoteproc/qcom,sm8550-pas.yaml | 3 +-
drivers/remoteproc/qcom_q6v5_pas.c | 52 ++++++++++++++++++-
2 files changed, 53 insertions(+), 2 deletions(-)
--
2.55.0
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors 2026-09-02 20:43 [PATCH v2 0/3] remoteproc: Hawi CDSP support with per-PD proxy performance states Mukesh Ojha @ 2026-09-02 20:43 ` Mukesh Ojha 2026-09-03 7:45 ` Dmitry Baryshkov 2026-09-03 9:19 ` Abel Vesa 2026-09-02 20:43 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone Mukesh Ojha 2026-09-02 20:43 ` [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP Mukesh Ojha 2 siblings, 2 replies; 11+ messages in thread From: Mukesh Ojha @ 2026-09-02 20:43 UTC (permalink / raw) To: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Mukesh Ojha The proxy power domain enable path discards the return value of dev_pm_genpd_set_performance_state(), masking failures silently. When the call fails the performance state is not applied, yet firmware load proceeds without any indication of the problem. Capture the return value and emit a warning on failure. Firmware load continues regardless a performance state failure is non-fatal but the warning provides a visible signal for debugging. Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> --- drivers/remoteproc/qcom_q6v5_pas.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c index a005546c265d..01dc0194e130 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -167,7 +167,11 @@ static int qcom_pas_pds_enable(struct qcom_pas *pas, struct device **pds, int i; for (i = 0; i < pd_count; i++) { - dev_pm_genpd_set_performance_state(pds[i], INT_MAX); + ret = dev_pm_genpd_set_performance_state(pds[i], INT_MAX); + if (ret) + dev_warn(pas->dev, + "failed to set proxy PD %d state %u: %d\n", + i, INT_MAX, ret); ret = pm_runtime_get_sync(pds[i]); if (ret < 0) { pm_runtime_put_noidle(pds[i]); -- 2.55.0 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors 2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha @ 2026-09-03 7:45 ` Dmitry Baryshkov 2026-09-03 9:05 ` Konrad Dybcio 2026-09-03 9:19 ` Abel Vesa 1 sibling, 1 reply; 11+ messages in thread From: Dmitry Baryshkov @ 2026-09-03 7:45 UTC (permalink / raw) To: Mukesh Ojha Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On Thu, Sep 03, 2026 at 02:13:32AM +0530, Mukesh Ojha wrote: > The proxy power domain enable path discards the return value of > dev_pm_genpd_set_performance_state(), masking failures silently. > When the call fails the performance state is not applied, yet > firmware load proceeds without any indication of the problem. > > Capture the return value and emit a warning on failure. Firmware > load continues regardless a performance state failure is non-fatal > but the warning provides a visible signal for debugging. > > Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> > --- > drivers/remoteproc/qcom_q6v5_pas.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c > index a005546c265d..01dc0194e130 100644 > --- a/drivers/remoteproc/qcom_q6v5_pas.c > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > @@ -167,7 +167,11 @@ static int qcom_pas_pds_enable(struct qcom_pas *pas, struct device **pds, > int i; > > for (i = 0; i < pd_count; i++) { > - dev_pm_genpd_set_performance_state(pds[i], INT_MAX); > + ret = dev_pm_genpd_set_performance_state(pds[i], INT_MAX); > + if (ret) > + dev_warn(pas->dev, > + "failed to set proxy PD %d state %u: %d\n", > + i, INT_MAX, ret); Should it be turned into an error? > ret = pm_runtime_get_sync(pds[i]); > if (ret < 0) { > pm_runtime_put_noidle(pds[i]); > -- > 2.55.0 > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors 2026-09-03 7:45 ` Dmitry Baryshkov @ 2026-09-03 9:05 ` Konrad Dybcio 0 siblings, 0 replies; 11+ messages in thread From: Konrad Dybcio @ 2026-09-03 9:05 UTC (permalink / raw) To: Dmitry Baryshkov, Mukesh Ojha Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On 9/3/26 9:45 AM, Dmitry Baryshkov wrote: > On Thu, Sep 03, 2026 at 02:13:32AM +0530, Mukesh Ojha wrote: >> The proxy power domain enable path discards the return value of >> dev_pm_genpd_set_performance_state(), masking failures silently. >> When the call fails the performance state is not applied, yet >> firmware load proceeds without any indication of the problem. >> >> Capture the return value and emit a warning on failure. Firmware >> load continues regardless a performance state failure is non-fatal >> but the warning provides a visible signal for debugging. >> >> Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> >> --- >> drivers/remoteproc/qcom_q6v5_pas.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c >> index a005546c265d..01dc0194e130 100644 >> --- a/drivers/remoteproc/qcom_q6v5_pas.c >> +++ b/drivers/remoteproc/qcom_q6v5_pas.c >> @@ -167,7 +167,11 @@ static int qcom_pas_pds_enable(struct qcom_pas *pas, struct device **pds, >> int i; >> >> for (i = 0; i < pd_count; i++) { >> - dev_pm_genpd_set_performance_state(pds[i], INT_MAX); >> + ret = dev_pm_genpd_set_performance_state(pds[i], INT_MAX); >> + if (ret) >> + dev_warn(pas->dev, >> + "failed to set proxy PD %d state %u: %d\n", >> + i, INT_MAX, ret); > > Should it be turned into an error? Yes Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors 2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha 2026-09-03 7:45 ` Dmitry Baryshkov @ 2026-09-03 9:19 ` Abel Vesa 1 sibling, 0 replies; 11+ messages in thread From: Abel Vesa @ 2026-09-03 9:19 UTC (permalink / raw) To: Mukesh Ojha Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On 26-09-03 02:13:32, Mukesh Ojha wrote: > The proxy power domain enable path discards the return value of > dev_pm_genpd_set_performance_state(), masking failures silently. > When the call fails the performance state is not applied, yet > firmware load proceeds without any indication of the problem. > > Capture the return value and emit a warning on failure. Firmware > load continues regardless a performance state failure is non-fatal > but the warning provides a visible signal for debugging. > > Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> With Dmitry's and Konrad's suggestion addressed: Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone 2026-09-02 20:43 [PATCH v2 0/3] remoteproc: Hawi CDSP support with per-PD proxy performance states Mukesh Ojha 2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha @ 2026-09-02 20:43 ` Mukesh Ojha 2026-09-07 8:08 ` Krzysztof Kozlowski 2026-09-08 6:28 ` Krzysztof Kozlowski 2026-09-02 20:43 ` [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP Mukesh Ojha 2 siblings, 2 replies; 11+ messages in thread From: Mukesh Ojha @ 2026-09-02 20:43 UTC (permalink / raw) To: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Mukesh Ojha qcom,hawi-cdsp-pas was initially grouped as a fallback to qcom,sm8550-cdsp-pas on the assumption of hardware-level compatibility. Bringup revealed that the NSP proxy power domain on Hawi requires a specific RPMH performance level that the sm8550 driver data does not provide, breaking the compatibility contract the fallback string implies. Remove qcom,hawi-cdsp-pas from the sm8550-cdsp-pas fallback items block, add it to the standalone compatible enum, and extend the existing cx/mxc/nsp power-domain constraint to cover it explicitly. Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> --- .../devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml index c58e8a6c7fe1..cf57095cd49d 100644 --- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml @@ -18,6 +18,7 @@ properties: oneOf: - enum: - qcom,eliza-cdsp-pas + - qcom,hawi-cdsp-pas - qcom,sdx75-mpss-pas - qcom,sm8550-adsp-pas - qcom,sm8550-cdsp-pas @@ -40,7 +41,6 @@ properties: - items: - enum: - qcom,glymur-cdsp-pas - - qcom,hawi-cdsp-pas - qcom,kaanapali-cdsp-pas - qcom,maili-cdsp-pas - const: qcom,sm8550-cdsp-pas @@ -273,6 +273,7 @@ allOf: compatible: contains: enum: + - qcom,hawi-cdsp-pas - qcom,sm8550-cdsp-pas - qcom,sm8650-cdsp-pas - qcom,x1e80100-cdsp-pas -- 2.55.0 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone 2026-09-02 20:43 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone Mukesh Ojha @ 2026-09-07 8:08 ` Krzysztof Kozlowski 2026-09-07 11:04 ` Mukesh Ojha 2026-09-08 6:28 ` Krzysztof Kozlowski 1 sibling, 1 reply; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-09-07 8:08 UTC (permalink / raw) To: Mukesh Ojha Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On Thu, Sep 03, 2026 at 02:13:33AM +0530, Mukesh Ojha wrote: > qcom,hawi-cdsp-pas was initially grouped as a fallback to > qcom,sm8550-cdsp-pas on the assumption of hardware-level compatibility. > Bringup revealed that the NSP proxy power domain on Hawi requires a > specific RPMH performance level that the sm8550 driver data does not > provide, breaking the compatibility contract the fallback string implies. The actual OPP level is another DT property (required-opps), thus difference here does not define whether devices are or are not compatible. Maybe you meant it is part of additional power domain? But that actually still feels compatible, especially that device WAS working fine with single power domain, right? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone 2026-09-07 8:08 ` Krzysztof Kozlowski @ 2026-09-07 11:04 ` Mukesh Ojha 0 siblings, 0 replies; 11+ messages in thread From: Mukesh Ojha @ 2026-09-07 11:04 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On Mon, Sep 07, 2026 at 10:08:45AM +0200, Krzysztof Kozlowski wrote: > On Thu, Sep 03, 2026 at 02:13:33AM +0530, Mukesh Ojha wrote: > > qcom,hawi-cdsp-pas was initially grouped as a fallback to > > qcom,sm8550-cdsp-pas on the assumption of hardware-level compatibility. > > Bringup revealed that the NSP proxy power domain on Hawi requires a > > specific RPMH performance level that the sm8550 driver data does not > > provide, breaking the compatibility contract the fallback string implies. > > The actual OPP level is another DT property (required-opps), thus > difference here does not define whether devices are or are not > compatible. I discussed this in the last version and using required-opps would be too much for the temporary voting needed by remoteproc during boot up. > > Maybe you meant it is part of additional power domain? But that actually > still feels compatible, especially that device WAS working fine with > single power domain, right? > At the DT-binding level, Hawi CDSP has the same power-domain topology as sm8550-cdsp-pas (cx/mxc/nsp). There is a recent firmware change done on Hawi after which it no longer supports the Turbo performance level on NSP rail. -- -Mukesh Ojha ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone 2026-09-02 20:43 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone Mukesh Ojha 2026-09-07 8:08 ` Krzysztof Kozlowski @ 2026-09-08 6:28 ` Krzysztof Kozlowski 1 sibling, 0 replies; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-09-08 6:28 UTC (permalink / raw) To: Mukesh Ojha, Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On 02/09/2026 22:43, Mukesh Ojha wrote: > qcom,hawi-cdsp-pas was initially grouped as a fallback to > qcom,sm8550-cdsp-pas on the assumption of hardware-level compatibility. > Bringup revealed that the NSP proxy power domain on Hawi requires a > specific RPMH performance level that the sm8550 driver data does not > provide, breaking the compatibility contract the fallback string implies. > > Remove qcom,hawi-cdsp-pas from the sm8550-cdsp-pas fallback items block, > add it to the standalone compatible enum, and extend the existing > cx/mxc/nsp power-domain constraint to cover it explicitly. > > Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> > --- > .../devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP 2026-09-02 20:43 [PATCH v2 0/3] remoteproc: Hawi CDSP support with per-PD proxy performance states Mukesh Ojha 2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha 2026-09-02 20:43 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone Mukesh Ojha @ 2026-09-02 20:43 ` Mukesh Ojha 2026-09-03 9:24 ` Abel Vesa 2 siblings, 1 reply; 11+ messages in thread From: Mukesh Ojha @ 2026-09-02 20:43 UTC (permalink / raw) To: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Mukesh Ojha The proxy power domain enable path requests INT_MAX performance state for every proxy PD. On Hawi, the NSP proxy power domain's RPMH power domain has no OPP at INT_MAX, while CX and MXC accept INT_MAX, mapping to their maximum supported level. Introduce a proxy_pd_performance_states array in qcom_pas_data to allow per-PD RPMH levels to be declared explicitly. Platforms that omit this field retain the existing INT_MAX behaviour. Add Hawi CDSP remoteproc support with the following proxy PD performance states: CX: RPMH_REGULATOR_LEVEL_TURBO MXC: RPMH_REGULATOR_LEVEL_TURBO NSP: RPMH_REGULATOR_LEVEL_NOM Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> --- drivers/remoteproc/qcom_q6v5_pas.c | 50 ++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c index 01dc0194e130..c8bba2418d0d 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -28,6 +28,7 @@ #include <linux/soc/qcom/mdt_loader.h> #include <linux/soc/qcom/smem.h> #include <linux/soc/qcom/smem_state.h> +#include <dt-bindings/power/qcom,rpmhpd.h> #include "qcom_common.h" #include "qcom_pil_info.h" @@ -51,6 +52,8 @@ struct qcom_pas_data { bool decrypt_shutdown; char **proxy_pd_names; + const unsigned int *proxy_pd_performance_states; + unsigned int num_proxy_pd_performance_states; const char *load_state; const char *ssr_name; @@ -79,6 +82,7 @@ struct qcom_pas { struct regulator *px_supply; struct device *proxy_pds[3]; + const unsigned int *proxy_pd_performance_states; int proxy_pd_count; @@ -167,11 +171,16 @@ static int qcom_pas_pds_enable(struct qcom_pas *pas, struct device **pds, int i; for (i = 0; i < pd_count; i++) { - ret = dev_pm_genpd_set_performance_state(pds[i], INT_MAX); + unsigned int state = INT_MAX; + + if (pas->proxy_pd_performance_states) + state = pas->proxy_pd_performance_states[i]; + + ret = dev_pm_genpd_set_performance_state(pds[i], state); if (ret) dev_warn(pas->dev, "failed to set proxy PD %d state %u: %d\n", - i, INT_MAX, ret); + i, state, ret); ret = pm_runtime_get_sync(pds[i]); if (ret < 0) { pm_runtime_put_noidle(pds[i]); @@ -877,6 +886,7 @@ static int qcom_pas_probe(struct platform_device *pdev) pas->info_name = desc->sysmon_name; pas->smem_host_id = desc->smem_host_id; pas->decrypt_shutdown = desc->decrypt_shutdown; + pas->proxy_pd_performance_states = desc->proxy_pd_performance_states; pas->region_assign_idx = desc->region_assign_idx; pas->region_assign_count = min_t(int, MAX_ASSIGN_COUNT, desc->region_assign_count); pas->region_assign_vmid = desc->region_assign_vmid; @@ -912,6 +922,14 @@ static int qcom_pas_probe(struct platform_device *pdev) goto unassign_mem; pas->proxy_pd_count = ret; + if (WARN(desc->proxy_pd_performance_states && + desc->num_proxy_pd_performance_states != pas->proxy_pd_count, + "proxy_pd_performance_states count %u != pd count %d\n", + desc->num_proxy_pd_performance_states, pas->proxy_pd_count)) { + ret = -EINVAL; + goto detach_proxy_pds; + } + ret = qcom_q6v5_init(&pas->q6v5, pdev, rproc, desc->crash_reason_smem, desc->load_state, qcom_pas_handover); if (ret) @@ -1802,6 +1820,33 @@ static const struct qcom_pas_data glymur_soccp_resource = { .needs_tzmem = true, }; +static const struct qcom_pas_data hawi_cdsp_resource = { + .crash_reason_smem = 601, + .firmware_name = "cdsp.mdt", + .dtb_firmware_name = "cdsp_dtb.mdt", + .pas_id = 18, + .dtb_pas_id = 0x25, + .minidump_id = 7, + .auto_boot = true, + .proxy_pd_names = (char*[]){ + "cx", + "mxc", + "nsp", + NULL + }, + .proxy_pd_performance_states = (const unsigned int[]){ + RPMH_REGULATOR_LEVEL_TURBO, + RPMH_REGULATOR_LEVEL_TURBO, + RPMH_REGULATOR_LEVEL_NOM, + }, + .num_proxy_pd_performance_states = 3, + .load_state = "cdsp", + .ssr_name = "cdsp", + .sysmon_name = "cdsp", + .ssctl_id = 0x17, + .smem_host_id = 5, +}; + static const struct qcom_pas_data eliza_cdsp_resource = { .crash_reason_smem = 601, .firmware_name = "cdsp.mbn", @@ -1831,6 +1876,7 @@ static const struct of_device_id qcom_pas_of_match[] = { { .compatible = "qcom,eliza-adsp-pas", .data = &sm8550_adsp_resource }, { .compatible = "qcom,eliza-cdsp-pas", .data = &eliza_cdsp_resource }, { .compatible = "qcom,glymur-soccp-pas", .data = &glymur_soccp_resource }, + { .compatible = "qcom,hawi-cdsp-pas", .data = &hawi_cdsp_resource }, { .compatible = "qcom,kaanapali-soccp-pas", .data = &kaanapali_soccp_resource }, { .compatible = "qcom,milos-adsp-pas", .data = &sm8550_adsp_resource }, { .compatible = "qcom,milos-cdsp-pas", .data = &milos_cdsp_resource }, -- 2.55.0 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP 2026-09-02 20:43 ` [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP Mukesh Ojha @ 2026-09-03 9:24 ` Abel Vesa 0 siblings, 0 replies; 11+ messages in thread From: Abel Vesa @ 2026-09-03 9:24 UTC (permalink / raw) To: Mukesh Ojha Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel On 26-09-03 02:13:34, Mukesh Ojha wrote: > The proxy power domain enable path requests INT_MAX performance > state for every proxy PD. On Hawi, the NSP proxy power domain's > RPMH power domain has no OPP at INT_MAX, while CX and MXC accept > INT_MAX, mapping to their maximum supported level. > > Introduce a proxy_pd_performance_states array in qcom_pas_data > to allow per-PD RPMH levels to be declared explicitly. Platforms > that omit this field retain the existing INT_MAX behaviour. > > Add Hawi CDSP remoteproc support with the following proxy PD > performance states: > > CX: RPMH_REGULATOR_LEVEL_TURBO > MXC: RPMH_REGULATOR_LEVEL_TURBO > NSP: RPMH_REGULATOR_LEVEL_NOM > > Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> Looks OK to me, so: Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-09-08 6:28 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-09-02 20:43 [PATCH v2 0/3] remoteproc: Hawi CDSP support with per-PD proxy performance states Mukesh Ojha 2026-09-02 20:43 ` [PATCH v2 1/3] remoteproc: qcom_q6v5_pas: propagate dev_pm_genpd_set_performance_state() errors Mukesh Ojha 2026-09-03 7:45 ` Dmitry Baryshkov 2026-09-03 9:05 ` Konrad Dybcio 2026-09-03 9:19 ` Abel Vesa 2026-09-02 20:43 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,sm8550-pas: make qcom,hawi-cdsp-pas standalone Mukesh Ojha 2026-09-07 8:08 ` Krzysztof Kozlowski 2026-09-07 11:04 ` Mukesh Ojha 2026-09-08 6:28 ` Krzysztof Kozlowski 2026-09-02 20:43 ` [PATCH v2 3/3] remoteproc: qcom_q6v5_pas: add per-PD proxy performance states for Hawi CDSP Mukesh Ojha 2026-09-03 9:24 ` Abel Vesa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®