1*8bab661aSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*8bab661aSEmmanuel Vadot%YAML 1.2 3*8bab661aSEmmanuel Vadot--- 4*8bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/cpufreq/apple,cluster-cpufreq.yaml# 5*8bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*8bab661aSEmmanuel Vadot 7*8bab661aSEmmanuel Vadottitle: Apple SoC cluster cpufreq device 8*8bab661aSEmmanuel Vadot 9*8bab661aSEmmanuel Vadotmaintainers: 10*8bab661aSEmmanuel Vadot - Hector Martin <marcan@marcan.st> 11*8bab661aSEmmanuel Vadot 12*8bab661aSEmmanuel Vadotdescription: | 13*8bab661aSEmmanuel Vadot Apple SoCs (e.g. M1) have a per-cpu-cluster DVFS controller that is part of 14*8bab661aSEmmanuel Vadot the cluster management register block. This binding uses the standard 15*8bab661aSEmmanuel Vadot operating-points-v2 table to define the CPU performance states, with the 16*8bab661aSEmmanuel Vadot opp-level property specifying the hardware p-state index for that level. 17*8bab661aSEmmanuel Vadot 18*8bab661aSEmmanuel Vadotproperties: 19*8bab661aSEmmanuel Vadot compatible: 20*8bab661aSEmmanuel Vadot oneOf: 21*8bab661aSEmmanuel Vadot - items: 22*8bab661aSEmmanuel Vadot - enum: 23*8bab661aSEmmanuel Vadot - apple,t8103-cluster-cpufreq 24*8bab661aSEmmanuel Vadot - apple,t8112-cluster-cpufreq 25*8bab661aSEmmanuel Vadot - const: apple,cluster-cpufreq 26*8bab661aSEmmanuel Vadot - items: 27*8bab661aSEmmanuel Vadot - const: apple,t6000-cluster-cpufreq 28*8bab661aSEmmanuel Vadot - const: apple,t8103-cluster-cpufreq 29*8bab661aSEmmanuel Vadot - const: apple,cluster-cpufreq 30*8bab661aSEmmanuel Vadot 31*8bab661aSEmmanuel Vadot reg: 32*8bab661aSEmmanuel Vadot maxItems: 1 33*8bab661aSEmmanuel Vadot 34*8bab661aSEmmanuel Vadot '#performance-domain-cells': 35*8bab661aSEmmanuel Vadot const: 0 36*8bab661aSEmmanuel Vadot 37*8bab661aSEmmanuel Vadotrequired: 38*8bab661aSEmmanuel Vadot - compatible 39*8bab661aSEmmanuel Vadot - reg 40*8bab661aSEmmanuel Vadot - '#performance-domain-cells' 41*8bab661aSEmmanuel Vadot 42*8bab661aSEmmanuel VadotadditionalProperties: false 43*8bab661aSEmmanuel Vadot 44*8bab661aSEmmanuel Vadotexamples: 45*8bab661aSEmmanuel Vadot - | 46*8bab661aSEmmanuel Vadot // This example shows a single CPU per domain and 2 domains, 47*8bab661aSEmmanuel Vadot // with two p-states per domain. 48*8bab661aSEmmanuel Vadot // Shipping hardware has 2-4 CPUs per domain and 2-6 domains. 49*8bab661aSEmmanuel Vadot cpus { 50*8bab661aSEmmanuel Vadot #address-cells = <2>; 51*8bab661aSEmmanuel Vadot #size-cells = <0>; 52*8bab661aSEmmanuel Vadot 53*8bab661aSEmmanuel Vadot cpu@0 { 54*8bab661aSEmmanuel Vadot compatible = "apple,icestorm"; 55*8bab661aSEmmanuel Vadot device_type = "cpu"; 56*8bab661aSEmmanuel Vadot reg = <0x0 0x0>; 57*8bab661aSEmmanuel Vadot operating-points-v2 = <&ecluster_opp>; 58*8bab661aSEmmanuel Vadot performance-domains = <&cpufreq_e>; 59*8bab661aSEmmanuel Vadot }; 60*8bab661aSEmmanuel Vadot 61*8bab661aSEmmanuel Vadot cpu@10100 { 62*8bab661aSEmmanuel Vadot compatible = "apple,firestorm"; 63*8bab661aSEmmanuel Vadot device_type = "cpu"; 64*8bab661aSEmmanuel Vadot reg = <0x0 0x10100>; 65*8bab661aSEmmanuel Vadot operating-points-v2 = <&pcluster_opp>; 66*8bab661aSEmmanuel Vadot performance-domains = <&cpufreq_p>; 67*8bab661aSEmmanuel Vadot }; 68*8bab661aSEmmanuel Vadot }; 69*8bab661aSEmmanuel Vadot 70*8bab661aSEmmanuel Vadot ecluster_opp: opp-table-0 { 71*8bab661aSEmmanuel Vadot compatible = "operating-points-v2"; 72*8bab661aSEmmanuel Vadot opp-shared; 73*8bab661aSEmmanuel Vadot 74*8bab661aSEmmanuel Vadot opp01 { 75*8bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <600000000>; 76*8bab661aSEmmanuel Vadot opp-level = <1>; 77*8bab661aSEmmanuel Vadot clock-latency-ns = <7500>; 78*8bab661aSEmmanuel Vadot }; 79*8bab661aSEmmanuel Vadot opp02 { 80*8bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <972000000>; 81*8bab661aSEmmanuel Vadot opp-level = <2>; 82*8bab661aSEmmanuel Vadot clock-latency-ns = <22000>; 83*8bab661aSEmmanuel Vadot }; 84*8bab661aSEmmanuel Vadot }; 85*8bab661aSEmmanuel Vadot 86*8bab661aSEmmanuel Vadot pcluster_opp: opp-table-1 { 87*8bab661aSEmmanuel Vadot compatible = "operating-points-v2"; 88*8bab661aSEmmanuel Vadot opp-shared; 89*8bab661aSEmmanuel Vadot 90*8bab661aSEmmanuel Vadot opp01 { 91*8bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <600000000>; 92*8bab661aSEmmanuel Vadot opp-level = <1>; 93*8bab661aSEmmanuel Vadot clock-latency-ns = <8000>; 94*8bab661aSEmmanuel Vadot }; 95*8bab661aSEmmanuel Vadot opp02 { 96*8bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <828000000>; 97*8bab661aSEmmanuel Vadot opp-level = <2>; 98*8bab661aSEmmanuel Vadot clock-latency-ns = <19000>; 99*8bab661aSEmmanuel Vadot }; 100*8bab661aSEmmanuel Vadot }; 101*8bab661aSEmmanuel Vadot 102*8bab661aSEmmanuel Vadot soc { 103*8bab661aSEmmanuel Vadot #address-cells = <2>; 104*8bab661aSEmmanuel Vadot #size-cells = <2>; 105*8bab661aSEmmanuel Vadot 106*8bab661aSEmmanuel Vadot cpufreq_e: performance-controller@210e20000 { 107*8bab661aSEmmanuel Vadot compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 108*8bab661aSEmmanuel Vadot reg = <0x2 0x10e20000 0 0x1000>; 109*8bab661aSEmmanuel Vadot #performance-domain-cells = <0>; 110*8bab661aSEmmanuel Vadot }; 111*8bab661aSEmmanuel Vadot 112*8bab661aSEmmanuel Vadot cpufreq_p: performance-controller@211e20000 { 113*8bab661aSEmmanuel Vadot compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 114*8bab661aSEmmanuel Vadot reg = <0x2 0x11e20000 0 0x1000>; 115*8bab661aSEmmanuel Vadot #performance-domain-cells = <0>; 116*8bab661aSEmmanuel Vadot }; 117*8bab661aSEmmanuel Vadot }; 118