* [PATCH v5 0/3] Add ADSP and CDSP support for Nord SoC
@ 2026-07-29 2:35 Shawn Guo
2026-07-29 2:35 ` [PATCH v5 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Shawn Guo @ 2026-07-29 2:35 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 has 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 v5:
- Use .mbn instead of .mdt for qcom_pas_data.firmware_name
- Link to v4: https://lore.kernel.org/all/20260728084012.685036-1-shengchao.guo@oss.qualcomm.com/
Changes for v4:
- Add Nord PAS entries to qcom_pas_of_match[] in alphabetical order
- Link to v3: https://lore.kernel.org/all/20260727074621.561661-1-shengchao.guo@oss.qualcomm.com/
Changes for v3:
- Fix qcom,nord-pas bindings to define "minItems: 3" for CDSPs with
an else clause
- Link to v2: https://lore.kernel.org/all/20260724103848.233804-1-shengchao.guo@oss.qualcomm.com/
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 | 173 ++++++++++++++++++
.../bindings/soc/qcom/qcom,aoss-qmp.yaml | 1 +
drivers/remoteproc/qcom_q6v5_pas.c | 110 +++++++++++
3 files changed, 284 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel
2026-07-29 2:35 [PATCH v5 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
@ 2026-07-29 2:35 ` Shawn Guo
2026-07-29 2:35 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
2026-07-29 2:35 ` [PATCH v5 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
2 siblings, 0 replies; 5+ messages in thread
From: Shawn Guo @ 2026-07-29 2:35 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] 5+ messages in thread
* [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
2026-07-29 2:35 [PATCH v5 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-29 2:35 ` [PATCH v5 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
@ 2026-07-29 2:35 ` Shawn Guo
2026-07-29 2:44 ` sashiko-bot
2026-07-29 2:35 ` [PATCH v5 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
2 siblings, 1 reply; 5+ messages in thread
From: Shawn Guo @ 2026-07-29 2:35 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
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.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../bindings/remoteproc/qcom,nord-pas.yaml | 173 ++++++++++++++++++
1 file changed, 173 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..e90d2953ba69
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
@@ -0,0 +1,173 @@
+# 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
+ else:
+ properties:
+ power-domains:
+ minItems: 3
+ power-domain-names:
+ minItems: 3
+
+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] 5+ messages in thread
* [PATCH v5 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support
2026-07-29 2:35 [PATCH v5 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-29 2:35 ` [PATCH v5 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
2026-07-29 2:35 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
@ 2026-07-29 2:35 ` Shawn Guo
2 siblings, 0 replies; 5+ messages in thread
From: Shawn Guo @ 2026-07-29 2:35 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,
Konrad Dybcio
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.
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
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..a4b233d92efb 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.mbn",
+ .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.mbn",
+ .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.mbn",
+ .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.mbn",
+ .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.mbn",
+ .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",
@@ -1702,6 +1807,11 @@ static const struct of_device_id qcom_pas_of_match[] = {
{ .compatible = "qcom,msm8996-slpi-pil", .data = &msm8996_slpi_resource_init },
{ .compatible = "qcom,msm8998-adsp-pas", .data = &msm8996_adsp_resource },
{ .compatible = "qcom,msm8998-slpi-pas", .data = &msm8996_slpi_resource_init },
+ { .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,qcs404-adsp-pas", .data = &adsp_resource_init },
{ .compatible = "qcom,qcs404-cdsp-pas", .data = &cdsp_resource_init },
{ .compatible = "qcom,qcs404-wcss-pas", .data = &wcss_resource_init },
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
2026-07-29 2:35 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
@ 2026-07-29 2:44 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-07-29 2:44 UTC (permalink / raw)
To: Shawn Guo; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The macro `IPCC_MPROC_ADSP0` is defined without a value in the YAML example, causing a cell count mismatch that breaks `dt_binding_check` validation.
--
--- Patch [2]: [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS ---
commit 6e5bdff8032d03019c9e668110ed03437c7f4597
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..e90d2953ba692
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
[ ... ]
> +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
[Severity: Low]
Is this macro missing a value?
Because it is defined without a placeholder value, the C preprocessor will
evaluate it to nothing.
> +
> + remoteproc@4c00000 {
[ ... ]
> + 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]
Will this cause dt_binding_check validation to fail?
Since IPCC_MPROC_ADSP0 evaluates to nothing, the cell count for both
interrupts-extended and mboxes will be missing one cell. The ipcc interrupt
and mailbox controllers expect 3 and 2 cells respectively.
> +
> + label = "adsp";
> + qcom,remote-pid = <2>;
> +
> + /* ... */
> + };
> + };
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260729023508.879752-1-shengchao.guo@oss.qualcomm.com?part=2
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-29 2:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29 2:35 [PATCH v5 0/3] Add ADSP and CDSP support for Nord SoC Shawn Guo
2026-07-29 2:35 ` [PATCH v5 1/3] dt-bindings: soc: qcom,aoss-qmp: Document Nord AOSS side channel Shawn Guo
2026-07-29 2:35 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS Shawn Guo
2026-07-29 2:44 ` sashiko-bot
2026-07-29 2:35 ` [PATCH v5 3/3] remoteproc: qcom: pas: Add Nord ADSP and CDSP support Shawn Guo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.