xref: /src/sys/contrib/device-tree/Bindings/cpufreq/cpufreq-qcom-hw.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
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