mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-07 07:25:11 +07:00
![Krzysztof Kozlowski](/assets/img/avatar_default.png)
Convert Generic Power Domain bindings to DT schema format using json-schema. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Stephen Boyd <sboyd@kernel.org> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Rob Herring <robh@kernel.org>
134 lines
4.8 KiB
YAML
134 lines
4.8 KiB
YAML
# SPDX-License-Identifier: GPL-2.0
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/power/power-domain.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Generic PM domains
|
|
|
|
maintainers:
|
|
- Rafael J. Wysocki <rjw@rjwysocki.net>
|
|
- Kevin Hilman <khilman@kernel.org>
|
|
- Ulf Hansson <ulf.hansson@linaro.org>
|
|
|
|
description: |+
|
|
System on chip designs are often divided into multiple PM domains that can be
|
|
used for power gating of selected IP blocks for power saving by reduced leakage
|
|
current.
|
|
|
|
This device tree binding can be used to bind PM domain consumer devices with
|
|
their PM domains provided by PM domain providers. A PM domain provider can be
|
|
represented by any node in the device tree and can provide one or more PM
|
|
domains. A consumer node can refer to the provider by a phandle and a set of
|
|
phandle arguments (so called PM domain specifiers) of length specified by the
|
|
\#power-domain-cells property in the PM domain provider node.
|
|
|
|
properties:
|
|
$nodename:
|
|
pattern: "^(power-controller|power-domain)(@.*)?$"
|
|
|
|
domain-idle-states:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
description:
|
|
A phandle of an idle-state that shall be soaked into a generic domain
|
|
power state. The idle state definitions are compatible with
|
|
domain-idle-state specified in
|
|
Documentation/devicetree/bindings/power/domain-idle-state.txt
|
|
phandles that are not compatible with domain-idle-state will be ignored.
|
|
The domain-idle-state property reflects the idle state of this PM domain
|
|
and not the idle states of the devices or sub-domains in the PM domain.
|
|
Devices and sub-domains have their own idle-states independent
|
|
of the parent domain's idle states. In the absence of this property,
|
|
the domain would be considered as capable of being powered-on
|
|
or powered-off.
|
|
|
|
operating-points-v2:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
description:
|
|
Phandles to the OPP tables of power domains provided by a power domain
|
|
provider. If the provider provides a single power domain only or all
|
|
the power domains provided by the provider have identical OPP tables,
|
|
then this shall contain a single phandle. Refer to ../opp/opp.txt
|
|
for more information.
|
|
|
|
"#power-domain-cells":
|
|
description:
|
|
Number of cells in a PM domain specifier. Typically 0 for nodes
|
|
representing a single PM domain and 1 for nodes providing multiple PM
|
|
domains (e.g. power controllers), but can be any value as specified
|
|
by device tree binding documentation of particular provider.
|
|
|
|
power-domains:
|
|
description:
|
|
A phandle and PM domain specifier as defined by bindings of the power
|
|
controller specified by phandle. Some power domains might be powered
|
|
from another power domain (or have other hardware specific
|
|
dependencies). For representing such dependency a standard PM domain
|
|
consumer binding is used. When provided, all domains created
|
|
by the given provider should be subdomains of the domain specified
|
|
by this binding.
|
|
|
|
required:
|
|
- "#power-domain-cells"
|
|
|
|
examples:
|
|
- |
|
|
power: power-controller@12340000 {
|
|
compatible = "foo,power-controller";
|
|
reg = <0x12340000 0x1000>;
|
|
#power-domain-cells = <1>;
|
|
};
|
|
|
|
// The node above defines a power controller that is a PM domain provider and
|
|
// expects one cell as its phandle argument.
|
|
|
|
- |
|
|
parent2: power-controller@12340000 {
|
|
compatible = "foo,power-controller";
|
|
reg = <0x12340000 0x1000>;
|
|
#power-domain-cells = <1>;
|
|
};
|
|
|
|
child2: power-controller@12341000 {
|
|
compatible = "foo,power-controller";
|
|
reg = <0x12341000 0x1000>;
|
|
power-domains = <&parent2 0>;
|
|
#power-domain-cells = <1>;
|
|
};
|
|
|
|
// The nodes above define two power controllers: 'parent' and 'child'.
|
|
// Domains created by the 'child' power controller are subdomains of '0' power
|
|
// domain provided by the 'parent' power controller.
|
|
|
|
- |
|
|
parent3: power-controller@12340000 {
|
|
compatible = "foo,power-controller";
|
|
reg = <0x12340000 0x1000>;
|
|
#power-domain-cells = <0>;
|
|
domain-idle-states = <&DOMAIN_RET>, <&DOMAIN_PWR_DN>;
|
|
};
|
|
|
|
child3: power-controller@12341000 {
|
|
compatible = "foo,power-controller";
|
|
reg = <0x12341000 0x1000>;
|
|
power-domains = <&parent3>;
|
|
#power-domain-cells = <0>;
|
|
domain-idle-states = <&DOMAIN_PWR_DN>;
|
|
};
|
|
|
|
DOMAIN_RET: state@0 {
|
|
compatible = "domain-idle-state";
|
|
reg = <0x0 0x0>;
|
|
entry-latency-us = <1000>;
|
|
exit-latency-us = <2000>;
|
|
min-residency-us = <10000>;
|
|
};
|
|
|
|
DOMAIN_PWR_DN: state@1 {
|
|
compatible = "domain-idle-state";
|
|
reg = <0x1 0x0>;
|
|
entry-latency-us = <5000>;
|
|
exit-latency-us = <8000>;
|
|
min-residency-us = <7000>;
|
|
};
|