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