* [PATCH v2 0/3] Add ADSP and CDSP support for Nord SoC
@ 2026-07-24 10:38 Shawn Guo
2026-07-24 10:38 ` [PATCH v2 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Shawn Guo @ 2026-07-24 10:38 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Manivannan Sadhasivam, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Shawn Guo
The series documents AOSS side channel, adds ADSP (HPASS DSP) and
4 CDSPs support for Nord SoC.
Nord SoC actually have 3 ADSPs. This series only enables ADSP0 which
can work independently. The rest two instances have dependencies on
ADSP0 regarding start/stop and SSR. And remoteproc framework doesn't
seem to support such "slave" instances yet.
Changes for v2:
- Create a new qcom,nord-pas.yaml to cover Nord ADSP and CDSP
- Include CDSPs support into the series
- Link to v1: https://lore.kernel.org/all/20260709085149.4072181-1-shengchao.guo@oss.qualcomm.com/
Shawn Guo (3):
dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel
dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
remoteproc: qcom: pas: Add Nord ADSP and CDSP support
.../bindings/remoteproc/qcom,nord-pas.yaml | 167 ++++++++++++++++++
.../bindings/soc/qcom/qcom,aoss-qmp.yaml | 1 +
drivers/remoteproc/qcom_q6v5_pas.c | 110 ++++++++++++
3 files changed, 278 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel
2026-07-24 10:38 [PATCH v2 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
@ 2026-07-24 10:38 ` Shawn Guo
2026-07-24 10:38 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
2026-07-24 10:38 ` [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
2 siblings, 0 replies; 7+ messages in thread
From: Shawn Guo @ 2026-07-24 10:38 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Manivannan Sadhasivam, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Shawn Guo,
Krzysztof Kozlowski
Document Always-on Subsystem side channel on Qualcomm Nord SoC.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
index 9f9d9bcb66c4..d2ae2ae87a95 100644
--- a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml
@@ -31,6 +31,7 @@ properties:
- qcom,kaanapali-aoss-qmp
- qcom,maili-aoss-qmp
- qcom,milos-aoss-qmp
+ - qcom,nord-aoss-qmp
- qcom,qcs615-aoss-qmp
- qcom,qcs8300-aoss-qmp
- qcom,qdu1000-aoss-qmp
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
2026-07-24 10:38 [PATCH v2 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-24 10:38 ` [PATCH v2 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
@ 2026-07-24 10:38 ` Shawn Guo
2026-07-24 10:48 ` sashiko-bot
2026-07-24 12:19 ` Shawn Guo
2026-07-24 10:38 ` [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
2 siblings, 2 replies; 7+ messages in thread
From: Shawn Guo @ 2026-07-24 10:38 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Manivannan Sadhasivam, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Shawn Guo
Add a dedicated binding for the Qualcomm Nord SoC PAS devices: ADSP
and CDSPs. Nord ADSP uses CX and MX power domains while the CDSPs
add an NSP domain on top of that.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../bindings/remoteproc/qcom,nord-pas.yaml | 167 ++++++++++++++++++
1 file changed, 167 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
new file mode 100644
index 000000000000..c1d60ca6c63c
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
@@ -0,0 +1,167 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,nord-pas.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Nord SoC Peripheral Authentication Service
+
+maintainers:
+ - Shawn Guo <shengchao.guo@oss.qualcomm.com>
+
+description:
+ Qualcomm Nord SoC Peripheral Authentication Service loads and boots firmware
+ on the Qualcomm DSP Hexagon cores.
+
+properties:
+ compatible:
+ enum:
+ - qcom,nord-adsp-pas
+ - qcom,nord-cdsp0-pas
+ - qcom,nord-cdsp1-pas
+ - qcom,nord-cdsp2-pas
+ - qcom,nord-cdsp3-pas
+
+ power-domains:
+ minItems: 2
+ items:
+ - description: CX power domain
+ - description: MX power domain
+ - description: NSP power domain
+
+ power-domain-names:
+ minItems: 2
+ items:
+ - const: cx
+ - const: mx
+ - const: nsp
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: XO clock
+
+ clock-names:
+ items:
+ - const: xo
+
+ qcom,qmp:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Reference to the AOSS side-channel message RAM.
+
+ smd-edge: false
+
+ firmware-name:
+ items:
+ - description: Firmware name of the Hexagon core
+ - description: Firmware name of the Hexagon Devicetree
+
+ memory-region:
+ items:
+ - description: Memory region for main Firmware authentication
+ - description: Memory region for Devicetree Firmware authentication
+
+ interrupts:
+ items:
+ - description: Watchdog interrupt
+ - description: Fatal interrupt
+ - description: Ready interrupt
+ - description: Handover interrupt
+ - description: Stop acknowledge interrupt
+ - description: Shutdown acknowledge interrupt
+
+ interrupt-names:
+ items:
+ - const: wdog
+ - const: fatal
+ - const: ready
+ - const: handover
+ - const: stop-ack
+ - const: shutdown-ack
+
+ qcom,smem-states:
+ maxItems: 1
+ description: States used by the AP to signal the Hexagon core
+
+ qcom,smem-state-names:
+ maxItems: 1
+ description: The names of the state bits used for SMP2P output
+
+required:
+ - compatible
+ - reg
+ - memory-region
+
+allOf:
+ - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,nord-adsp-pas
+ then:
+ properties:
+ power-domains:
+ maxItems: 2
+ power-domain-names:
+ maxItems: 2
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,rpmh.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/mailbox/qcom-ipcc.h>
+ #include <dt-bindings/power/qcom,rpmhpd.h>
+ #define IPCC_MPROC_ADSP0
+
+ remoteproc@4c00000 {
+ compatible = "qcom,nord-adsp-pas";
+ reg = <0x04c00000 0x10000>;
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "xo";
+
+ interrupts-extended = <&intc GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
+ <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>,
+ <&smp2p_adsp_in 7 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog",
+ "fatal",
+ "ready",
+ "handover",
+ "stop-ack",
+ "shutdown-ack";
+
+ memory-region = <&hpass_dsp0_mem>, <&hpass_dsp0_dtb_mem>;
+
+ firmware-name = "qcom/nord/adsp.mbn",
+ "qcom/nord/adsp_dtb.mbn";
+
+ power-domains = <&rpmhpd RPMHPD_CX>,
+ <&rpmhpd RPMHPD_MX>;
+ power-domain-names = "cx",
+ "mx";
+
+ qcom,qmp = <&aoss_qmp>;
+ qcom,smem-states = <&smp2p_adsp_out 0>;
+ qcom,smem-state-names = "stop";
+
+ glink-edge {
+ interrupts-extended = <&ipcc IPCC_MPROC_ADSP0
+ IPCC_MPROC_SIGNAL_GLINK_QMP
+ IRQ_TYPE_EDGE_RISING>;
+ mboxes = <&ipcc IPCC_MPROC_ADSP0 IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+ label = "adsp";
+ qcom,remote-pid = <2>;
+
+ /* ... */
+ };
+ };
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support
2026-07-24 10:38 [PATCH v2 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-24 10:38 ` [PATCH v2 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
2026-07-24 10:38 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
@ 2026-07-24 10:38 ` Shawn Guo
2026-07-24 11:10 ` sashiko-bot
2 siblings, 1 reply; 7+ messages in thread
From: Shawn Guo @ 2026-07-24 10:38 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Manivannan Sadhasivam, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Shawn Guo
Add support for ADSP (HPASS DSP) and 4 CDSPs found on Nord SoC. The ADSP
is pre-booted by XBL before Linux starts, so set early_boot flag for
attach path rather than a cold boot sequence.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
drivers/remoteproc/qcom_q6v5_pas.c | 110 +++++++++++++++++++++++++++++
1 file changed, 110 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 25599d728208..6f3850a3fa9e 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -1434,6 +1434,111 @@ static const struct qcom_pas_data milos_cdsp_resource = {
.smem_host_id = 5,
};
+static const struct qcom_pas_data nord_adsp_resource = {
+ .crash_reason_smem = 423,
+ .firmware_name = "adsp.mdt",
+ .dtb_firmware_name = "adsp_dtb.mbn",
+ .pas_id = 1,
+ .dtb_pas_id = 36,
+ .minidump_id = 5,
+ .auto_boot = true,
+ .early_boot = true,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ NULL
+ },
+ .load_state = "adsp",
+ .ssr_name = "lpass",
+ .sysmon_name = "adsp",
+ .ssctl_id = 0x14,
+ .smem_host_id = 2,
+};
+
+static const struct qcom_pas_data nord_cdsp0_resource = {
+ .crash_reason_smem = 601,
+ .firmware_name = "cdsp.mdt",
+ .dtb_firmware_name = "cdsp_dtb.mbn",
+ .pas_id = 18,
+ .dtb_pas_id = 37,
+ .minidump_id = 7,
+ .auto_boot = true,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ "nsp",
+ NULL
+ },
+ .load_state = "cdsp",
+ .ssr_name = "cdsp0",
+ .sysmon_name = "cdsp0",
+ .ssctl_id = 0x17,
+ .smem_host_id = 5,
+};
+
+static const struct qcom_pas_data nord_cdsp1_resource = {
+ .crash_reason_smem = 633,
+ .firmware_name = "cdsp1.mdt",
+ .dtb_firmware_name = "cdsp1_dtb.mbn",
+ .pas_id = 30,
+ .dtb_pas_id = 59,
+ .minidump_id = 20,
+ .auto_boot = true,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ "nsp",
+ NULL
+ },
+ .load_state = "cdsp1",
+ .ssr_name = "cdsp1",
+ .sysmon_name = "cdsp1",
+ .ssctl_id = 0x20,
+ .smem_host_id = 69,
+};
+
+static const struct qcom_pas_data nord_cdsp2_resource = {
+ .crash_reason_smem = 665,
+ .firmware_name = "cdsp2.mdt",
+ .dtb_firmware_name = "cdsp2_dtb.mbn",
+ .pas_id = 57,
+ .dtb_pas_id = 60,
+ .minidump_id = 29,
+ .auto_boot = true,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ "nsp",
+ NULL
+ },
+ .load_state = "cdsp2",
+ .ssr_name = "cdsp2",
+ .sysmon_name = "cdsp2",
+ .ssctl_id = 0x1f,
+ .smem_host_id = 133,
+};
+
+static const struct qcom_pas_data nord_cdsp3_resource = {
+ .crash_reason_smem = 666,
+ .firmware_name = "cdsp3.mdt",
+ .dtb_firmware_name = "cdsp3_dtb.mbn",
+ .pas_id = 58,
+ .dtb_pas_id = 61,
+ .minidump_id = 30,
+ .auto_boot = true,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ "nsp",
+ NULL
+ },
+ .load_state = "cdsp3",
+ .ssr_name = "cdsp3",
+ .sysmon_name = "cdsp3",
+ .ssctl_id = 0x1a,
+ .smem_host_id = 197,
+};
+
static const struct qcom_pas_data sm8450_mpss_resource = {
.crash_reason_smem = 421,
.firmware_name = "modem.mdt",
@@ -1695,6 +1800,11 @@ static const struct of_device_id qcom_pas_of_match[] = {
{ .compatible = "qcom,milos-cdsp-pas", .data = &milos_cdsp_resource },
{ .compatible = "qcom,milos-mpss-pas", .data = &sm8450_mpss_resource },
{ .compatible = "qcom,milos-wpss-pas", .data = &sc7280_wpss_resource },
+ { .compatible = "qcom,nord-adsp-pas", .data = &nord_adsp_resource },
+ { .compatible = "qcom,nord-cdsp0-pas", .data = &nord_cdsp0_resource },
+ { .compatible = "qcom,nord-cdsp1-pas", .data = &nord_cdsp1_resource },
+ { .compatible = "qcom,nord-cdsp2-pas", .data = &nord_cdsp2_resource },
+ { .compatible = "qcom,nord-cdsp3-pas", .data = &nord_cdsp3_resource },
{ .compatible = "qcom,msm8226-adsp-pil", .data = &msm8996_adsp_resource },
{ .compatible = "qcom,msm8953-adsp-pil", .data = &msm8996_adsp_resource },
{ .compatible = "qcom,msm8974-adsp-pil", .data = &msm8996_adsp_resource },
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
2026-07-24 10:38 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
@ 2026-07-24 10:48 ` sashiko-bot
2026-07-24 12:19 ` Shawn Guo
1 sibling, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-24 10:48 UTC (permalink / raw)
To: Shawn Guo; +Cc: robh, conor+dt, devicetree
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The schema fails to enforce the 3 power domains (CX, MX, NSP) required for CDSP variants.
- [Low] The `#define IPCC_MPROC_ADSP0` macro in the example lacks a value, resulting in malformed cell arrays after C preprocessing.
--
--- Patch [2]: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS ---
commit de7d4d143ab4797af6353c2a43b42cf33e30c7ad
Author: Shawn Guo <shengchao.guo@oss.qualcomm.com>
dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
Add a dedicated binding for the Qualcomm Nord SoC PAS devices: ADSP
and CDSPs. Nord ADSP uses CX and MX power domains while the CDSPs
add an NSP domain on top of that.
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
> new file mode 100644
> index 0000000000000..c1d60ca6c63cd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
> @@ -0,0 +1,167 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/qcom,nord-pas.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
[ ... ]
> +properties:
> + compatible:
> + enum:
> + - qcom,nord-adsp-pas
> + - qcom,nord-cdsp0-pas
> + - qcom,nord-cdsp1-pas
> + - qcom,nord-cdsp2-pas
> + - qcom,nord-cdsp3-pas
> +
> + power-domains:
> + minItems: 2
> + items:
> + - description: CX power domain
> + - description: MX power domain
> + - description: NSP power domain
[ ... ]
> +allOf:
> + - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
> + - if:
> + properties:
> + compatible:
> + enum:
> + - qcom,nord-adsp-pas
> + then:
> + properties:
> + power-domains:
> + maxItems: 2
> + power-domain-names:
> + maxItems: 2
[Severity: Medium]
Since the global power-domains property defines minItems: 2, doesn't this
allow CDSP variants to incorrectly pass schema validation if they omit the
NSP power domain?
Should there be a corresponding constraint enforcing minItems: 3 for the CDSP
variants?
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,rpmh.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> + #include <dt-bindings/mailbox/qcom-ipcc.h>
> + #include <dt-bindings/power/qcom,rpmhpd.h>
> + #define IPCC_MPROC_ADSP0
[ ... ]
> + glink-edge {
> + interrupts-extended = <&ipcc IPCC_MPROC_ADSP0
> + IPCC_MPROC_SIGNAL_GLINK_QMP
> + IRQ_TYPE_EDGE_RISING>;
> + mboxes = <&ipcc IPCC_MPROC_ADSP0 IPCC_MPROC_SIGNAL_GLINK_QMP>;
[Severity: Low]
Because the IPCC_MPROC_ADSP0 macro defined above lacks an assigned numeric
value, won't it be replaced with an empty string during C preprocessing?
Could this cause the interrupts-extended and mboxes arrays to silently drop a
required cell?
> +
> + label = "adsp";
> + qcom,remote-pid = <2>;
> +
> + /* ... */
> + };
> + };
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260724103848.233804-1-shengchao.guo@oss.qualcomm.com?part=2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support
2026-07-24 10:38 ` [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
@ 2026-07-24 11:10 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-24 11:10 UTC (permalink / raw)
To: Shawn Guo; +Cc: robh, conor+dt, devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Incorrect `crash_reason_smem` value for `nord_cdsp3_resource`.
--
--- Patch [3]: [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support ---
commit e1a98d51f6d64eea0602e8e964394bba2b37262b
Author: Shawn Guo <shengchao.guo@oss.qualcomm.com>
remoteproc: qcom: pas: Add Nord ADSP and CDSP support
This commit adds support for the ADSP and four CDSPs found on the Qualcomm
Nord SoC. It configures the ADSP for early boot and sets up the necessary
resource structures for all five DSPs.
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index 25599d7282083..6f3850a3fa9e8 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
[ ... ]
> +static const struct qcom_pas_data nord_cdsp3_resource = {
> + .crash_reason_smem = 666,
[Severity: Medium]
Is this SMEM item ID correct?
The sequence for the other CDSPs increases by 32:
nord_cdsp0_resource: 601
nord_cdsp1_resource: 633
nord_cdsp2_resource: 665
If that pattern holds, should this be 697 instead of 666?
Querying the wrong SMEM item ID will result in a failure to retrieve the
crash reason when the CDSP3 remote processor crashes.
> + .firmware_name = "cdsp3.mdt",
> + .dtb_firmware_name = "cdsp3_dtb.mbn",
> + .pas_id = 58,
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260724103848.233804-1-shengchao.guo@oss.qualcomm.com?part=3
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
2026-07-24 10:38 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
2026-07-24 10:48 ` sashiko-bot
@ 2026-07-24 12:19 ` Shawn Guo
1 sibling, 0 replies; 7+ messages in thread
From: Shawn Guo @ 2026-07-24 12:19 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Manivannan Sadhasivam, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel
On Fri, Jul 24, 2026 at 06:38:47PM +0800, Shawn Guo wrote:
> Add a dedicated binding for the Qualcomm Nord SoC PAS devices: ADSP
> and CDSPs. Nord ADSP uses CX and MX power domains while the CDSPs
> add an NSP domain on top of that.
>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
> .../bindings/remoteproc/qcom,nord-pas.yaml | 167 ++++++++++++++++++
> 1 file changed, 167 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
>
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
> new file mode 100644
> index 000000000000..c1d60ca6c63c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
> @@ -0,0 +1,167 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/qcom,nord-pas.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Nord SoC Peripheral Authentication Service
> +
> +maintainers:
> + - Shawn Guo <shengchao.guo@oss.qualcomm.com>
> +
> +description:
> + Qualcomm Nord SoC Peripheral Authentication Service loads and boots firmware
> + on the Qualcomm DSP Hexagon cores.
> +
> +properties:
> + compatible:
> + enum:
> + - qcom,nord-adsp-pas
> + - qcom,nord-cdsp0-pas
> + - qcom,nord-cdsp1-pas
> + - qcom,nord-cdsp2-pas
> + - qcom,nord-cdsp3-pas
> +
> + power-domains:
> + minItems: 2
> + items:
> + - description: CX power domain
> + - description: MX power domain
> + - description: NSP power domain
> +
> + power-domain-names:
> + minItems: 2
> + items:
> + - const: cx
> + - const: mx
> + - const: nsp
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: XO clock
> +
> + clock-names:
> + items:
> + - const: xo
> +
> + qcom,qmp:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description: Reference to the AOSS side-channel message RAM.
> +
> + smd-edge: false
> +
> + firmware-name:
> + items:
> + - description: Firmware name of the Hexagon core
> + - description: Firmware name of the Hexagon Devicetree
> +
> + memory-region:
> + items:
> + - description: Memory region for main Firmware authentication
> + - description: Memory region for Devicetree Firmware authentication
> +
> + interrupts:
> + items:
> + - description: Watchdog interrupt
> + - description: Fatal interrupt
> + - description: Ready interrupt
> + - description: Handover interrupt
> + - description: Stop acknowledge interrupt
> + - description: Shutdown acknowledge interrupt
> +
> + interrupt-names:
> + items:
> + - const: wdog
> + - const: fatal
> + - const: ready
> + - const: handover
> + - const: stop-ack
> + - const: shutdown-ack
> +
> + qcom,smem-states:
> + maxItems: 1
> + description: States used by the AP to signal the Hexagon core
> +
> + qcom,smem-state-names:
> + maxItems: 1
> + description: The names of the state bits used for SMP2P output
> +
> +required:
> + - compatible
> + - reg
> + - memory-region
> +
> +allOf:
> + - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
> + - if:
> + properties:
> + compatible:
> + enum:
> + - qcom,nord-adsp-pas
> + then:
> + properties:
> + power-domains:
> + maxItems: 2
> + power-domain-names:
> + maxItems: 2
Sashiko had a valid comment on this. Since the global power-domains
property defines minItems: 2, this will allow CDSP variants to incorrectly
pass schema validation if they omit the NSP power domain.
I will fix it.
Shawn
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,rpmh.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> + #include <dt-bindings/mailbox/qcom-ipcc.h>
> + #include <dt-bindings/power/qcom,rpmhpd.h>
> + #define IPCC_MPROC_ADSP0
> +
> + remoteproc@4c00000 {
> + compatible = "qcom,nord-adsp-pas";
> + reg = <0x04c00000 0x10000>;
> +
> + clocks = <&rpmhcc RPMH_CXO_CLK>;
> + clock-names = "xo";
> +
> + interrupts-extended = <&intc GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
> + <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
> + <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
> + <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
> + <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>,
> + <&smp2p_adsp_in 7 IRQ_TYPE_EDGE_RISING>;
> + interrupt-names = "wdog",
> + "fatal",
> + "ready",
> + "handover",
> + "stop-ack",
> + "shutdown-ack";
> +
> + memory-region = <&hpass_dsp0_mem>, <&hpass_dsp0_dtb_mem>;
> +
> + firmware-name = "qcom/nord/adsp.mbn",
> + "qcom/nord/adsp_dtb.mbn";
> +
> + power-domains = <&rpmhpd RPMHPD_CX>,
> + <&rpmhpd RPMHPD_MX>;
> + power-domain-names = "cx",
> + "mx";
> +
> + qcom,qmp = <&aoss_qmp>;
> + qcom,smem-states = <&smp2p_adsp_out 0>;
> + qcom,smem-state-names = "stop";
> +
> + glink-edge {
> + interrupts-extended = <&ipcc IPCC_MPROC_ADSP0
> + IPCC_MPROC_SIGNAL_GLINK_QMP
> + IRQ_TYPE_EDGE_RISING>;
> + mboxes = <&ipcc IPCC_MPROC_ADSP0 IPCC_MPROC_SIGNAL_GLINK_QMP>;
> +
> + label = "adsp";
> + qcom,remote-pid = <2>;
> +
> + /* ... */
> + };
> + };
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-24 12:19 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24 10:38 [PATCH v2 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-24 10:38 ` [PATCH v2 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
2026-07-24 10:38 ` [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
2026-07-24 10:48 ` sashiko-bot
2026-07-24 12:19 ` Shawn Guo
2026-07-24 10:38 ` [PATCH v2 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
2026-07-24 11:10 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox