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