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