xref: /linux/Documentation/devicetree/bindings/firmware/qcom,scm.yaml (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/firmware/qcom,scm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: QCOM Secure Channel Manager (SCM)
8
9description: |
10  Qualcomm processors include an interface to communicate to the secure firmware.
11  This interface allows for clients to request different types of actions.
12  These can include CPU power up/down, HDCP requests, loading of firmware,
13  and other assorted actions.
14
15maintainers:
16  - Bjorn Andersson <bjorn.andersson@linaro.org>
17  - Robert Marko <robimarko@gmail.com>
18  - Guru Das Srinagesh <quic_gurus@quicinc.com>
19
20properties:
21  compatible:
22    items:
23      - enum:
24          - qcom,scm-apq8064
25          - qcom,scm-apq8084
26          - qcom,scm-eliza
27          - qcom,scm-glymur
28          - qcom,scm-hawi
29          - qcom,scm-ipq4019
30          - qcom,scm-ipq5018
31          - qcom,scm-ipq5210
32          - qcom,scm-ipq5332
33          - qcom,scm-ipq5424
34          - qcom,scm-ipq6018
35          - qcom,scm-ipq806x
36          - qcom,scm-ipq8074
37          - qcom,scm-ipq9574
38          - qcom,scm-ipq9650
39          - qcom,scm-kaanapali
40          - qcom,scm-maili
41          - qcom,scm-mdm9607
42          - qcom,scm-milos
43          - qcom,scm-msm8226
44          - qcom,scm-msm8660
45          - qcom,scm-msm8916
46          - qcom,scm-msm8937
47          - qcom,scm-msm8953
48          - qcom,scm-msm8960
49          - qcom,scm-msm8974
50          - qcom,scm-msm8976
51          - qcom,scm-msm8994
52          - qcom,scm-msm8996
53          - qcom,scm-msm8998
54          - qcom,scm-nord
55          - qcom,scm-qcm2290
56          - qcom,scm-qcs615
57          - qcom,scm-qcs8300
58          - qcom,scm-qdu1000
59          - qcom,scm-sa8255p
60          - qcom,scm-sa8775p
61          - qcom,scm-sar2130p
62          - qcom,scm-sc7180
63          - qcom,scm-sc7280
64          - qcom,scm-sc8180x
65          - qcom,scm-sc8280xp
66          - qcom,scm-sdm670
67          - qcom,scm-sdm845
68          - qcom,scm-sdx55
69          - qcom,scm-sdx65
70          - qcom,scm-sdx75
71          - qcom,scm-shikra
72          - qcom,scm-sm6115
73          - qcom,scm-sm6125
74          - qcom,scm-sm6350
75          - qcom,scm-sm6375
76          - qcom,scm-sm7150
77          - qcom,scm-sm8150
78          - qcom,scm-sm8250
79          - qcom,scm-sm8350
80          - qcom,scm-sm8450
81          - qcom,scm-sm8550
82          - qcom,scm-sm8650
83          - qcom,scm-sm8750
84          - qcom,scm-qcs404
85          - qcom,scm-x1e80100
86      - const: qcom,scm
87
88  clocks:
89    minItems: 1
90    maxItems: 3
91
92  clock-names:
93    minItems: 1
94    maxItems: 3
95
96  dma-coherent: true
97
98  interconnects:
99    maxItems: 1
100
101  interconnect-names:
102    maxItems: 1
103
104  '#reset-cells':
105    const: 1
106
107  interrupts:
108    description:
109      The wait-queue interrupt that firmware raises as part of handshake
110      protocol to handle sleeping SCM calls.
111    maxItems: 1
112
113  memory-region:
114    description:
115      Phandle to the memory region reserved for the shared memory bridge to TZ.
116    maxItems: 1
117
118  qcom,sdi-enabled:
119    description:
120      Indicates that the SDI (Secure Debug Image) has been enabled by TZ
121      by default and it needs to be disabled.
122      If not disabled WDT assertion or reboot will cause the board to hang
123      in the debug mode.
124    type: boolean
125
126  qcom,dload-mode:
127    $ref: /schemas/types.yaml#/definitions/phandle-array
128    items:
129      - items:
130          - description: phandle to TCSR hardware block
131          - description: offset of the download mode control register
132    description: TCSR hardware block
133
134  sram:
135    description:
136      Phandle to a region in always-on SRAM used to store the download
137      mode value for boot firmware to read before DDR is initialised on
138      the next warm reset.
139    maxItems: 1
140
141allOf:
142  # Clocks
143  - if:
144      properties:
145        compatible:
146          contains:
147            enum:
148              - qcom,scm-apq8064
149              - qcom,scm-apq8084
150              - qcom,scm-mdm9607
151              - qcom,scm-msm8226
152              - qcom,scm-msm8660
153              - qcom,scm-msm8916
154              - qcom,scm-msm8937
155              - qcom,scm-msm8953
156              - qcom,scm-msm8960
157              - qcom,scm-msm8974
158              - qcom,scm-msm8976
159              - qcom,scm-qcm2290
160              - qcom,scm-shikra
161              - qcom,scm-sm6375
162    then:
163      required:
164        - clocks
165        - clock-names
166    else:
167      properties:
168        clock-names: false
169        clocks: false
170
171  - if:
172      properties:
173        compatible:
174          contains:
175            enum:
176              - qcom,scm-apq8064
177              - qcom,scm-msm8660
178              - qcom,scm-msm8960
179              - qcom,scm-qcm2290
180              - qcom,scm-shikra
181              - qcom,scm-sm6375
182    then:
183      properties:
184        clock-names:
185          items:
186            - const: core
187
188        clocks:
189          maxItems: 1
190
191  - if:
192      properties:
193        compatible:
194          contains:
195            enum:
196              - qcom,scm-apq8084
197              - qcom,scm-mdm9607
198              - qcom,scm-msm8226
199              - qcom,scm-msm8916
200              - qcom,scm-msm8937
201              - qcom,scm-msm8953
202              - qcom,scm-msm8974
203              - qcom,scm-msm8976
204    then:
205      properties:
206        clock-names:
207          items:
208            - const: core
209            - const: bus
210            - const: iface
211
212        clocks:
213          minItems: 3
214          maxItems: 3
215
216  # Interrupts
217  - if:
218      not:
219        properties:
220          compatible:
221            contains:
222              enum:
223                - qcom,scm-eliza
224                - qcom,scm-hawi
225                - qcom,scm-kaanapali
226                - qcom,scm-maili
227                - qcom,scm-milos
228                - qcom,scm-sm8450
229                - qcom,scm-sm8550
230                - qcom,scm-sm8650
231                - qcom,scm-sm8750
232    then:
233      properties:
234        interrupts: false
235  - if:
236      not:
237        properties:
238          compatible:
239            contains:
240              enum:
241                - qcom,scm-sa8255p
242                - qcom,scm-sa8775p
243    then:
244      properties:
245        memory-region: false
246
247required:
248  - compatible
249
250additionalProperties: false
251
252examples:
253  - |
254    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
255
256    firmware {
257        scm {
258            compatible = "qcom,scm-msm8916", "qcom,scm";
259            clocks = <&gcc GCC_CRYPTO_CLK>,
260                     <&gcc GCC_CRYPTO_AXI_CLK>,
261                     <&gcc GCC_CRYPTO_AHB_CLK>;
262            clock-names = "core", "bus", "iface";
263        };
264    };
265