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-ipq6018
28          - qcom,scm-ipq806x
29          - qcom,scm-ipq8074
30          - qcom,scm-mdm9607
31          - qcom,scm-msm8226
32          - qcom,scm-msm8660
33          - qcom,scm-msm8916
34          - qcom,scm-msm8953
35          - qcom,scm-msm8960
36          - qcom,scm-msm8974
37          - qcom,scm-msm8976
38          - qcom,scm-msm8994
39          - qcom,scm-msm8996
40          - qcom,scm-msm8998
41          - qcom,scm-sc7180
42          - qcom,scm-sc7280
43          - qcom,scm-sc8280xp
44          - qcom,scm-sdm670
45          - qcom,scm-sdm845
46          - qcom,scm-sdx55
47          - qcom,scm-sdx65
48          - qcom,scm-sm6115
49          - qcom,scm-sm6125
50          - qcom,scm-sm6350
51          - qcom,scm-sm6375
52          - qcom,scm-sm8150
53          - qcom,scm-sm8250
54          - qcom,scm-sm8350
55          - qcom,scm-sm8450
56          - qcom,scm-qcs404
57      - const: qcom,scm
58
59  clocks:
60    minItems: 1
61    maxItems: 3
62
63  clock-names:
64    minItems: 1
65    maxItems: 3
66
67  interconnects:
68    maxItems: 1
69
70  interconnect-names:
71    maxItems: 1
72
73  '#reset-cells':
74    const: 1
75
76  qcom,dload-mode:
77    $ref: /schemas/types.yaml#/definitions/phandle-array
78    items:
79      - items:
80          - description: phandle to TCSR hardware block
81          - description: offset of the download mode control register
82    description: TCSR hardware block
83
84allOf:
85  - if:
86      properties:
87        compatible:
88          contains:
89            enum:
90              - qcom,scm-apq8064
91              - qcom,scm-msm8660
92              - qcom,scm-msm8960
93              - qcom,scm-sm6375
94    then:
95      properties:
96        clock-names:
97          items:
98            - const: core
99
100        clocks:
101          maxItems: 1
102
103      required:
104        - clocks
105        - clock-names
106
107  - if:
108      properties:
109        compatible:
110          contains:
111            enum:
112              - qcom,scm-apq8084
113              - qcom,scm-mdm9607
114              - qcom,scm-msm8916
115              - qcom,scm-msm8953
116              - qcom,scm-msm8974
117              - qcom,scm-msm8976
118    then:
119      properties:
120        clock-names:
121          items:
122            - const: core
123            - const: bus
124            - const: iface
125
126        clocks:
127          minItems: 3
128          maxItems: 3
129
130      required:
131        - clocks
132        - clock-names
133
134required:
135  - compatible
136
137additionalProperties: false
138
139examples:
140  - |
141    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
142
143    firmware {
144        scm {
145            compatible = "qcom,scm-msm8916", "qcom,scm";
146            clocks = <&gcc GCC_CRYPTO_CLK>,
147                     <&gcc GCC_CRYPTO_AXI_CLK>,
148                     <&gcc GCC_CRYPTO_AHB_CLK>;
149            clock-names = "core", "bus", "iface";
150        };
151    };
152