2021-05-17 23:54:58 +08:00
|
|
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
|
|
%YAML 1.2
|
|
|
|
---
|
|
|
|
$id: http://devicetree.org/schemas/dvfs/performance-domain.yaml#
|
|
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
|
|
|
|
title: Generic performance domains
|
|
|
|
|
|
|
|
maintainers:
|
|
|
|
- Sudeep Holla <sudeep.holla@arm.com>
|
|
|
|
|
|
|
|
description: |+
|
|
|
|
This binding is intended for performance management of groups of devices or
|
|
|
|
CPUs that run in the same performance domain. Performance domains must not
|
|
|
|
be confused with power domains. A performance domain is defined by a set
|
|
|
|
of devices that always have to run at the same performance level. For a given
|
|
|
|
performance domain, there is a single point of control that affects all the
|
|
|
|
devices in the domain, making it impossible to set the performance level of
|
|
|
|
an individual device in the domain independently from other devices in
|
|
|
|
that domain. For example, a set of CPUs that share a voltage domain, and
|
|
|
|
have a common frequency control, is said to be in the same performance
|
|
|
|
domain.
|
|
|
|
|
|
|
|
This device tree binding can be used to bind performance domain consumer
|
|
|
|
devices with their performance domains provided by performance domain
|
|
|
|
providers. A performance domain provider can be represented by any node in
|
|
|
|
the device tree and can provide one or more performance domains. A consumer
|
|
|
|
node can refer to the provider by a phandle and a set of phandle arguments
|
|
|
|
(so called performance domain specifiers) of length specified by the
|
|
|
|
\#performance-domain-cells property in the performance domain provider node.
|
|
|
|
|
|
|
|
select: true
|
|
|
|
|
|
|
|
properties:
|
|
|
|
"#performance-domain-cells":
|
|
|
|
description:
|
|
|
|
Number of cells in a performance domain specifier. Typically 0 for nodes
|
|
|
|
representing a single performance domain and 1 for nodes providing
|
|
|
|
multiple performance domains (e.g. performance controllers), but can be
|
|
|
|
any value as specified by device tree binding documentation of particular
|
|
|
|
provider.
|
|
|
|
enum: [ 0, 1 ]
|
|
|
|
|
|
|
|
performance-domains:
|
2023-06-09 22:07:42 +08:00
|
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
2021-05-17 23:54:58 +08:00
|
|
|
description:
|
|
|
|
A phandle and performance domain specifier as defined by bindings of the
|
|
|
|
performance controller/provider specified by phandle.
|
|
|
|
|
|
|
|
additionalProperties: true
|
|
|
|
|
|
|
|
examples:
|
|
|
|
- |
|
2022-03-09 23:15:40 +08:00
|
|
|
soc {
|
|
|
|
#address-cells = <2>;
|
|
|
|
#size-cells = <2>;
|
|
|
|
|
|
|
|
performance: performance-controller@11bc00 {
|
|
|
|
compatible = "mediatek,cpufreq-hw";
|
|
|
|
reg = <0 0x0011bc10 0 0x120>, <0 0x0011bd30 0 0x120>;
|
|
|
|
|
|
|
|
#performance-domain-cells = <1>;
|
|
|
|
};
|
2021-05-17 23:54:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
// The node above defines a performance controller that is a performance
|
|
|
|
// domain provider and expects one cell as its phandle argument.
|
|
|
|
|
|
|
|
cpus {
|
|
|
|
#address-cells = <2>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
cpu@0 {
|
|
|
|
device_type = "cpu";
|
|
|
|
compatible = "arm,cortex-a57";
|
|
|
|
reg = <0x0 0x0>;
|
|
|
|
performance-domains = <&performance 1>;
|
|
|
|
};
|
|
|
|
};
|