Document the bindings for the ADSP, CDSP, MPSS and WPSS PAS on the Milos
(e.g. SM7635) SoC.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
.../bindings/remoteproc/qcom,milos-pas.yaml | 201 +++++++++++++++++++++
1 file changed, 201 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..790ad38a0330bf81f6333e887522ddb97690edbc
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml
@@ -0,0 +1,201 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,milos-pas.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Milos SoC Peripheral Authentication Service
+
+maintainers:
+ - Luca Weiss <luca.weiss@fairphone.com>
+
+description:
+ Qualcomm Milos SoC Peripheral Authentication Service loads and boots firmware
+ on the Qualcomm DSP Hexagon cores.
+
+properties:
+ compatible:
+ enum:
+ - qcom,milos-adsp-pas
+ - qcom,milos-cdsp-pas
+ - qcom,milos-mpss-pas
+ - qcom,milos-wpss-pas
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: XO clock
+
+ clock-names:
+ items:
+ - const: xo
+
+ interrupts:
+ minItems: 6
+ maxItems: 6
+
+ interrupt-names:
+ minItems: 6
+ maxItems: 6
+
+ qcom,qmp:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Reference to the AOSS side-channel message RAM.
+
+ smd-edge: false
+
+ firmware-name:
+ $ref: /schemas/types.yaml#/definitions/string-array
+ minItems: 1
+ items:
+ - description: Firmware name of the Hexagon core
+ - description: Firmware name of the Hexagon Devicetree
+
+ memory-region:
+ minItems: 1
+ items:
+ - description: Memory region for core Firmware authentication
+ - description: Memory region for Devicetree Firmware authentication
+
+required:
+ - compatible
+ - reg
+ - memory-region
+
+allOf:
+ - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,milos-adsp-pas
+ - qcom,milos-cdsp-pas
+ then:
+ properties:
+ memory-region:
+ minItems: 2
+ maxItems: 2
+ firmware-name:
+ minItems: 2
+ maxItems: 2
+ else:
+ properties:
+ memory-region:
+ maxItems: 1
+ firmware-name:
+ maxItems: 1
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,milos-adsp-pas
+ then:
+ properties:
+ power-domains:
+ items:
+ - description: LCX power domain
+ - description: LMX power domain
+ power-domain-names:
+ items:
+ - const: lcx
+ - const: lmx
+
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,milos-cdsp-pas
+ - qcom,milos-wpss-pas
+ then:
+ properties:
+ power-domains:
+ items:
+ - description: CX power domain
+ - description: MX power domain
+ power-domain-names:
+ items:
+ - const: cx
+ - const: mx
+
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,milos-mpss-pas
+ then:
+ properties:
+ power-domains:
+ items:
+ - description: CX power domain
+ - description: MSS power domain
+ power-domain-names:
+ items:
+ - const: cx
+ - const: mss
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,rpmh.h>
+ #include <dt-bindings/interconnect/qcom,icc.h>
+ #include <dt-bindings/interconnect/qcom,milos-rpmh.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/mailbox/qcom-ipcc.h>
+ #include <dt-bindings/power/qcom,rpmhpd.h>
+
+ remoteproc@3000000 {
+ compatible = "qcom,milos-adsp-pas";
+ reg = <0x03000000 0x10000>;
+
+ interrupts-extended = <&pdc 6 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";
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "xo";
+
+ power-domains = <&rpmhpd RPMHPD_LCX>,
+ <&rpmhpd RPMHPD_LMX>;
+ power-domain-names = "lcx",
+ "lmx";
+
+ interconnects = <&lpass_ag_noc MASTER_LPASS_PROC QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+ memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;
+
+ firmware-name = "qcom/milos/vendor/device/adsp.mbn",
+ "qcom/milos/vendor/device/adsp_dtb.mbn";
+
+ qcom,qmp = <&aoss_qmp>;
+
+ qcom,smem-states = <&smp2p_adsp_out 0>;
+ qcom,smem-state-names = "stop";
+
+ glink-edge {
+ interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+ IPCC_MPROC_SIGNAL_GLINK_QMP
+ IRQ_TYPE_EDGE_RISING>;
+ mboxes = <&ipcc IPCC_CLIENT_LPASS
+ IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+ label = "lpass";
+ qcom,remote-pid = <2>;
+
+ /* ... */
+ };
+ };
--
2.50.0
On Wed, Jul 09, 2025 at 01:13:07PM +0200, Luca Weiss wrote: >Document the bindings for the ADSP, CDSP, MPSS and WPSS PAS on the Milos >(e.g. SM7635) SoC. > >Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >--- > .../bindings/remoteproc/qcom,milos-pas.yaml | 201 +++++++++++++++++++++ > 1 file changed, 201 insertions(+) > >diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml >new file mode 100644 >index 0000000000000000000000000000000000000000..790ad38a0330bf81f6333e887522ddb97690edbc >--- /dev/null >+++ b/Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.yaml >@@ -0,0 +1,201 @@ >+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause >+%YAML 1.2 >+--- >+$id: http://devicetree.org/schemas/remoteproc/qcom,milos-pas.yaml# >+$schema: http://devicetree.org/meta-schemas/core.yaml# >+ >+title: Qualcomm Milos SoC Peripheral Authentication Service >+ >+maintainers: >+ - Luca Weiss <luca.weiss@fairphone.com> >+ >+description: >+ Qualcomm Milos SoC Peripheral Authentication Service loads and boots firmware >+ on the Qualcomm DSP Hexagon cores. >+ >+properties: >+ compatible: >+ enum: >+ - qcom,milos-adsp-pas >+ - qcom,milos-cdsp-pas >+ - qcom,milos-mpss-pas >+ - qcom,milos-wpss-pas >+ >+ reg: >+ maxItems: 1 >+ >+ clocks: >+ items: >+ - description: XO clock >+ >+ clock-names: >+ items: >+ - const: xo >+ >+ interrupts: >+ minItems: 6 >+ maxItems: 6 If minItems and maxItems are same, just keep minItems. >+ >+ interrupt-names: >+ minItems: 6 >+ maxItems: 6 Ditto. Do you need to define the list? >+ >+ qcom,qmp: >+ $ref: /schemas/types.yaml#/definitions/phandle >+ description: Reference to the AOSS side-channel message RAM. >+ >+ smd-edge: false >+ >+ firmware-name: >+ $ref: /schemas/types.yaml#/definitions/string-array >+ minItems: 1 >+ items: >+ - description: Firmware name of the Hexagon core >+ - description: Firmware name of the Hexagon Devicetree >+ >+ memory-region: >+ minItems: 1 >+ items: >+ - description: Memory region for core Firmware authentication >+ - description: Memory region for Devicetree Firmware authentication >+ >+required: >+ - compatible >+ - reg >+ - memory-region >+ >+allOf: >+ - $ref: /schemas/remoteproc/qcom,pas-common.yaml# >+ - if: >+ properties: >+ compatible: >+ enum: >+ - qcom,milos-adsp-pas >+ - qcom,milos-cdsp-pas >+ then: >+ properties: >+ memory-region: >+ minItems: 2 >+ maxItems: 2 >+ firmware-name: >+ minItems: 2 >+ maxItems: 2 Just keep minItems if maxItems is same value. >+ else: >+ properties: >+ memory-region: >+ maxItems: 1 >+ firmware-name: >+ maxItems: 1 >+ >+ - if: >+ properties: >+ compatible: >+ contains: >+ enum: >+ - qcom,milos-adsp-pas >+ then: >+ properties: >+ power-domains: >+ items: >+ - description: LCX power domain >+ - description: LMX power domain >+ power-domain-names: >+ items: >+ - const: lcx >+ - const: lmx >+ >+ - if: >+ properties: >+ compatible: >+ enum: >+ - qcom,milos-cdsp-pas >+ - qcom,milos-wpss-pas >+ then: >+ properties: >+ power-domains: >+ items: >+ - description: CX power domain >+ - description: MX power domain >+ power-domain-names: >+ items: >+ - const: cx >+ - const: mx >+ >+ - if: >+ properties: >+ compatible: >+ enum: >+ - qcom,milos-mpss-pas >+ then: >+ properties: >+ power-domains: >+ items: >+ - description: CX power domain >+ - description: MSS power domain >+ power-domain-names: >+ items: >+ - const: cx >+ - const: mss >+ >+unevaluatedProperties: false >+ >+examples: >+ - | >+ #include <dt-bindings/clock/qcom,rpmh.h> >+ #include <dt-bindings/interconnect/qcom,icc.h> >+ #include <dt-bindings/interconnect/qcom,milos-rpmh.h> >+ #include <dt-bindings/interrupt-controller/irq.h> >+ #include <dt-bindings/mailbox/qcom-ipcc.h> >+ #include <dt-bindings/power/qcom,rpmhpd.h> >+ >+ remoteproc@3000000 { >+ compatible = "qcom,milos-adsp-pas"; >+ reg = <0x03000000 0x10000>; >+ >+ interrupts-extended = <&pdc 6 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>; This seems not defined in bindings, I am not sure on this. Just a question here. Regards Peng
On 21/07/2025 08:42, Peng Fan wrote: >> + >> + interrupt-names: >> + minItems: 6 >> + maxItems: 6 > > Ditto. > > Do you need to define the list? Did you read the entire binding? It reminds me Frank's comment as well - instead of actually checking you just ask question which you would find answer by yourselves if you really opened the code. > >> + >> + qcom,qmp: >> + $ref: /schemas/types.yaml#/definitions/phandle >> + description: Reference to the AOSS side-channel message RAM. >> + >> + smd-edge: false >> + >> + firmware-name: >> + $ref: /schemas/types.yaml#/definitions/string-array >> + minItems: 1 >> + items: >> + - description: Firmware name of the Hexagon core >> + - description: Firmware name of the Hexagon Devicetree >> + >> + memory-region: >> + minItems: 1 >> + items: >> + - description: Memory region for core Firmware authentication >> + - description: Memory region for Devicetree Firmware authentication >> + >> +required: >> + - compatible >> + - reg >> + - memory-region >> + >> +allOf: >> + - $ref: /schemas/remoteproc/qcom,pas-common.yaml# >> + - if: >> + properties: >> + compatible: >> + enum: >> + - qcom,milos-adsp-pas >> + - qcom,milos-cdsp-pas >> + then: >> + properties: >> + memory-region: >> + minItems: 2 >> + maxItems: 2 >> + firmware-name: >> + minItems: 2 >> + maxItems: 2 > > Just keep minItems if maxItems is same value. This is not a correct advice. Best regards, Krzysztof
On Mon, Jul 21, 2025 at 01:38:59PM +0200, Krzysztof Kozlowski wrote: >On 21/07/2025 08:42, Peng Fan wrote: >>> + >>> + interrupt-names: >>> + minItems: 6 >>> + maxItems: 6 >> >> Ditto. >> >> Do you need to define the list? > > >Did you read the entire binding? It reminds me Frank's comment as well - I DO. >instead of actually checking you just ask question which you would find >answer by yourselves if you really opened the code. I see there is a list in pas-common with entries listed. So just wonder here is there a need to list all 6 entries. Not qcom developer, just go through the list and see what I could do. Things could be improved if ask language is not welcomed. Or I am doing something wrong here? > >> >>> + >>> + qcom,qmp: >>> + $ref: /schemas/types.yaml#/definitions/phandle >>> + description: Reference to the AOSS side-channel message RAM. >>> + >>> + smd-edge: false >>> + >>> + firmware-name: >>> + $ref: /schemas/types.yaml#/definitions/string-array >>> + minItems: 1 >>> + items: >>> + - description: Firmware name of the Hexagon core >>> + - description: Firmware name of the Hexagon Devicetree >>> + >>> + memory-region: >>> + minItems: 1 >>> + items: >>> + - description: Memory region for core Firmware authentication >>> + - description: Memory region for Devicetree Firmware authentication >>> + >>> +required: >>> + - compatible >>> + - reg >>> + - memory-region >>> + >>> +allOf: >>> + - $ref: /schemas/remoteproc/qcom,pas-common.yaml# >>> + - if: >>> + properties: >>> + compatible: >>> + enum: >>> + - qcom,milos-adsp-pas >>> + - qcom,milos-cdsp-pas >>> + then: >>> + properties: >>> + memory-region: >>> + minItems: 2 >>> + maxItems: 2 >>> + firmware-name: >>> + minItems: 2 >>> + maxItems: 2 >> >> Just keep minItems if maxItems is same value. > > >This is not a correct advice. Sorry for this. I may need to find out more in dt-schema. Regards, Peng > > >Best regards, >Krzysztof
On Wed, 09 Jul 2025 13:13:07 +0200, Luca Weiss wrote: > Document the bindings for the ADSP, CDSP, MPSS and WPSS PAS on the Milos > (e.g. SM7635) SoC. > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > --- > .../bindings/remoteproc/qcom,milos-pas.yaml | 201 +++++++++++++++++++++ > 1 file changed, 201 insertions(+) > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.example.dts:20:18: fatal error: dt-bindings/interconnect/qcom,milos-rpmh.h: No such file or directory 20 | #include <dt-bindings/interconnect/qcom,milos-rpmh.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [scripts/Makefile.dtbs:131: Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.example.dtb] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/builds/robherring/dt-review-ci/linux/Makefile:1519: dt_binding_check] Error 2 make: *** [Makefile:248: __sub-make] Error 2 doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250709-sm7635-remoteprocs-v3-1-c943be976180@fairphone.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Thu Jul 10, 2025 at 12:30 AM CEST, Rob Herring (Arm) wrote: > > On Wed, 09 Jul 2025 13:13:07 +0200, Luca Weiss wrote: >> Document the bindings for the ADSP, CDSP, MPSS and WPSS PAS on the Milos >> (e.g. SM7635) SoC. >> >> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >> --- >> .../bindings/remoteproc/qcom,milos-pas.yaml | 201 +++++++++++++++++++++ >> 1 file changed, 201 insertions(+) >> > > My bot found errors running 'make dt_binding_check' on your patch: > > yamllint warnings/errors: > > dtschema/dtc warnings/errors: > Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.example.dts:20:18: fatal error: dt-bindings/interconnect/qcom,milos-rpmh.h: No such file or directory > 20 | #include <dt-bindings/interconnect/qcom,milos-rpmh.h> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I forgot to mark the milos interconnect series to be a dependency of this. If a resend is necessary, I can add it in v4. Regards Luca > compilation terminated. > make[2]: *** [scripts/Makefile.dtbs:131: Documentation/devicetree/bindings/remoteproc/qcom,milos-pas.example.dtb] Error 1 > make[2]: *** Waiting for unfinished jobs.... > make[1]: *** [/builds/robherring/dt-review-ci/linux/Makefile:1519: dt_binding_check] Error 2 > make: *** [Makefile:248: __sub-make] Error 2 > > doc reference errors (make refcheckdocs): > > See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250709-sm7635-remoteprocs-v3-1-c943be976180@fairphone.com > > The base for the series is generally the latest rc1. A different dependency > should be noted in *this* patch. > > If you already ran 'make dt_binding_check' and didn't see the above > error(s), then make sure 'yamllint' is installed and dt-schema is up to > date: > > pip3 install dtschema --upgrade > > Please check and re-submit after running the above command yourself. Note > that DT_SCHEMA_FILES can be set to your schema file to speed up checking > your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2025 Red Hat, Inc.