xref: /linux/Documentation/devicetree/bindings/firmware/qcom,scm.yaml (revision bba2c3615bd6cfee7456d1130f2e6b01b3f4e9ba)
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-mdm9607
41          - qcom,scm-milos
42          - qcom,scm-msm8226
43          - qcom,scm-msm8660
44          - qcom,scm-msm8916
45          - qcom,scm-msm8937
46          - qcom,scm-msm8953
47          - qcom,scm-msm8960
48          - qcom,scm-msm8974
49          - qcom,scm-msm8976
50          - qcom,scm-msm8994
51          - qcom,scm-msm8996
52          - qcom,scm-msm8998
53          - qcom,scm-nord
54          - qcom,scm-qcm2290
55          - qcom,scm-qcs615
56          - qcom,scm-qcs8300
57          - qcom,scm-qdu1000
58          - qcom,scm-sa8255p
59          - qcom,scm-sa8775p
60          - qcom,scm-sar2130p
61          - qcom,scm-sc7180
62          - qcom,scm-sc7280
63          - qcom,scm-sc8180x
64          - qcom,scm-sc8280xp
65          - qcom,scm-sdm670
66          - qcom,scm-sdm845
67          - qcom,scm-sdx55
68          - qcom,scm-sdx65
69          - qcom,scm-sdx75
70          - qcom,scm-sm6115
71          - qcom,scm-sm6125
72          - qcom,scm-sm6350
73          - qcom,scm-sm6375
74          - qcom,scm-sm7150
75          - qcom,scm-sm8150
76          - qcom,scm-sm8250
77          - qcom,scm-sm8350
78          - qcom,scm-sm8450
79          - qcom,scm-sm8550
80          - qcom,scm-sm8650
81          - qcom,scm-sm8750
82          - qcom,scm-qcs404
83          - qcom,scm-x1e80100
84      - const: qcom,scm
85
86  clocks:
87    minItems: 1
88    maxItems: 3
89
90  clock-names:
91    minItems: 1
92    maxItems: 3
93
94  dma-coherent: true
95
96  interconnects:
97    maxItems: 1
98
99  interconnect-names:
100    maxItems: 1
101
102  '#reset-cells':
103    const: 1
104
105  interrupts:
106    description:
107      The wait-queue interrupt that firmware raises as part of handshake
108      protocol to handle sleeping SCM calls.
109    maxItems: 1
110
111  memory-region:
112    description:
113      Phandle to the memory region reserved for the shared memory bridge to TZ.
114    maxItems: 1
115
116  qcom,sdi-enabled:
117    description:
118      Indicates that the SDI (Secure Debug Image) has been enabled by TZ
119      by default and it needs to be disabled.
120      If not disabled WDT assertion or reboot will cause the board to hang
121      in the debug mode.
122    type: boolean
123
124  qcom,dload-mode:
125    $ref: /schemas/types.yaml#/definitions/phandle-array
126    items:
127      - items:
128          - description: phandle to TCSR hardware block
129          - description: offset of the download mode control register
130    description: TCSR hardware block
131
132allOf:
133  # Clocks
134  - if:
135      properties:
136        compatible:
137          contains:
138            enum:
139              - qcom,scm-apq8064
140              - qcom,scm-apq8084
141              - qcom,scm-mdm9607
142              - qcom,scm-msm8226
143              - qcom,scm-msm8660
144              - qcom,scm-msm8916
145              - qcom,scm-msm8937
146              - qcom,scm-msm8953
147              - qcom,scm-msm8960
148              - qcom,scm-msm8974
149              - qcom,scm-msm8976
150              - qcom,scm-qcm2290
151              - qcom,scm-sm6375
152    then:
153      required:
154        - clocks
155        - clock-names
156    else:
157      properties:
158        clock-names: false
159        clocks: false
160
161  - if:
162      properties:
163        compatible:
164          contains:
165            enum:
166              - qcom,scm-apq8064
167              - qcom,scm-msm8660
168              - qcom,scm-msm8960
169              - qcom,scm-qcm2290
170              - qcom,scm-sm6375
171    then:
172      properties:
173        clock-names:
174          items:
175            - const: core
176
177        clocks:
178          maxItems: 1
179
180  - if:
181      properties:
182        compatible:
183          contains:
184            enum:
185              - qcom,scm-apq8084
186              - qcom,scm-mdm9607
187              - qcom,scm-msm8226
188              - qcom,scm-msm8916
189              - qcom,scm-msm8937
190              - qcom,scm-msm8953
191              - qcom,scm-msm8974
192              - qcom,scm-msm8976
193    then:
194      properties:
195        clock-names:
196          items:
197            - const: core
198            - const: bus
199            - const: iface
200
201        clocks:
202          minItems: 3
203          maxItems: 3
204
205  # Interrupts
206  - if:
207      not:
208        properties:
209          compatible:
210            contains:
211              enum:
212                - qcom,scm-eliza
213                - qcom,scm-hawi
214                - qcom,scm-kaanapali
215                - qcom,scm-milos
216                - qcom,scm-sm8450
217                - qcom,scm-sm8550
218                - qcom,scm-sm8650
219                - qcom,scm-sm8750
220    then:
221      properties:
222        interrupts: false
223  - if:
224      not:
225        properties:
226          compatible:
227            contains:
228              enum:
229                - qcom,scm-sa8255p
230                - qcom,scm-sa8775p
231    then:
232      properties:
233        memory-region: false
234
235required:
236  - compatible
237
238additionalProperties: false
239
240examples:
241  - |
242    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
243
244    firmware {
245        scm {
246            compatible = "qcom,scm-msm8916", "qcom,scm";
247            clocks = <&gcc GCC_CRYPTO_CLK>,
248                     <&gcc GCC_CRYPTO_AXI_CLK>,
249                     <&gcc GCC_CRYPTO_AHB_CLK>;
250            clock-names = "core", "bus", "iface";
251        };
252    };
253