| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
- # Copyright 2021 ARM Ltd.
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/firmware/arm,scpi.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: System Control and Power Interface (SCPI) Message Protocol
- maintainers:
- - Sudeep Holla <sudeep.holla@arm.com>
- description: |
- Firmware implementing the SCPI described in ARM document number ARM DUI
- 0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be
- used by Linux to initiate various system control and power operations.
- This binding is intended to define the interface the firmware implementing
- the SCPI provide for OSPM in the device tree.
- [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
- properties:
- $nodename:
- const: scpi
- compatible:
- description:
- SCPI compliant firmware complying to SCPI v1.0 and above OR
- SCPI compliant firmware complying to all unversioned releases
- prior to SCPI v1.0
- oneOf:
- - const: arm,scpi # SCPI v1.0 and above
- - const: arm,scpi-pre-1.0 # Unversioned SCPI before v1.0
- - items:
- - enum:
- - amlogic,meson-gxbb-scpi
- - const: arm,scpi-pre-1.0
- mboxes:
- description:
- List of phandle and mailbox channel specifiers. All the channels reserved
- by remote SCP firmware for use by SCPI message protocol should be
- specified in any order.
- minItems: 1
- maxItems: 4
- shmem:
- description:
- List of phandle pointing to the shared memory(SHM) area between the
- processors using these mailboxes for IPC, one for each mailbox SHM can
- be any memory reserved for the purpose of this communication between the
- processors.
- minItems: 1
- maxItems: 4
- power-controller:
- type: object
- description:
- This sub-node represents SCPI power domain controller.
- properties:
- compatible:
- const: arm,scpi-power-domains
- '#power-domain-cells':
- const: 1
- num-domains:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Total number of power domains provided by SCPI. This is needed as
- the SCPI message protocol lacks a mechanism to query this
- information at runtime.
- required:
- - compatible
- - '#power-domain-cells'
- - num-domains
- additionalProperties: false
- sensors:
- type: object
- description: |
- This sub-node represents SCPI sensors controller.
- properties:
- compatible:
- oneOf:
- - const: arm,scpi-sensors
- - items:
- - enum:
- - amlogic,meson-gxbb-scpi-sensors
- - const: arm,scpi-sensors
- '#thermal-sensor-cells':
- const: 1
- required:
- - compatible
- - '#thermal-sensor-cells'
- additionalProperties: false
- clocks:
- type: object
- description:
- This is the container node. Each sub-node represents one of the types
- of clock controller - indexed or full range.
- properties:
- compatible:
- const: arm,scpi-clocks
- patternProperties:
- "^clocks-[0-9a-f]+$":
- type: object
- description: |
- This sub-node represents one of the types of clock controller
- - indexed or full range.
- "arm,scpi-dvfs-clocks" - all the clocks that are variable and index
- based. These clocks don't provide an entire range of values between
- the limits but only discrete points within the range. The firmware
- provides the mapping for each such operating frequency and the index
- associated with it. The firmware also manages the voltage scaling
- appropriately with the clock scaling.
- "arm,scpi-variable-clocks" - all the clocks that are variable and
- provide full range within the specified range. The firmware provides
- the range of values within a specified range.
- properties:
- compatible:
- enum:
- - arm,scpi-dvfs-clocks
- - arm,scpi-variable-clocks
- '#clock-cells':
- const: 1
- clock-output-names: true
- clock-indices:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- description:
- The identifying number for the clocks(i.e.clock_id) in the node.
- It can be non linear and hence provide the mapping of identifiers
- into the clock-output-names array.
- required:
- - compatible
- - '#clock-cells'
- - clock-output-names
- - clock-indices
- additionalProperties: false
- required:
- - compatible
- additionalProperties: false
- additionalProperties: false
- required:
- - compatible
- - mboxes
- - shmem
- examples:
- - |
- firmware {
- scpi {
- compatible = "arm,scpi";
- mboxes = <&mhuA 1>;
- shmem = <&cpu_scp_hpri>; /* HP-NonSecure */
- scpi_devpd: power-controller {
- compatible = "arm,scpi-power-domains";
- num-domains = <2>;
- #power-domain-cells = <1>;
- };
- clocks {
- compatible = "arm,scpi-clocks";
- scpi_dvfs: clocks-0 {
- compatible = "arm,scpi-dvfs-clocks";
- #clock-cells = <1>;
- clock-indices = <0>, <1>, <2>;
- clock-output-names = "atlclk", "aplclk","gpuclk";
- };
- scpi_clk: clocks-1 {
- compatible = "arm,scpi-variable-clocks";
- #clock-cells = <1>;
- clock-indices = <3>, <4>;
- clock-output-names = "pxlclk0", "pxlclk1";
- };
- };
- scpi_sensors: sensors {
- compatible = "arm,scpi-sensors";
- #thermal-sensor-cells = <1>;
- };
- };
- };
- soc {
- #address-cells = <2>;
- #size-cells = <2>;
- sram@50000000 {
- compatible = "mmio-sram";
- reg = <0x0 0x50000000 0x0 0x10000>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges = <0 0x0 0x50000000 0x10000>;
- cpu_scp_lpri: scp-sram-section@0 {
- compatible = "arm,scp-shmem";
- reg = <0x0 0x200>;
- };
- cpu_scp_hpri: scp-sram-section@200 {
- compatible = "arm,scp-shmem";
- reg = <0x200 0x200>;
- };
- };
- };
- - |
- firmware {
- scpi {
- compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0";
- mboxes = <&mailbox 1>, <&mailbox 2>;
- shmem = <&cpu_scp_lpri>, <&cpu_scp_hpri>;
- scpi_sensors1: sensors {
- compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors";
- #thermal-sensor-cells = <1>;
- };
- };
- };
- ...
|