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