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