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
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 ARM SMC/HVC transport
38 with shmem address(4KB-page, offset) as parameters
40 - const: arm,scmi-smc-param
41 - description: SCMI compliant firmware with Qualcomm SMC/HVC transport
43 - const: qcom,scmi-smc
44 - description: SCMI compliant firmware with SCMI Virtio transport.
45 The virtio transport only supports a single device.
47 - const: arm,scmi-virtio
48 - description: SCMI compliant firmware with OP-TEE transport
50 - const: linaro,scmi-optee
54 The interrupt that indicates message completion by the platform
55 rather than by the return of the smc call. This should not be used
56 except when the platform requires such behavior.
64 Specifies the mailboxes used to communicate with SCMI compliant
79 List of phandle and mailbox channel specifiers. It should contain
80 exactly one, two or three mailboxes; the first one or two for transmitting
81 messages ("tx") and another optional ("rx") for receiving notifications
82 and delayed responses, if supported by the platform.
83 The number of mailboxes needed for transmitting messages depends on the
84 type of channels exposed by the specific underlying mailbox controller;
85 one single channel descriptor is enough if such channel is bidirectional,
86 while two channel descriptors are needed to represent the SCMI ("tx")
87 channel if the underlying mailbox channels are of unidirectional type.
88 The effective combination in numbers of mboxes and shmem descriptors let
89 the SCMI subsystem determine unambiguosly which type of SCMI channels are
90 made available by the underlying mailbox controller and how to use them.
91 1 mbox / 1 shmem => SCMI TX over 1 mailbox bidirectional channel
92 2 mbox / 2 shmem => SCMI TX and RX over 2 mailbox bidirectional channels
93 2 mbox / 1 shmem => SCMI TX over 2 mailbox unidirectional channels
94 3 mbox / 2 shmem => SCMI TX and RX over 3 mailbox unidirectional channels
95 Any other combination of mboxes and shmem is invalid.
101 List of phandle pointing to the shared memory(SHM) area, for each
102 transport channel specified.
114 An optional time value, expressed in microseconds, representing, on this
115 platform, the threshold above which any SCMI command, advertised to have
116 an higher-than-threshold execution latency, should not be considered for
117 atomic mode of operation, even if requested.
121 $ref: /schemas/types.yaml#/definitions/uint32
123 SMC id required when using smc or hvc transports
125 linaro,optee-channel-id:
126 $ref: /schemas/types.yaml#/definitions/uint32
128 Channel specifier required when using OP-TEE transport.
131 $ref: '#/$defs/protocol-node'
132 unevaluatedProperties: false
138 '#power-domain-cells':
142 - '#power-domain-cells'
145 $ref: '#/$defs/protocol-node'
146 unevaluatedProperties: false
155 '#power-domain-cells':
163 - '#power-domain-cells'
166 $ref: '#/$defs/protocol-node'
167 unevaluatedProperties: false
180 $ref: '#/$defs/protocol-node'
181 unevaluatedProperties: false
187 '#thermal-sensor-cells':
191 - '#thermal-sensor-cells'
194 $ref: '#/$defs/protocol-node'
195 unevaluatedProperties: false
208 $ref: '#/$defs/protocol-node'
209 unevaluatedProperties: false
217 additionalProperties: false
219 The list of all regulators provided by this SCMI controller.
229 '^regulator@[0-9a-f]+$':
231 $ref: /schemas/regulator/regulator.yaml#
232 unevaluatedProperties: false
237 description: Identifier for the voltage regulator.
243 $ref: '#/$defs/protocol-node'
244 unevaluatedProperties: false
250 additionalProperties: false
256 Each sub-node represents a protocol supported. If the platform
257 supports a dedicated communication channel for a particular protocol,
258 then the corresponding transport properties must be present.
259 The virtio transport does not support a dedicated communication channel.
285 linaro,optee-channel-id:
286 $ref: /schemas/types.yaml#/definitions/uint32
288 Channel specifier required when using OP-TEE transport and
289 protocol has a dedicated communication channel.
305 interrupt-names: false
330 const: linaro,scmi-optee
333 - linaro,optee-channel-id
339 compatible = "arm,scmi";
340 mboxes = <&mhuB 0 0>,
342 mbox-names = "tx", "rx";
343 shmem = <&cpu_scp_lpri0>,
346 #address-cells = <1>;
349 atomic-threshold-us = <10000>;
351 scmi_devpd: protocol@11 {
353 #power-domain-cells = <1>;
356 scmi_dvfs: protocol@13 {
360 mboxes = <&mhuB 1 0>,
362 mbox-names = "tx", "rx";
363 shmem = <&cpu_scp_hpri0>,
367 scmi_clk: protocol@14 {
372 scmi_sensors: protocol@15 {
374 #thermal-sensor-cells = <1>;
377 scmi_reset: protocol@16 {
382 scmi_voltage: protocol@17 {
385 #address-cells = <1>;
388 regulator_devX: regulator@0 {
390 regulator-max-microvolt = <3300000>;
393 regulator_devY: regulator@9 {
395 regulator-min-microvolt = <500000>;
396 regulator-max-microvolt = <4200000>;
401 scmi_powercap: protocol@18 {
408 #address-cells = <2>;
412 compatible = "mmio-sram";
413 reg = <0x0 0x50000000 0x0 0x10000>;
415 #address-cells = <1>;
417 ranges = <0 0x0 0x50000000 0x10000>;
419 cpu_scp_lpri0: scp-sram-section@0 {
420 compatible = "arm,scmi-shmem";
424 cpu_scp_lpri1: scp-sram-section@80 {
425 compatible = "arm,scmi-shmem";
429 cpu_scp_hpri0: scp-sram-section@100 {
430 compatible = "arm,scmi-shmem";
434 cpu_scp_hpri2: scp-sram-section@180 {
435 compatible = "arm,scmi-shmem";
444 compatible = "arm,scmi-smc";
445 shmem = <&cpu_scp_lpri0>, <&cpu_scp_lpri1>;
446 arm,smc-id = <0xc3000001>;
448 #address-cells = <1>;
451 scmi_devpd1: protocol@11 {
453 #power-domain-cells = <1>;
461 compatible = "linaro,scmi-optee";
462 linaro,optee-channel-id = <0>;
464 #address-cells = <1>;
467 scmi_dvfs1: protocol@13 {
469 linaro,optee-channel-id = <1>;
470 shmem = <&cpu_optee_lpri0>;
474 scmi_clk0: protocol@14 {
482 #address-cells = <2>;
486 compatible = "mmio-sram";
487 reg = <0x0 0x51000000 0x0 0x10000>;
489 #address-cells = <1>;
491 ranges = <0 0x0 0x51000000 0x10000>;
493 cpu_optee_lpri0: optee-sram-section@0 {
494 compatible = "arm,scmi-shmem";