1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 # Copyright 2021 ARM Ltd.
5 $id: http://devicetree.org/schemas/firmware/arm,scpi.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
8 title: System Control and Power Interface (SCPI) Message Protocol bindings
11 - Sudeep Holla <sudeep.holla@arm.com>
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.
18 This binding is intended to define the interface the firmware implementing
19 the SCPI provide for OSPM in the device tree.
21 [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
29 SCPI compliant firmware complying to SCPI v1.0 and above OR
30 SCPI compliant firmware complying to all unversioned releases
33 - const: arm,scpi # SCPI v1.0 and above
34 - const: arm,scpi-pre-1.0 # Unversioned SCPI before v1.0
37 - amlogic,meson-gxbb-scpi
38 - const: arm,scpi-pre-1.0
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.
49 List of phandle pointing to the shared memory(SHM) area between the
50 processors using these mailboxes for IPC, one for each mailbox SHM can
51 be any memory reserved for the purpose of this communication between the
58 This sub-node represents SCPI power domain controller.
62 const: arm,scpi-power-domains
64 '#power-domain-cells':
68 $ref: /schemas/types.yaml#/definitions/uint32
70 Total number of power domains provided by SCPI. This is needed as
71 the SCPI message protocol lacks a mechanism to query this
72 information at runtime.
76 - '#power-domain-cells'
79 additionalProperties: false
84 This sub-node represents SCPI sensors controller.
89 - const: arm,scpi-sensors
92 - amlogic,meson-gxbb-scpi-sensors
93 - const: arm,scpi-sensors
95 '#thermal-sensor-cells':
100 - '#thermal-sensor-cells'
102 additionalProperties: false
107 This is the container node. Each sub-node represents one of the types
108 of clock controller - indexed or full range.
112 const: arm,scpi-clocks
115 "^clocks-[0-9a-f]+$":
118 This sub-node represents one of the types of clock controller
119 - indexed or full range.
121 "arm,scpi-dvfs-clocks" - all the clocks that are variable and index
122 based. These clocks don't provide an entire range of values between
123 the limits but only discrete points within the range. The firmware
124 provides the mapping for each such operating frequency and the index
125 associated with it. The firmware also manages the voltage scaling
126 appropriately with the clock scaling.
128 "arm,scpi-variable-clocks" - all the clocks that are variable and
129 provide full range within the specified range. The firmware provides
130 the range of values within a specified range.
135 - arm,scpi-dvfs-clocks
136 - arm,scpi-variable-clocks
141 clock-output-names: true
144 $ref: /schemas/types.yaml#/definitions/uint32-array
146 The identifying number for the clocks(i.e.clock_id) in the node.
147 It can be non linear and hence provide the mapping of identifiers
148 into the clock-output-names array.
156 additionalProperties: false
161 additionalProperties: false
163 additionalProperties: false
174 compatible = "arm,scpi";
176 shmem = <&cpu_scp_hpri>; /* HP-NonSecure */
178 scpi_devpd: power-controller {
179 compatible = "arm,scpi-power-domains";
181 #power-domain-cells = <1>;
185 compatible = "arm,scpi-clocks";
187 scpi_dvfs: clocks-0 {
188 compatible = "arm,scpi-dvfs-clocks";
190 clock-indices = <0>, <1>, <2>;
191 clock-output-names = "atlclk", "aplclk","gpuclk";
195 compatible = "arm,scpi-variable-clocks";
197 clock-indices = <3>, <4>;
198 clock-output-names = "pxlclk0", "pxlclk1";
202 scpi_sensors: sensors {
203 compatible = "arm,scpi-sensors";
204 #thermal-sensor-cells = <1>;
211 #address-cells = <2>;
215 compatible = "mmio-sram";
216 reg = <0x0 0x50000000 0x0 0x10000>;
218 #address-cells = <1>;
220 ranges = <0 0x0 0x50000000 0x10000>;
222 cpu_scp_lpri: scp-sram-section@0 {
223 compatible = "arm,scp-shmem";
227 cpu_scp_hpri: scp-sram-section@200 {
228 compatible = "arm,scp-shmem";
237 compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0";
238 mboxes = <&mailbox 1 &mailbox 2>;
239 shmem = <&cpu_scp_lpri &cpu_scp_hpri>;
241 scpi_sensors1: sensors {
242 compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors";
243 #thermal-sensor-cells = <1>;