Re: [PATCH v2 2/3] dt-bindings: remoteproc: qcom,nord-pas: Document Nord PAS
Shawn Guo <[email protected]> Fri, 24 Jul 2026 20:19:16 +0800
| Newsgroups | org.kernel.vger.linux-remoteproc,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <amNYRMIkmf2hfYXV@QCOM-aGQu4IUr3Y> |
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 <[email protected]> > --- > .../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 <[email protected]> > + > +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 >