summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/firmware/qcom,scm.yaml
blob: 25688571ee7ca282a63e91f164b8c22aff539f0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/firmware/qcom,scm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: QCOM Secure Channel Manager (SCM)

description: |
  Qualcomm processors include an interface to communicate to the secure firmware.
  This interface allows for clients to request different types of actions.
  These can include CPU power up/down, HDCP requests, loading of firmware,
  and other assorted actions.

maintainers:
  - Bjorn Andersson <bjorn.andersson@linaro.org>
  - Robert Marko <robimarko@gmail.com>
  - Guru Das Srinagesh <quic_gurus@quicinc.com>

properties:
  compatible:
    items:
      - enum:
          - qcom,scm-apq8064
          - qcom,scm-apq8084
          - qcom,scm-ipq4019
          - qcom,scm-ipq6018
          - qcom,scm-ipq806x
          - qcom,scm-ipq8074
          - qcom,scm-mdm9607
          - qcom,scm-msm8226
          - qcom,scm-msm8660
          - qcom,scm-msm8916
          - qcom,scm-msm8953
          - qcom,scm-msm8960
          - qcom,scm-msm8974
          - qcom,scm-msm8976
          - qcom,scm-msm8994
          - qcom,scm-msm8996
          - qcom,scm-msm8998
          - qcom,scm-sc7180
          - qcom,scm-sc7280
          - qcom,scm-sc8280xp
          - qcom,scm-sdm670
          - qcom,scm-sdm845
          - qcom,scm-sdx55
          - qcom,scm-sdx65
          - qcom,scm-sm6115
          - qcom,scm-sm6125
          - qcom,scm-sm6350
          - qcom,scm-sm6375
          - qcom,scm-sm8150
          - qcom,scm-sm8250
          - qcom,scm-sm8350
          - qcom,scm-sm8450
          - qcom,scm-qcs404
      - const: qcom,scm

  clocks:
    minItems: 1
    maxItems: 3

  clock-names:
    minItems: 1
    maxItems: 3

  interconnects:
    maxItems: 1

  interconnect-names:
    maxItems: 1

  '#reset-cells':
    const: 1

  qcom,dload-mode:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: phandle to TCSR hardware block
          - description: offset of the download mode control register
    description: TCSR hardware block

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,scm-apq8064
              - qcom,scm-msm8660
              - qcom,scm-msm8960
              - qcom,scm-sm6375
    then:
      properties:
        clock-names:
          items:
            - const: core

        clocks:
          maxItems: 1

      required:
        - clocks
        - clock-names

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,scm-apq8084
              - qcom,scm-mdm9607
              - qcom,scm-msm8916
              - qcom,scm-msm8953
              - qcom,scm-msm8974
              - qcom,scm-msm8976
    then:
      properties:
        clock-names:
          items:
            - const: core
            - const: bus
            - const: iface

        clocks:
          minItems: 3
          maxItems: 3

      required:
        - clocks
        - clock-names

required:
  - compatible

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-msm8916.h>

    firmware {
        scm {
            compatible = "qcom,scm-msm8916", "qcom,scm";
            clocks = <&gcc GCC_CRYPTO_CLK>,
                     <&gcc GCC_CRYPTO_AXI_CLK>,
                     <&gcc GCC_CRYPTO_AHB_CLK>;
            clock-names = "core", "bus", "iface";
        };
    };