15956d97fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 25956d97fSEmmanuel Vadot%YAML 1.2 35956d97fSEmmanuel Vadot--- 45956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/dvfs/performance-domain.yaml# 55956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 65956d97fSEmmanuel Vadot 75956d97fSEmmanuel Vadottitle: Generic performance domains 85956d97fSEmmanuel Vadot 95956d97fSEmmanuel Vadotmaintainers: 105956d97fSEmmanuel Vadot - Sudeep Holla <sudeep.holla@arm.com> 115956d97fSEmmanuel Vadot 125956d97fSEmmanuel Vadotdescription: |+ 135956d97fSEmmanuel Vadot This binding is intended for performance management of groups of devices or 145956d97fSEmmanuel Vadot CPUs that run in the same performance domain. Performance domains must not 155956d97fSEmmanuel Vadot be confused with power domains. A performance domain is defined by a set 165956d97fSEmmanuel Vadot of devices that always have to run at the same performance level. For a given 175956d97fSEmmanuel Vadot performance domain, there is a single point of control that affects all the 185956d97fSEmmanuel Vadot devices in the domain, making it impossible to set the performance level of 195956d97fSEmmanuel Vadot an individual device in the domain independently from other devices in 205956d97fSEmmanuel Vadot that domain. For example, a set of CPUs that share a voltage domain, and 215956d97fSEmmanuel Vadot have a common frequency control, is said to be in the same performance 225956d97fSEmmanuel Vadot domain. 235956d97fSEmmanuel Vadot 245956d97fSEmmanuel Vadot This device tree binding can be used to bind performance domain consumer 255956d97fSEmmanuel Vadot devices with their performance domains provided by performance domain 265956d97fSEmmanuel Vadot providers. A performance domain provider can be represented by any node in 275956d97fSEmmanuel Vadot the device tree and can provide one or more performance domains. A consumer 285956d97fSEmmanuel Vadot node can refer to the provider by a phandle and a set of phandle arguments 295956d97fSEmmanuel Vadot (so called performance domain specifiers) of length specified by the 305956d97fSEmmanuel Vadot \#performance-domain-cells property in the performance domain provider node. 315956d97fSEmmanuel Vadot 325956d97fSEmmanuel Vadotselect: true 335956d97fSEmmanuel Vadot 345956d97fSEmmanuel Vadotproperties: 355956d97fSEmmanuel Vadot "#performance-domain-cells": 365956d97fSEmmanuel Vadot description: 375956d97fSEmmanuel Vadot Number of cells in a performance domain specifier. Typically 0 for nodes 385956d97fSEmmanuel Vadot representing a single performance domain and 1 for nodes providing 395956d97fSEmmanuel Vadot multiple performance domains (e.g. performance controllers), but can be 405956d97fSEmmanuel Vadot any value as specified by device tree binding documentation of particular 415956d97fSEmmanuel Vadot provider. 425956d97fSEmmanuel Vadot enum: [ 0, 1 ] 435956d97fSEmmanuel Vadot 445956d97fSEmmanuel Vadot performance-domains: 45*f126890aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 465956d97fSEmmanuel Vadot description: 475956d97fSEmmanuel Vadot A phandle and performance domain specifier as defined by bindings of the 485956d97fSEmmanuel Vadot performance controller/provider specified by phandle. 495956d97fSEmmanuel Vadot 505956d97fSEmmanuel VadotadditionalProperties: true 515956d97fSEmmanuel Vadot 525956d97fSEmmanuel Vadotexamples: 535956d97fSEmmanuel Vadot - | 54c9ccf3a3SEmmanuel Vadot soc { 55c9ccf3a3SEmmanuel Vadot #address-cells = <2>; 56c9ccf3a3SEmmanuel Vadot #size-cells = <2>; 57c9ccf3a3SEmmanuel Vadot 58c9ccf3a3SEmmanuel Vadot performance: performance-controller@11bc00 { 59c9ccf3a3SEmmanuel Vadot compatible = "mediatek,cpufreq-hw"; 60c9ccf3a3SEmmanuel Vadot reg = <0 0x0011bc10 0 0x120>, <0 0x0011bd30 0 0x120>; 61c9ccf3a3SEmmanuel Vadot 625956d97fSEmmanuel Vadot #performance-domain-cells = <1>; 635956d97fSEmmanuel Vadot }; 64c9ccf3a3SEmmanuel Vadot }; 655956d97fSEmmanuel Vadot 665956d97fSEmmanuel Vadot // The node above defines a performance controller that is a performance 675956d97fSEmmanuel Vadot // domain provider and expects one cell as its phandle argument. 685956d97fSEmmanuel Vadot 695956d97fSEmmanuel Vadot cpus { 705956d97fSEmmanuel Vadot #address-cells = <2>; 715956d97fSEmmanuel Vadot #size-cells = <0>; 725956d97fSEmmanuel Vadot 735956d97fSEmmanuel Vadot cpu@0 { 745956d97fSEmmanuel Vadot device_type = "cpu"; 755956d97fSEmmanuel Vadot compatible = "arm,cortex-a57"; 765956d97fSEmmanuel Vadot reg = <0x0 0x0>; 775956d97fSEmmanuel Vadot performance-domains = <&performance 1>; 785956d97fSEmmanuel Vadot }; 795956d97fSEmmanuel Vadot }; 80