1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/cpufreq/cpufreq-qcom-hw.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Technologies, Inc. CPUFREQ 8 9maintainers: 10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 11 12description: | 13 14 CPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 15 SoCs to manage frequency in hardware. It is capable of controlling frequency 16 for multiple clusters. 17 18properties: 19 compatible: 20 oneOf: 21 - description: v1 of CPUFREQ HW 22 items: 23 - const: qcom,cpufreq-hw 24 25 - description: v2 of CPUFREQ HW (EPSS) 26 items: 27 - enum: 28 - qcom,sm8250-cpufreq-epss 29 - const: qcom,cpufreq-epss 30 31 reg: 32 minItems: 2 33 items: 34 - description: Frequency domain 0 register region 35 - description: Frequency domain 1 register region 36 - description: Frequency domain 2 register region 37 38 reg-names: 39 minItems: 2 40 items: 41 - const: freq-domain0 42 - const: freq-domain1 43 - const: freq-domain2 44 45 clocks: 46 items: 47 - description: XO Clock 48 - description: GPLL0 Clock 49 50 clock-names: 51 items: 52 - const: xo 53 - const: alternate 54 55 '#freq-domain-cells': 56 const: 1 57 58required: 59 - compatible 60 - reg 61 - clocks 62 - clock-names 63 - '#freq-domain-cells' 64 65additionalProperties: false 66 67examples: 68 - | 69 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 70 #include <dt-bindings/clock/qcom,rpmh.h> 71 72 // Example 1: Dual-cluster, Quad-core per cluster. CPUs within a cluster 73 // switch DCVS state together. 74 cpus { 75 #address-cells = <2>; 76 #size-cells = <0>; 77 78 CPU0: cpu@0 { 79 device_type = "cpu"; 80 compatible = "qcom,kryo385"; 81 reg = <0x0 0x0>; 82 enable-method = "psci"; 83 next-level-cache = <&L2_0>; 84 qcom,freq-domain = <&cpufreq_hw 0>; 85 L2_0: l2-cache { 86 compatible = "cache"; 87 next-level-cache = <&L3_0>; 88 L3_0: l3-cache { 89 compatible = "cache"; 90 }; 91 }; 92 }; 93 94 CPU1: cpu@100 { 95 device_type = "cpu"; 96 compatible = "qcom,kryo385"; 97 reg = <0x0 0x100>; 98 enable-method = "psci"; 99 next-level-cache = <&L2_100>; 100 qcom,freq-domain = <&cpufreq_hw 0>; 101 L2_100: l2-cache { 102 compatible = "cache"; 103 next-level-cache = <&L3_0>; 104 }; 105 }; 106 107 CPU2: cpu@200 { 108 device_type = "cpu"; 109 compatible = "qcom,kryo385"; 110 reg = <0x0 0x200>; 111 enable-method = "psci"; 112 next-level-cache = <&L2_200>; 113 qcom,freq-domain = <&cpufreq_hw 0>; 114 L2_200: l2-cache { 115 compatible = "cache"; 116 next-level-cache = <&L3_0>; 117 }; 118 }; 119 120 CPU3: cpu@300 { 121 device_type = "cpu"; 122 compatible = "qcom,kryo385"; 123 reg = <0x0 0x300>; 124 enable-method = "psci"; 125 next-level-cache = <&L2_300>; 126 qcom,freq-domain = <&cpufreq_hw 0>; 127 L2_300: l2-cache { 128 compatible = "cache"; 129 next-level-cache = <&L3_0>; 130 }; 131 }; 132 133 CPU4: cpu@400 { 134 device_type = "cpu"; 135 compatible = "qcom,kryo385"; 136 reg = <0x0 0x400>; 137 enable-method = "psci"; 138 next-level-cache = <&L2_400>; 139 qcom,freq-domain = <&cpufreq_hw 1>; 140 L2_400: l2-cache { 141 compatible = "cache"; 142 next-level-cache = <&L3_0>; 143 }; 144 }; 145 146 CPU5: cpu@500 { 147 device_type = "cpu"; 148 compatible = "qcom,kryo385"; 149 reg = <0x0 0x500>; 150 enable-method = "psci"; 151 next-level-cache = <&L2_500>; 152 qcom,freq-domain = <&cpufreq_hw 1>; 153 L2_500: l2-cache { 154 compatible = "cache"; 155 next-level-cache = <&L3_0>; 156 }; 157 }; 158 159 CPU6: cpu@600 { 160 device_type = "cpu"; 161 compatible = "qcom,kryo385"; 162 reg = <0x0 0x600>; 163 enable-method = "psci"; 164 next-level-cache = <&L2_600>; 165 qcom,freq-domain = <&cpufreq_hw 1>; 166 L2_600: l2-cache { 167 compatible = "cache"; 168 next-level-cache = <&L3_0>; 169 }; 170 }; 171 172 CPU7: cpu@700 { 173 device_type = "cpu"; 174 compatible = "qcom,kryo385"; 175 reg = <0x0 0x700>; 176 enable-method = "psci"; 177 next-level-cache = <&L2_700>; 178 qcom,freq-domain = <&cpufreq_hw 1>; 179 L2_700: l2-cache { 180 compatible = "cache"; 181 next-level-cache = <&L3_0>; 182 }; 183 }; 184 }; 185 186 soc { 187 #address-cells = <1>; 188 #size-cells = <1>; 189 190 cpufreq@17d43000 { 191 compatible = "qcom,cpufreq-hw"; 192 reg = <0x17d43000 0x1400>, <0x17d45800 0x1400>; 193 reg-names = "freq-domain0", "freq-domain1"; 194 195 clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>; 196 clock-names = "xo", "alternate"; 197 198 #freq-domain-cells = <1>; 199 }; 200 }; 201... 202