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