File Index
Files and directories
Sign in
FILE

arm,scpi.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/firmware/arm,scpi.yaml YAML
  1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
  2# Copyright 2021 ARM Ltd.
  3%YAML 1.2
  4---
  5$id: http://devicetree.org/schemas/firmware/arm,scpi.yaml#
  6$schema: http://devicetree.org/meta-schemas/core.yaml#
  7
  8title: System Control and Power Interface (SCPI) Message Protocol
  9
 10maintainers:
 11  - Sudeep Holla <sudeep.holla@arm.com>
 12
 13description: |
 14  Firmware implementing the SCPI described in ARM document number ARM DUI
 15  0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be
 16  used by Linux to initiate various system control and power operations.
 17
 18  This binding is intended to define the interface the firmware implementing
 19  the SCPI provide for OSPM in the device tree.
 20
 21  [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
 22
 23properties:
 24  $nodename:
 25    const: scpi
 26
 27  compatible:
 28    description:
 29      SCPI compliant firmware complying to SCPI v1.0 and above OR
 30      SCPI compliant firmware complying to all unversioned releases
 31      prior to SCPI v1.0
 32    oneOf:
 33      - const: arm,scpi               # SCPI v1.0 and above
 34      - const: arm,scpi-pre-1.0       # Unversioned SCPI before v1.0
 35      - items:
 36          - enum:
 37              - amlogic,meson-gxbb-scpi
 38          - const: arm,scpi-pre-1.0
 39
 40  mboxes:
 41    description:
 42      List of phandle and mailbox channel specifiers. All the channels reserved
 43      by remote SCP firmware for use by SCPI message protocol should be
 44      specified in any order.
 45    minItems: 1
 46    maxItems: 4
 47
 48  shmem:
 49    description:
 50      List of phandle pointing to the shared memory(SHM) area between the
 51      processors using these mailboxes for IPC, one for each mailbox SHM can
 52      be any memory reserved for the purpose of this communication between the
 53      processors.
 54    minItems: 1
 55    maxItems: 4
 56
 57  power-controller:
 58    type: object
 59    description:
 60      This sub-node represents SCPI power domain controller.
 61
 62    properties:
 63      compatible:
 64        const: arm,scpi-power-domains
 65
 66      '#power-domain-cells':
 67        const: 1
 68
 69      num-domains:
 70        $ref: /schemas/types.yaml#/definitions/uint32
 71        description:
 72          Total number of power domains provided by SCPI. This is needed as
 73          the SCPI message protocol lacks a mechanism to query this
 74          information at runtime.
 75
 76    required:
 77      - compatible
 78      - '#power-domain-cells'
 79      - num-domains
 80
 81    additionalProperties: false
 82
 83  sensors:
 84    type: object
 85    description: |
 86      This sub-node represents SCPI sensors controller.
 87
 88    properties:
 89      compatible:
 90        oneOf:
 91          - const: arm,scpi-sensors
 92          - items:
 93              - enum:
 94                  - amlogic,meson-gxbb-scpi-sensors
 95              - const: arm,scpi-sensors
 96
 97      '#thermal-sensor-cells':
 98        const: 1
 99
100    required:
101      - compatible
102      - '#thermal-sensor-cells'
103
104    additionalProperties: false
105
106  clocks:
107    type: object
108    description:
109      This is the container node. Each sub-node represents one of the types
110      of clock controller - indexed or full range.
111
112    properties:
113      compatible:
114        const: arm,scpi-clocks
115
116    patternProperties:
117      "^clocks-[0-9a-f]+$":
118        type: object
119        description: |
120          This sub-node represents one of the types of clock controller
121          - indexed or full range.
122
123          "arm,scpi-dvfs-clocks" - all the clocks that are variable and index
124          based. These clocks don't provide an entire range of values between
125          the limits but only discrete points within the range. The firmware
126          provides the mapping for each such operating frequency and the index
127          associated with it. The firmware also manages the voltage scaling
128          appropriately with the clock scaling.
129
130          "arm,scpi-variable-clocks" - all the clocks that are variable and
131          provide full range within the specified range. The firmware provides
132          the range of values within a specified range.
133
134        properties:
135          compatible:
136            enum:
137              - arm,scpi-dvfs-clocks
138              - arm,scpi-variable-clocks
139
140          '#clock-cells':
141            const: 1
142
143          clock-output-names: true
144
145          clock-indices:
146            $ref: /schemas/types.yaml#/definitions/uint32-array
147            description:
148              The identifying number for the clocks(i.e.clock_id) in the node.
149              It can be non linear and hence provide the mapping of identifiers
150              into the clock-output-names array.
151
152        required:
153          - compatible
154          - '#clock-cells'
155          - clock-output-names
156          - clock-indices
157
158        additionalProperties: false
159
160    required:
161      - compatible
162
163    additionalProperties: false
164
165additionalProperties: false
166
167required:
168  - compatible
169  - mboxes
170  - shmem
171
172examples:
173  - |
174    firmware {
175        scpi {
176            compatible = "arm,scpi";
177            mboxes = <&mhuA 1>;
178            shmem = <&cpu_scp_hpri>; /* HP-NonSecure */
179
180            scpi_devpd: power-controller {
181                compatible = "arm,scpi-power-domains";
182                num-domains = <2>;
183                #power-domain-cells = <1>;
184            };
185
186            clocks {
187                compatible = "arm,scpi-clocks";
188
189                scpi_dvfs: clocks-0 {
190                    compatible = "arm,scpi-dvfs-clocks";
191                    #clock-cells = <1>;
192                    clock-indices = <0>, <1>, <2>;
193                    clock-output-names = "atlclk", "aplclk","gpuclk";
194                };
195
196                scpi_clk: clocks-1 {
197                    compatible = "arm,scpi-variable-clocks";
198                    #clock-cells = <1>;
199                    clock-indices = <3>, <4>;
200                    clock-output-names = "pxlclk0", "pxlclk1";
201                };
202            };
203
204            scpi_sensors: sensors {
205                compatible = "arm,scpi-sensors";
206                #thermal-sensor-cells = <1>;
207            };
208
209        };
210    };
211
212    soc {
213        #address-cells = <2>;
214        #size-cells = <2>;
215
216        sram@50000000 {
217            compatible = "mmio-sram";
218            reg = <0x0 0x50000000 0x0 0x10000>;
219
220            #address-cells = <1>;
221            #size-cells = <1>;
222            ranges = <0 0x0 0x50000000 0x10000>;
223
224            cpu_scp_lpri: scp-sram-section@0 {
225                compatible = "arm,scp-shmem";
226                reg = <0x0 0x200>;
227            };
228
229            cpu_scp_hpri: scp-sram-section@200 {
230                compatible = "arm,scp-shmem";
231                reg = <0x200 0x200>;
232            };
233        };
234    };
235
236  - |
237    firmware {
238        scpi {
239            compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0";
240            mboxes = <&mailbox 1>, <&mailbox 2>;
241            shmem = <&cpu_scp_lpri>, <&cpu_scp_hpri>;
242
243            scpi_sensors1: sensors {
244                compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors";
245                #thermal-sensor-cells = <1>;
246            };
247        };
248    };
249...
~/ Read-only file preview.