1c66ec88fSEmmanuel VadotQualcomm Technologies, Inc. CPUFREQ Bindings 2c66ec88fSEmmanuel Vadot 3c66ec88fSEmmanuel VadotCPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 4c66ec88fSEmmanuel VadotSoCs to manage frequency in hardware. It is capable of controlling frequency 5c66ec88fSEmmanuel Vadotfor multiple clusters. 6c66ec88fSEmmanuel Vadot 7c66ec88fSEmmanuel VadotProperties: 8c66ec88fSEmmanuel Vadot- compatible 9c66ec88fSEmmanuel Vadot Usage: required 10c66ec88fSEmmanuel Vadot Value type: <string> 11*6be33864SEmmanuel Vadot Definition: must be "qcom,cpufreq-hw" or "qcom,cpufreq-epss". 12c66ec88fSEmmanuel Vadot 13c66ec88fSEmmanuel Vadot- clocks 14c66ec88fSEmmanuel Vadot Usage: required 15c66ec88fSEmmanuel Vadot Value type: <phandle> From common clock binding. 16c66ec88fSEmmanuel Vadot Definition: clock handle for XO clock and GPLL0 clock. 17c66ec88fSEmmanuel Vadot 18c66ec88fSEmmanuel Vadot- clock-names 19c66ec88fSEmmanuel Vadot Usage: required 20c66ec88fSEmmanuel Vadot Value type: <string> From common clock binding. 21c66ec88fSEmmanuel Vadot Definition: must be "xo", "alternate". 22c66ec88fSEmmanuel Vadot 23c66ec88fSEmmanuel Vadot- reg 24c66ec88fSEmmanuel Vadot Usage: required 25c66ec88fSEmmanuel Vadot Value type: <prop-encoded-array> 26c66ec88fSEmmanuel Vadot Definition: Addresses and sizes for the memory of the HW bases in 27c66ec88fSEmmanuel Vadot each frequency domain. 28c66ec88fSEmmanuel Vadot- reg-names 29c66ec88fSEmmanuel Vadot Usage: Optional 30c66ec88fSEmmanuel Vadot Value type: <string> 31c66ec88fSEmmanuel Vadot Definition: Frequency domain name i.e. 32c66ec88fSEmmanuel Vadot "freq-domain0", "freq-domain1". 33c66ec88fSEmmanuel Vadot 34c66ec88fSEmmanuel Vadot- #freq-domain-cells: 35c66ec88fSEmmanuel Vadot Usage: required. 36c66ec88fSEmmanuel Vadot Definition: Number of cells in a freqency domain specifier. 37c66ec88fSEmmanuel Vadot 38c66ec88fSEmmanuel Vadot* Property qcom,freq-domain 39c66ec88fSEmmanuel VadotDevices supporting freq-domain must set their "qcom,freq-domain" property with 40c66ec88fSEmmanuel Vadotphandle to a cpufreq_hw followed by the Domain ID(0/1) in the CPU DT node. 41c66ec88fSEmmanuel Vadot 42c66ec88fSEmmanuel Vadot 43c66ec88fSEmmanuel VadotExample: 44c66ec88fSEmmanuel Vadot 45c66ec88fSEmmanuel VadotExample 1: Dual-cluster, Quad-core per cluster. CPUs within a cluster switch 46c66ec88fSEmmanuel VadotDCVS state together. 47c66ec88fSEmmanuel Vadot 48c66ec88fSEmmanuel Vadot/ { 49c66ec88fSEmmanuel Vadot cpus { 50c66ec88fSEmmanuel Vadot #address-cells = <2>; 51c66ec88fSEmmanuel Vadot #size-cells = <0>; 52c66ec88fSEmmanuel Vadot 53c66ec88fSEmmanuel Vadot CPU0: cpu@0 { 54c66ec88fSEmmanuel Vadot device_type = "cpu"; 55c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 56c66ec88fSEmmanuel Vadot reg = <0x0 0x0>; 57c66ec88fSEmmanuel Vadot enable-method = "psci"; 58c66ec88fSEmmanuel Vadot next-level-cache = <&L2_0>; 59c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 60c66ec88fSEmmanuel Vadot L2_0: l2-cache { 61c66ec88fSEmmanuel Vadot compatible = "cache"; 62c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 63c66ec88fSEmmanuel Vadot L3_0: l3-cache { 64c66ec88fSEmmanuel Vadot compatible = "cache"; 65c66ec88fSEmmanuel Vadot }; 66c66ec88fSEmmanuel Vadot }; 67c66ec88fSEmmanuel Vadot }; 68c66ec88fSEmmanuel Vadot 69c66ec88fSEmmanuel Vadot CPU1: cpu@100 { 70c66ec88fSEmmanuel Vadot device_type = "cpu"; 71c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 72c66ec88fSEmmanuel Vadot reg = <0x0 0x100>; 73c66ec88fSEmmanuel Vadot enable-method = "psci"; 74c66ec88fSEmmanuel Vadot next-level-cache = <&L2_100>; 75c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 76c66ec88fSEmmanuel Vadot L2_100: l2-cache { 77c66ec88fSEmmanuel Vadot compatible = "cache"; 78c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 79c66ec88fSEmmanuel Vadot }; 80c66ec88fSEmmanuel Vadot }; 81c66ec88fSEmmanuel Vadot 82c66ec88fSEmmanuel Vadot CPU2: cpu@200 { 83c66ec88fSEmmanuel Vadot device_type = "cpu"; 84c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 85c66ec88fSEmmanuel Vadot reg = <0x0 0x200>; 86c66ec88fSEmmanuel Vadot enable-method = "psci"; 87c66ec88fSEmmanuel Vadot next-level-cache = <&L2_200>; 88c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 89c66ec88fSEmmanuel Vadot L2_200: l2-cache { 90c66ec88fSEmmanuel Vadot compatible = "cache"; 91c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 92c66ec88fSEmmanuel Vadot }; 93c66ec88fSEmmanuel Vadot }; 94c66ec88fSEmmanuel Vadot 95c66ec88fSEmmanuel Vadot CPU3: cpu@300 { 96c66ec88fSEmmanuel Vadot device_type = "cpu"; 97c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 98c66ec88fSEmmanuel Vadot reg = <0x0 0x300>; 99c66ec88fSEmmanuel Vadot enable-method = "psci"; 100c66ec88fSEmmanuel Vadot next-level-cache = <&L2_300>; 101c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 102c66ec88fSEmmanuel Vadot L2_300: l2-cache { 103c66ec88fSEmmanuel Vadot compatible = "cache"; 104c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 105c66ec88fSEmmanuel Vadot }; 106c66ec88fSEmmanuel Vadot }; 107c66ec88fSEmmanuel Vadot 108c66ec88fSEmmanuel Vadot CPU4: cpu@400 { 109c66ec88fSEmmanuel Vadot device_type = "cpu"; 110c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 111c66ec88fSEmmanuel Vadot reg = <0x0 0x400>; 112c66ec88fSEmmanuel Vadot enable-method = "psci"; 113c66ec88fSEmmanuel Vadot next-level-cache = <&L2_400>; 114c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 115c66ec88fSEmmanuel Vadot L2_400: l2-cache { 116c66ec88fSEmmanuel Vadot compatible = "cache"; 117c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 118c66ec88fSEmmanuel Vadot }; 119c66ec88fSEmmanuel Vadot }; 120c66ec88fSEmmanuel Vadot 121c66ec88fSEmmanuel Vadot CPU5: cpu@500 { 122c66ec88fSEmmanuel Vadot device_type = "cpu"; 123c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 124c66ec88fSEmmanuel Vadot reg = <0x0 0x500>; 125c66ec88fSEmmanuel Vadot enable-method = "psci"; 126c66ec88fSEmmanuel Vadot next-level-cache = <&L2_500>; 127c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 128c66ec88fSEmmanuel Vadot L2_500: l2-cache { 129c66ec88fSEmmanuel Vadot compatible = "cache"; 130c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 131c66ec88fSEmmanuel Vadot }; 132c66ec88fSEmmanuel Vadot }; 133c66ec88fSEmmanuel Vadot 134c66ec88fSEmmanuel Vadot CPU6: cpu@600 { 135c66ec88fSEmmanuel Vadot device_type = "cpu"; 136c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 137c66ec88fSEmmanuel Vadot reg = <0x0 0x600>; 138c66ec88fSEmmanuel Vadot enable-method = "psci"; 139c66ec88fSEmmanuel Vadot next-level-cache = <&L2_600>; 140c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 141c66ec88fSEmmanuel Vadot L2_600: l2-cache { 142c66ec88fSEmmanuel Vadot compatible = "cache"; 143c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 144c66ec88fSEmmanuel Vadot }; 145c66ec88fSEmmanuel Vadot }; 146c66ec88fSEmmanuel Vadot 147c66ec88fSEmmanuel Vadot CPU7: cpu@700 { 148c66ec88fSEmmanuel Vadot device_type = "cpu"; 149c66ec88fSEmmanuel Vadot compatible = "qcom,kryo385"; 150c66ec88fSEmmanuel Vadot reg = <0x0 0x700>; 151c66ec88fSEmmanuel Vadot enable-method = "psci"; 152c66ec88fSEmmanuel Vadot next-level-cache = <&L2_700>; 153c66ec88fSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 154c66ec88fSEmmanuel Vadot L2_700: l2-cache { 155c66ec88fSEmmanuel Vadot compatible = "cache"; 156c66ec88fSEmmanuel Vadot next-level-cache = <&L3_0>; 157c66ec88fSEmmanuel Vadot }; 158c66ec88fSEmmanuel Vadot }; 159c66ec88fSEmmanuel Vadot }; 160c66ec88fSEmmanuel Vadot 161c66ec88fSEmmanuel Vadot soc { 162c66ec88fSEmmanuel Vadot cpufreq_hw: cpufreq@17d43000 { 163c66ec88fSEmmanuel Vadot compatible = "qcom,cpufreq-hw"; 164c66ec88fSEmmanuel Vadot reg = <0x17d43000 0x1400>, <0x17d45800 0x1400>; 165c66ec88fSEmmanuel Vadot reg-names = "freq-domain0", "freq-domain1"; 166c66ec88fSEmmanuel Vadot 167c66ec88fSEmmanuel Vadot clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>; 168c66ec88fSEmmanuel Vadot clock-names = "xo", "alternate"; 169c66ec88fSEmmanuel Vadot 170c66ec88fSEmmanuel Vadot #freq-domain-cells = <1>; 171c66ec88fSEmmanuel Vadot }; 172c66ec88fSEmmanuel Vadot} 173