1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 # Copyright 2021 ARM Ltd.
5 $id: http://devicetree.org/schemas/firmware/arm,scmi.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
8 title: System Control and Management Interface (SCMI) Message Protocol bindings
11 - Sudeep Holla <sudeep.holla@arm.com>
14 The SCMI is intended to allow agents such as OSPM to manage various functions
15 that are provided by the hardware platform it is running on, including power
16 and performance functions.
18 This binding is intended to define the interface the firmware implementing
19 the SCMI as described in ARM document number ARM DEN 0056 ("ARM System Control
20 and Management Interface Platform Design Document")[0] provide for OSPM in
23 [0] https://developer.arm.com/documentation/den0056/latest
31 - description: SCMI compliant firmware with mailbox transport
34 - description: SCMI compliant firmware with ARM SMC/HVC transport
37 - description: SCMI compliant firmware with SCMI Virtio transport.
38 The virtio transport only supports a single device.
40 - const: arm,scmi-virtio
41 - description: SCMI compliant firmware with OP-TEE transport
43 - const: linaro,scmi-optee
47 The interrupt that indicates message completion by the platform
48 rather than by the return of the smc call. This should not be used
49 except when the platform requires such behavior.
57 Specifies the mailboxes used to communicate with SCMI compliant
65 List of phandle and mailbox channel specifiers. It should contain
66 exactly one or two mailboxes, one for transmitting messages("tx")
67 and another optional for receiving the notifications("rx") if supported.
73 List of phandle pointing to the shared memory(SHM) area, for each
74 transport channel specified.
86 An optional time value, expressed in microseconds, representing, on this
87 platform, the threshold above which any SCMI command, advertised to have
88 an higher-than-threshold execution latency, should not be considered for
89 atomic mode of operation, even if requested.
93 $ref: /schemas/types.yaml#/definitions/uint32
95 SMC id required when using smc or hvc transports
97 linaro,optee-channel-id:
98 $ref: /schemas/types.yaml#/definitions/uint32
100 Channel specifier required when using OP-TEE transport.
108 '#power-domain-cells':
112 - '#power-domain-cells'
144 '#thermal-sensor-cells':
148 - '#thermal-sensor-cells'
171 The list of all regulators provided by this SCMI controller.
174 '^regulators@[0-9a-f]+$':
176 $ref: "../regulator/regulator.yaml#"
181 description: Identifier for the voltage regulator.
192 additionalProperties: false
195 '^protocol@[0-9a-f]+$':
198 Each sub-node represents a protocol supported. If the platform
199 supports a dedicated communication channel for a particular protocol,
200 then the corresponding transport properties must be present.
201 The virtio transport does not support a dedicated communication channel.
220 linaro,optee-channel-id:
221 $ref: /schemas/types.yaml#/definitions/uint32
223 Channel specifier required when using OP-TEE transport and
224 protocol has a dedicated communication channel.
240 interrupt-names: false
262 const: linaro,scmi-optee
265 - linaro,optee-channel-id
271 compatible = "arm,scmi";
272 mboxes = <&mhuB 0 0>,
274 mbox-names = "tx", "rx";
275 shmem = <&cpu_scp_lpri0>,
278 #address-cells = <1>;
281 atomic-threshold-us = <10000>;
283 scmi_devpd: protocol@11 {
285 #power-domain-cells = <1>;
288 scmi_dvfs: protocol@13 {
292 mboxes = <&mhuB 1 0>,
294 mbox-names = "tx", "rx";
295 shmem = <&cpu_scp_hpri0>,
299 scmi_clk: protocol@14 {
304 scmi_sensors: protocol@15 {
306 #thermal-sensor-cells = <1>;
309 scmi_reset: protocol@16 {
314 scmi_voltage: protocol@17 {
317 #address-cells = <1>;
320 regulator_devX: regulator@0 {
322 regulator-max-microvolt = <3300000>;
325 regulator_devY: regulator@9 {
327 regulator-min-microvolt = <500000>;
328 regulator-max-microvolt = <4200000>;
333 scmi_powercap: protocol@18 {
340 #address-cells = <2>;
344 compatible = "mmio-sram";
345 reg = <0x0 0x50000000 0x0 0x10000>;
347 #address-cells = <1>;
349 ranges = <0 0x0 0x50000000 0x10000>;
351 cpu_scp_lpri0: scp-sram-section@0 {
352 compatible = "arm,scmi-shmem";
356 cpu_scp_lpri1: scp-sram-section@80 {
357 compatible = "arm,scmi-shmem";
361 cpu_scp_hpri0: scp-sram-section@100 {
362 compatible = "arm,scmi-shmem";
366 cpu_scp_hpri2: scp-sram-section@180 {
367 compatible = "arm,scmi-shmem";
376 compatible = "arm,scmi-smc";
377 shmem = <&cpu_scp_lpri0>, <&cpu_scp_lpri1>;
378 arm,smc-id = <0xc3000001>;
380 #address-cells = <1>;
383 scmi_devpd1: protocol@11 {
385 #power-domain-cells = <1>;
393 compatible = "linaro,scmi-optee";
394 linaro,optee-channel-id = <0>;
396 #address-cells = <1>;
399 scmi_dvfs1: protocol@13 {
401 linaro,optee-channel-id = <1>;
402 shmem = <&cpu_optee_lpri0>;
406 scmi_clk0: protocol@14 {
414 #address-cells = <2>;
418 compatible = "mmio-sram";
419 reg = <0x0 0x51000000 0x0 0x10000>;
421 #address-cells = <1>;
423 ranges = <0 0x0 0x51000000 0x10000>;
425 cpu_optee_lpri0: optee-sram-section@0 {
426 compatible = "arm,scmi-shmem";