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