xref: /linux/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml (revision 06a130e42a5bfc84795464bff023bff4c16f58c5)
1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/remoteproc/qcom,sm8550-pas.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SM8550 Peripheral Authentication Service
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12description:
13  Qualcomm SM8550 SoC Peripheral Authentication Service loads and boots firmware
14  on the Qualcomm DSP Hexagon cores.
15
16properties:
17  compatible:
18    enum:
19      - qcom,sdx75-mpss-pas
20      - qcom,sm8550-adsp-pas
21      - qcom,sm8550-cdsp-pas
22      - qcom,sm8550-mpss-pas
23      - qcom,sm8650-adsp-pas
24      - qcom,sm8650-cdsp-pas
25      - qcom,sm8650-mpss-pas
26      - qcom,x1e80100-adsp-pas
27      - qcom,x1e80100-cdsp-pas
28
29  reg:
30    maxItems: 1
31
32  clocks:
33    items:
34      - description: XO clock
35
36  clock-names:
37    items:
38      - const: xo
39
40  qcom,qmp:
41    $ref: /schemas/types.yaml#/definitions/phandle
42    description: Reference to the AOSS side-channel message RAM.
43
44  smd-edge: false
45
46  firmware-name:
47    $ref: /schemas/types.yaml#/definitions/string-array
48    items:
49      - description: Firmware name of the Hexagon core
50      - description: Firmware name of the Hexagon Devicetree
51
52  memory-region:
53    minItems: 2
54    items:
55      - description: Memory region for main Firmware authentication
56      - description: Memory region for Devicetree Firmware authentication
57      - description: DSM Memory region
58      - description: DSM Memory region 2
59      - description: Memory region for Qlink Logging
60
61required:
62  - compatible
63  - reg
64  - memory-region
65
66allOf:
67  - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
68  - if:
69      properties:
70        compatible:
71          enum:
72            - qcom,sm8550-adsp-pas
73            - qcom,sm8550-cdsp-pas
74            - qcom,sm8650-adsp-pas
75            - qcom,x1e80100-adsp-pas
76            - qcom,x1e80100-cdsp-pas
77    then:
78      properties:
79        interrupts:
80          maxItems: 5
81        interrupt-names:
82          maxItems: 5
83        memory-region:
84          maxItems: 2
85  - if:
86      properties:
87        compatible:
88          enum:
89            - qcom,sm8650-cdsp-pas
90    then:
91      properties:
92        interrupts:
93          maxItems: 5
94        interrupt-names:
95          maxItems: 5
96        memory-region:
97          minItems: 3
98          maxItems: 3
99  - if:
100      properties:
101        compatible:
102          enum:
103            - qcom,sm8550-mpss-pas
104    then:
105      properties:
106        interrupts:
107          minItems: 6
108        interrupt-names:
109          minItems: 6
110        memory-region:
111          minItems: 3
112          maxItems: 3
113  - if:
114      properties:
115        compatible:
116          enum:
117            - qcom,sdx75-mpss-pas
118            - qcom,sm8650-mpss-pas
119    then:
120      properties:
121        interrupts:
122          minItems: 6
123        interrupt-names:
124          minItems: 6
125        memory-region:
126          minItems: 5
127          maxItems: 5
128
129  - if:
130      properties:
131        compatible:
132          enum:
133            - qcom,sm8550-adsp-pas
134            - qcom,sm8650-adsp-pas
135            - qcom,x1e80100-adsp-pas
136    then:
137      properties:
138        power-domains:
139          items:
140            - description: LCX power domain
141            - description: LMX power domain
142        power-domain-names:
143          items:
144            - const: lcx
145            - const: lmx
146
147  - if:
148      properties:
149        compatible:
150          enum:
151            - qcom,sdx75-mpss-pas
152            - qcom,sm8550-mpss-pas
153            - qcom,sm8650-mpss-pas
154    then:
155      properties:
156        power-domains:
157          items:
158            - description: CX power domain
159            - description: MSS power domain
160        power-domain-names:
161          items:
162            - const: cx
163            - const: mss
164  - if:
165      properties:
166        compatible:
167          enum:
168            - qcom,sm8550-cdsp-pas
169            - qcom,sm8650-cdsp-pas
170            - qcom,x1e80100-cdsp-pas
171    then:
172      properties:
173        power-domains:
174          items:
175            - description: CX power domain
176            - description: MXC power domain
177            - description: NSP power domain
178        power-domain-names:
179          items:
180            - const: cx
181            - const: mxc
182            - const: nsp
183
184unevaluatedProperties: false
185
186examples:
187  - |
188    #include <dt-bindings/clock/qcom,rpmh.h>
189    #include <dt-bindings/interrupt-controller/irq.h>
190    #include <dt-bindings/mailbox/qcom-ipcc.h>
191
192    remoteproc@30000000 {
193        compatible = "qcom,sm8550-adsp-pas";
194        reg = <0x030000000 0x100>;
195
196        clocks = <&rpmhcc RPMH_CXO_CLK>;
197        clock-names = "xo";
198
199        interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
200                              <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
201                              <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
202                              <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
203                              <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
204        interrupt-names = "wdog", "fatal", "ready",
205                          "handover", "stop-ack";
206
207        memory-region = <&adsp_mem>, <&dtb_adsp_mem>;
208
209        firmware-name = "qcom/sm8550/adsp.mbn",
210                        "qcom/sm8550/adsp_dtb.mbn";
211
212        power-domains = <&rpmhpd_sm8550_lcx>,
213                        <&rpmhpd_sm8550_lmx>;
214        power-domain-names = "lcx", "lmx";
215
216        qcom,qmp = <&aoss_qmp>;
217        qcom,smem-states = <&smp2p_adsp_out 0>;
218        qcom,smem-state-names = "stop";
219
220        glink-edge {
221            interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
222                                         IPCC_MPROC_SIGNAL_GLINK_QMP
223                                         IRQ_TYPE_EDGE_RISING>;
224            mboxes = <&ipcc IPCC_CLIENT_LPASS IPCC_MPROC_SIGNAL_GLINK_QMP>;
225
226            label = "lpass";
227            qcom,remote-pid = <2>;
228
229            /* ... */
230        };
231    };
232