From bc779a4c3e153e2547d494c0c34f74bed7226fc6 Mon Sep 17 00:00:00 2001 From: Anurag Pateriya Date: Thu, 20 Aug 2026 10:30:19 +0530 Subject: [PATCH 1/4] PENDING: dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index Nord routes the NSP (compute DSP) memory rail through a dedicated NMXC resource instead of the shared MX rail. Add the index so device trees can reference it. Signed-off-by: Anurag Pateriya --- include/dt-bindings/power/qcom,rpmhpd.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/dt-bindings/power/qcom,rpmhpd.h b/include/dt-bindings/power/qcom,rpmhpd.h index 07bd2a7b0150b..92c8408dbc57d 100644 --- a/include/dt-bindings/power/qcom,rpmhpd.h +++ b/include/dt-bindings/power/qcom,rpmhpd.h @@ -32,6 +32,7 @@ #define RPMHPD_GBX 22 #define RPMHPD_NSP3 23 #define RPMHPD_GFX1 24 +#define RPMHPD_NMXC 25 /* RPMh Power Domain performance levels */ #define RPMH_REGULATOR_LEVEL_RETENTION 16 From 7cdeec23ea24e55ca3ca325e94d4234cc8bdbaaa Mon Sep 17 00:00:00 2001 From: Anurag Pateriya Date: Thu, 20 Aug 2026 10:30:26 +0530 Subject: [PATCH 2/4] PENDING: pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Add the nmxc.lvl RPMh resource and register it in the Nord power domain table. Nord supplies the NSP memory rail from this dedicated resource rather than from the shared MX rail, so consumers need it exposed as its own power domain. Signed-off-by: Anurag Pateriya --- drivers/pmdomain/qcom/rpmhpd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c index 63120e703923f..2841c46cf3055 100644 --- a/drivers/pmdomain/qcom/rpmhpd.c +++ b/drivers/pmdomain/qcom/rpmhpd.c @@ -202,6 +202,11 @@ static struct rpmhpd mxc_ao = { .skip_retention_level = true, }; +static struct rpmhpd nmxc = { + .pd = { .name = "nmxc", }, + .res_name = "nmxc.lvl", +}; + static struct rpmhpd nsp = { .pd = { .name = "nsp", }, .res_name = "nsp.lvl", @@ -331,6 +336,7 @@ static struct rpmhpd *nord_rpmhpds[] = { [RPMHPD_MMCX_AO] = &mmcx_ao, [RPMHPD_MXC] = &mxc, [RPMHPD_MXC_AO] = &mxc_ao, + [RPMHPD_NMXC] = &nmxc, [RPMHPD_NSP0] = &nsp0, [RPMHPD_NSP1] = &nsp1, [RPMHPD_NSP2] = &nsp2, From be244457ea01d1b976c365d01e19362272ed18fb Mon Sep 17 00:00:00 2001 From: Anurag Pateriya Date: Thu, 20 Aug 2026 10:30:38 +0530 Subject: [PATCH 3/4] PENDING: remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC The Nord CDSP subsystems keep their memory rail on the dedicated NMXC resource, not on the shared MX rail. Replace "mx" with "nmxc" in the proxy power domain list of all four CDSP resources so the correct rail is held during PAS authentication and boot. Signed-off-by: Anurag Pateriya --- drivers/remoteproc/qcom_q6v5_pas.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c index 3010ae256db8b..45780b262a7d0 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -2084,7 +2084,7 @@ static const struct qcom_pas_data nord_cdsp0_resource = { .auto_boot = true, .proxy_pd_names = (char*[]){ "cx", - "mx", + "nmxc", "nsp", NULL }, @@ -2105,7 +2105,7 @@ static const struct qcom_pas_data nord_cdsp1_resource = { .auto_boot = true, .proxy_pd_names = (char*[]){ "cx", - "mx", + "nmxc", "nsp", NULL }, @@ -2126,7 +2126,7 @@ static const struct qcom_pas_data nord_cdsp2_resource = { .auto_boot = true, .proxy_pd_names = (char*[]){ "cx", - "mx", + "nmxc", "nsp", NULL }, @@ -2147,7 +2147,7 @@ static const struct qcom_pas_data nord_cdsp3_resource = { .auto_boot = true, .proxy_pd_names = (char*[]){ "cx", - "mx", + "nmxc", "nsp", NULL }, From 241cfc6c4683c865fa502862fa2e4f4f22469dd1 Mon Sep 17 00:00:00 2001 From: Anurag Pateriya Date: Thu, 20 Aug 2026 10:30:38 +0530 Subject: [PATCH 4/4] PENDING: arm64: dts: qcom: nord: Switch CDSP0-3 from MX to NMXC power domain Point the CDSP0-3 remoteproc nodes at the dedicated NMXC power domain instead of the shared MX rail, matching the power topology of the Nord NSP subsystems and the proxy power domain list in the PAS driver. Include in place of the legacy qcom-rpmpd.h, as that is where the RPMHPD_* indices used here are defined. Signed-off-by: Anurag Pateriya --- arch/arm64/boot/dts/qcom/nord-embedded.dtsi | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi index cdb48310a54a5..23698e07fe506 100644 --- a/arch/arm64/boot/dts/qcom/nord-embedded.dtsi +++ b/arch/arm64/boot/dts/qcom/nord-embedded.dtsi @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include "nord.dtsi" @@ -605,10 +605,10 @@ interconnects = <&nsp_data_noc_0 MASTER_NSP0_PROC QCOM_ICC_TAG_ALWAYS &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; power-domains = <&rpmhpd RPMHPD_CX>, - <&rpmhpd RPMHPD_MX>, + <&rpmhpd RPMHPD_NMXC>, <&rpmhpd RPMHPD_NSP0>; power-domain-names = "cx", - "mx", + "nmxc", "nsp"; }; @@ -618,10 +618,10 @@ interconnects = <&nsp_data_noc_1 MASTER_NSP1_PROC QCOM_ICC_TAG_ALWAYS &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; power-domains = <&rpmhpd RPMHPD_CX>, - <&rpmhpd RPMHPD_MX>, + <&rpmhpd RPMHPD_NMXC>, <&rpmhpd RPMHPD_NSP1>; power-domain-names = "cx", - "mx", + "nmxc", "nsp"; }; @@ -631,10 +631,10 @@ interconnects = <&nsp_data_noc_2 MASTER_NSP2_PROC QCOM_ICC_TAG_ALWAYS &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; power-domains = <&rpmhpd RPMHPD_CX>, - <&rpmhpd RPMHPD_MX>, + <&rpmhpd RPMHPD_NMXC>, <&rpmhpd RPMHPD_NSP2>; power-domain-names = "cx", - "mx", + "nmxc", "nsp"; }; @@ -644,10 +644,10 @@ interconnects = <&nsp_data_noc_3 MASTER_NSP3_PROC QCOM_ICC_TAG_ALWAYS &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; power-domains = <&rpmhpd RPMHPD_CX>, - <&rpmhpd RPMHPD_MX>, + <&rpmhpd RPMHPD_NMXC>, <&rpmhpd RPMHPD_NSP3>; power-domain-names = "cx", - "mx", + "nmxc", "nsp"; };