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