12131505cSEmmanuel VadotQualcomm Technologies, Inc. CPUFREQ Bindings 22131505cSEmmanuel Vadot 32131505cSEmmanuel VadotCPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 42131505cSEmmanuel VadotSoCs to manage frequency in hardware. It is capable of controlling frequency 52131505cSEmmanuel Vadotfor multiple clusters. 62131505cSEmmanuel Vadot 72131505cSEmmanuel VadotProperties: 82131505cSEmmanuel Vadot- compatible 92131505cSEmmanuel Vadot Usage: required 102131505cSEmmanuel Vadot Value type: <string> 11e7ffa3b5SEmmanuel Vadot Definition: must be "qcom,cpufreq-hw" or "qcom,cpufreq-epss". 122131505cSEmmanuel Vadot 132131505cSEmmanuel Vadot- clocks 142131505cSEmmanuel Vadot Usage: required 152131505cSEmmanuel Vadot Value type: <phandle> From common clock binding. 162131505cSEmmanuel Vadot Definition: clock handle for XO clock and GPLL0 clock. 172131505cSEmmanuel Vadot 182131505cSEmmanuel Vadot- clock-names 192131505cSEmmanuel Vadot Usage: required 202131505cSEmmanuel Vadot Value type: <string> From common clock binding. 212131505cSEmmanuel Vadot Definition: must be "xo", "alternate". 222131505cSEmmanuel Vadot 232131505cSEmmanuel Vadot- reg 242131505cSEmmanuel Vadot Usage: required 252131505cSEmmanuel Vadot Value type: <prop-encoded-array> 262131505cSEmmanuel Vadot Definition: Addresses and sizes for the memory of the HW bases in 272131505cSEmmanuel Vadot each frequency domain. 282131505cSEmmanuel Vadot- reg-names 292131505cSEmmanuel Vadot Usage: Optional 302131505cSEmmanuel Vadot Value type: <string> 312131505cSEmmanuel Vadot Definition: Frequency domain name i.e. 322131505cSEmmanuel Vadot "freq-domain0", "freq-domain1". 332131505cSEmmanuel Vadot 342131505cSEmmanuel Vadot- #freq-domain-cells: 352131505cSEmmanuel Vadot Usage: required. 362131505cSEmmanuel Vadot Definition: Number of cells in a freqency domain specifier. 372131505cSEmmanuel Vadot 382131505cSEmmanuel Vadot* Property qcom,freq-domain 392131505cSEmmanuel VadotDevices supporting freq-domain must set their "qcom,freq-domain" property with 402131505cSEmmanuel Vadotphandle to a cpufreq_hw followed by the Domain ID(0/1) in the CPU DT node. 412131505cSEmmanuel Vadot 422131505cSEmmanuel Vadot 432131505cSEmmanuel VadotExample: 442131505cSEmmanuel Vadot 452131505cSEmmanuel VadotExample 1: Dual-cluster, Quad-core per cluster. CPUs within a cluster switch 462131505cSEmmanuel VadotDCVS state together. 472131505cSEmmanuel Vadot 482131505cSEmmanuel Vadot/ { 492131505cSEmmanuel Vadot cpus { 502131505cSEmmanuel Vadot #address-cells = <2>; 512131505cSEmmanuel Vadot #size-cells = <0>; 522131505cSEmmanuel Vadot 532131505cSEmmanuel Vadot CPU0: cpu@0 { 542131505cSEmmanuel Vadot device_type = "cpu"; 552131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 562131505cSEmmanuel Vadot reg = <0x0 0x0>; 572131505cSEmmanuel Vadot enable-method = "psci"; 582131505cSEmmanuel Vadot next-level-cache = <&L2_0>; 592131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 602131505cSEmmanuel Vadot L2_0: l2-cache { 612131505cSEmmanuel Vadot compatible = "cache"; 622131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 632131505cSEmmanuel Vadot L3_0: l3-cache { 642131505cSEmmanuel Vadot compatible = "cache"; 652131505cSEmmanuel Vadot }; 662131505cSEmmanuel Vadot }; 672131505cSEmmanuel Vadot }; 682131505cSEmmanuel Vadot 692131505cSEmmanuel Vadot CPU1: cpu@100 { 702131505cSEmmanuel Vadot device_type = "cpu"; 712131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 722131505cSEmmanuel Vadot reg = <0x0 0x100>; 732131505cSEmmanuel Vadot enable-method = "psci"; 742131505cSEmmanuel Vadot next-level-cache = <&L2_100>; 752131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 762131505cSEmmanuel Vadot L2_100: l2-cache { 772131505cSEmmanuel Vadot compatible = "cache"; 782131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 792131505cSEmmanuel Vadot }; 802131505cSEmmanuel Vadot }; 812131505cSEmmanuel Vadot 822131505cSEmmanuel Vadot CPU2: cpu@200 { 832131505cSEmmanuel Vadot device_type = "cpu"; 842131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 852131505cSEmmanuel Vadot reg = <0x0 0x200>; 862131505cSEmmanuel Vadot enable-method = "psci"; 872131505cSEmmanuel Vadot next-level-cache = <&L2_200>; 882131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 892131505cSEmmanuel Vadot L2_200: l2-cache { 902131505cSEmmanuel Vadot compatible = "cache"; 912131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 922131505cSEmmanuel Vadot }; 932131505cSEmmanuel Vadot }; 942131505cSEmmanuel Vadot 952131505cSEmmanuel Vadot CPU3: cpu@300 { 962131505cSEmmanuel Vadot device_type = "cpu"; 972131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 982131505cSEmmanuel Vadot reg = <0x0 0x300>; 992131505cSEmmanuel Vadot enable-method = "psci"; 1002131505cSEmmanuel Vadot next-level-cache = <&L2_300>; 1012131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 0>; 1022131505cSEmmanuel Vadot L2_300: l2-cache { 1032131505cSEmmanuel Vadot compatible = "cache"; 1042131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 1052131505cSEmmanuel Vadot }; 1062131505cSEmmanuel Vadot }; 1072131505cSEmmanuel Vadot 1082131505cSEmmanuel Vadot CPU4: cpu@400 { 1092131505cSEmmanuel Vadot device_type = "cpu"; 1102131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 1112131505cSEmmanuel Vadot reg = <0x0 0x400>; 1122131505cSEmmanuel Vadot enable-method = "psci"; 1132131505cSEmmanuel Vadot next-level-cache = <&L2_400>; 1142131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 1152131505cSEmmanuel Vadot L2_400: l2-cache { 1162131505cSEmmanuel Vadot compatible = "cache"; 1172131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 1182131505cSEmmanuel Vadot }; 1192131505cSEmmanuel Vadot }; 1202131505cSEmmanuel Vadot 1212131505cSEmmanuel Vadot CPU5: cpu@500 { 1222131505cSEmmanuel Vadot device_type = "cpu"; 1232131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 1242131505cSEmmanuel Vadot reg = <0x0 0x500>; 1252131505cSEmmanuel Vadot enable-method = "psci"; 1262131505cSEmmanuel Vadot next-level-cache = <&L2_500>; 1272131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 1282131505cSEmmanuel Vadot L2_500: l2-cache { 1292131505cSEmmanuel Vadot compatible = "cache"; 1302131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 1312131505cSEmmanuel Vadot }; 1322131505cSEmmanuel Vadot }; 1332131505cSEmmanuel Vadot 1342131505cSEmmanuel Vadot CPU6: cpu@600 { 1352131505cSEmmanuel Vadot device_type = "cpu"; 1362131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 1372131505cSEmmanuel Vadot reg = <0x0 0x600>; 1382131505cSEmmanuel Vadot enable-method = "psci"; 1392131505cSEmmanuel Vadot next-level-cache = <&L2_600>; 1402131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 1412131505cSEmmanuel Vadot L2_600: l2-cache { 1422131505cSEmmanuel Vadot compatible = "cache"; 1432131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 1442131505cSEmmanuel Vadot }; 1452131505cSEmmanuel Vadot }; 1462131505cSEmmanuel Vadot 1472131505cSEmmanuel Vadot CPU7: cpu@700 { 1482131505cSEmmanuel Vadot device_type = "cpu"; 1492131505cSEmmanuel Vadot compatible = "qcom,kryo385"; 1502131505cSEmmanuel Vadot reg = <0x0 0x700>; 1512131505cSEmmanuel Vadot enable-method = "psci"; 1522131505cSEmmanuel Vadot next-level-cache = <&L2_700>; 1532131505cSEmmanuel Vadot qcom,freq-domain = <&cpufreq_hw 1>; 1542131505cSEmmanuel Vadot L2_700: l2-cache { 1552131505cSEmmanuel Vadot compatible = "cache"; 1562131505cSEmmanuel Vadot next-level-cache = <&L3_0>; 1572131505cSEmmanuel Vadot }; 1582131505cSEmmanuel Vadot }; 1592131505cSEmmanuel Vadot }; 1602131505cSEmmanuel Vadot 1612131505cSEmmanuel Vadot soc { 1622131505cSEmmanuel Vadot cpufreq_hw: cpufreq@17d43000 { 1632131505cSEmmanuel Vadot compatible = "qcom,cpufreq-hw"; 1642131505cSEmmanuel Vadot reg = <0x17d43000 0x1400>, <0x17d45800 0x1400>; 1652131505cSEmmanuel Vadot reg-names = "freq-domain0", "freq-domain1"; 1662131505cSEmmanuel Vadot 1672131505cSEmmanuel Vadot clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>; 1682131505cSEmmanuel Vadot clock-names = "xo", "alternate"; 1692131505cSEmmanuel Vadot 1702131505cSEmmanuel Vadot #freq-domain-cells = <1>; 1712131505cSEmmanuel Vadot }; 1722131505cSEmmanuel Vadot} 173