250 lines
6.9 KiB
YAML
250 lines
6.9 KiB
YAML
|
# 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 bindings
|
||
|
|
||
|
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>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
...
|