162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dvfs/performance-domain.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Generic performance domains 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Sudeep Holla <sudeep.holla@arm.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: |+ 1362306a36Sopenharmony_ci This binding is intended for performance management of groups of devices or 1462306a36Sopenharmony_ci CPUs that run in the same performance domain. Performance domains must not 1562306a36Sopenharmony_ci be confused with power domains. A performance domain is defined by a set 1662306a36Sopenharmony_ci of devices that always have to run at the same performance level. For a given 1762306a36Sopenharmony_ci performance domain, there is a single point of control that affects all the 1862306a36Sopenharmony_ci devices in the domain, making it impossible to set the performance level of 1962306a36Sopenharmony_ci an individual device in the domain independently from other devices in 2062306a36Sopenharmony_ci that domain. For example, a set of CPUs that share a voltage domain, and 2162306a36Sopenharmony_ci have a common frequency control, is said to be in the same performance 2262306a36Sopenharmony_ci domain. 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci This device tree binding can be used to bind performance domain consumer 2562306a36Sopenharmony_ci devices with their performance domains provided by performance domain 2662306a36Sopenharmony_ci providers. A performance domain provider can be represented by any node in 2762306a36Sopenharmony_ci the device tree and can provide one or more performance domains. A consumer 2862306a36Sopenharmony_ci node can refer to the provider by a phandle and a set of phandle arguments 2962306a36Sopenharmony_ci (so called performance domain specifiers) of length specified by the 3062306a36Sopenharmony_ci \#performance-domain-cells property in the performance domain provider node. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciselect: true 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciproperties: 3562306a36Sopenharmony_ci "#performance-domain-cells": 3662306a36Sopenharmony_ci description: 3762306a36Sopenharmony_ci Number of cells in a performance domain specifier. Typically 0 for nodes 3862306a36Sopenharmony_ci representing a single performance domain and 1 for nodes providing 3962306a36Sopenharmony_ci multiple performance domains (e.g. performance controllers), but can be 4062306a36Sopenharmony_ci any value as specified by device tree binding documentation of particular 4162306a36Sopenharmony_ci provider. 4262306a36Sopenharmony_ci enum: [ 0, 1 ] 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci performance-domains: 4562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 4662306a36Sopenharmony_ci description: 4762306a36Sopenharmony_ci A phandle and performance domain specifier as defined by bindings of the 4862306a36Sopenharmony_ci performance controller/provider specified by phandle. 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciadditionalProperties: true 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciexamples: 5362306a36Sopenharmony_ci - | 5462306a36Sopenharmony_ci soc { 5562306a36Sopenharmony_ci #address-cells = <2>; 5662306a36Sopenharmony_ci #size-cells = <2>; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci performance: performance-controller@11bc00 { 5962306a36Sopenharmony_ci compatible = "mediatek,cpufreq-hw"; 6062306a36Sopenharmony_ci reg = <0 0x0011bc10 0 0x120>, <0 0x0011bd30 0 0x120>; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci #performance-domain-cells = <1>; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci // The node above defines a performance controller that is a performance 6762306a36Sopenharmony_ci // domain provider and expects one cell as its phandle argument. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci cpus { 7062306a36Sopenharmony_ci #address-cells = <2>; 7162306a36Sopenharmony_ci #size-cells = <0>; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci cpu@0 { 7462306a36Sopenharmony_ci device_type = "cpu"; 7562306a36Sopenharmony_ci compatible = "arm,cortex-a57"; 7662306a36Sopenharmony_ci reg = <0x0 0x0>; 7762306a36Sopenharmony_ci performance-domains = <&performance 1>; 7862306a36Sopenharmony_ci }; 7962306a36Sopenharmony_ci }; 80