1     CPU frequency and voltage scaling code in the Linux(TM) kernel
2
3
4		         L i n u x    C P U F r e q
5
6			     U S E R   G U I D E
7
8
9		    Dominik Brodowski  <linux@brodo.de>
10
11
12
13   Clock scaling allows you to change the clock speed of the CPUs on the
14    fly. This is a nice method to save battery power, because the lower
15            the clock speed, the less power the CPU consumes.
16
17
18Contents:
19---------
201. Supported Architectures and Processors
211.1 ARM
221.2 x86
231.3 sparc64
241.4 ppc
251.5 SuperH
261.6 Blackfin
27
282. "Policy" / "Governor"?
292.1 Policy
302.2 Governor
31
323. How to change the CPU cpufreq policy and/or speed
333.1 Preferred interface: sysfs
34
35
36
371. Supported Architectures and Processors
38=========================================
39
401.1 ARM
41-------
42
43The following ARM processors are supported by cpufreq:
44
45ARM Integrator
46ARM-SA1100
47ARM-SA1110
48Intel PXA
49
50
511.2 x86
52-------
53
54The following processors for the x86 architecture are supported by cpufreq:
55
56AMD Elan - SC400, SC410
57AMD mobile K6-2+
58AMD mobile K6-3+
59AMD mobile Duron
60AMD mobile Athlon
61AMD Opteron
62AMD Athlon 64
63Cyrix Media GXm
64Intel mobile PIII and Intel mobile PIII-M on certain chipsets
65Intel Pentium 4, Intel Xeon
66Intel Pentium M (Centrino)
67National Semiconductors Geode GX
68Transmeta Crusoe
69Transmeta Efficeon
70VIA Cyrix 3 / C3
71various processors on some ACPI 2.0-compatible systems [*]
72
73[*] Only if "ACPI Processor Performance States" are available
74to the ACPI<->BIOS interface.
75
76
771.3 sparc64
78-----------
79
80The following processors for the sparc64 architecture are supported by
81cpufreq:
82
83UltraSPARC-III
84
85
861.4 ppc
87-------
88
89Several "PowerBook" and "iBook2" notebooks are supported.
90
91
921.5 SuperH
93----------
94
95All SuperH processors supporting rate rounding through the clock
96framework are supported by cpufreq.
97
981.6 Blackfin
99------------
100
101The following Blackfin processors are supported by cpufreq:
102
103BF522, BF523, BF524, BF525, BF526, BF527, Rev 0.1 or higher
104BF531, BF532, BF533, Rev 0.3 or higher
105BF534, BF536, BF537, Rev 0.2 or higher
106BF561, Rev 0.3 or higher
107BF542, BF544, BF547, BF548, BF549, Rev 0.1 or higher
108
109
1102. "Policy" / "Governor" ?
111==========================
112
113Some CPU frequency scaling-capable processor switch between various
114frequencies and operating voltages "on the fly" without any kernel or
115user involvement. This guarantees very fast switching to a frequency
116which is high enough to serve the user's needs, but low enough to save
117power.
118
119
1202.1 Policy
121----------
122
123On these systems, all you can do is select the lower and upper
124frequency limit as well as whether you want more aggressive
125power-saving or more instantly available processing power.
126
127
1282.2 Governor
129------------
130
131On all other cpufreq implementations, these boundaries still need to
132be set. Then, a "governor" must be selected. Such a "governor" decides
133what speed the processor shall run within the boundaries. One such
134"governor" is the "userspace" governor. This one allows the user - or
135a yet-to-implement userspace program - to decide what specific speed
136the processor shall run at.
137
138
1393. How to change the CPU cpufreq policy and/or speed
140====================================================
141
1423.1 Preferred Interface: sysfs
143------------------------------
144
145The preferred interface is located in the sysfs filesystem. If you
146mounted it at /sys, the cpufreq interface is located in a subdirectory
147"cpufreq" within the cpu-device directory
148(e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
149
150cpuinfo_min_freq :		this file shows the minimum operating
151				frequency the processor can run at(in kHz)
152cpuinfo_max_freq :		this file shows the maximum operating
153				frequency the processor can run at(in kHz)
154cpuinfo_transition_latency	The time it takes on this CPU to
155				switch between two frequencies in nano
156				seconds. If unknown or known to be
157				that high that the driver does not
158				work with the ondemand governor, -1
159				(CPUFREQ_ETERNAL) will be returned.
160				Using this information can be useful
161				to choose an appropriate polling
162				frequency for a kernel governor or
163				userspace daemon. Make sure to not
164				switch the frequency too often
165				resulting in performance loss.
166scaling_driver :		this file shows what cpufreq driver is
167				used to set the frequency on this CPU
168
169scaling_available_governors :	this file shows the CPUfreq governors
170				available in this kernel. You can see the
171				currently activated governor in
172
173scaling_governor,		and by "echoing" the name of another
174				governor you can change it. Please note
175				that some governors won't load - they only
176				work on some specific architectures or
177				processors.
178
179cpuinfo_cur_freq :		Current frequency of the CPU as obtained from
180				the hardware, in KHz. This is the frequency
181				the CPU actually runs at.
182
183scaling_available_frequencies : List of available frequencies, in KHz.
184
185scaling_min_freq and
186scaling_max_freq		show the current "policy limits" (in
187				kHz). By echoing new values into these
188				files, you can change these limits.
189				NOTE: when setting a policy you need to
190				first set scaling_max_freq, then
191				scaling_min_freq.
192
193affected_cpus :			List of CPUs that require software coordination
194				of frequency.
195
196related_cpus :			List of CPUs that need some sort of frequency
197				coordination, whether software or hardware.
198
199scaling_driver :		Hardware driver for cpufreq.
200
201scaling_cur_freq :		Current frequency of the CPU as determined by
202				the governor and cpufreq core, in KHz. This is
203				the frequency the kernel thinks the CPU runs
204				at.
205
206bios_limit :			If the BIOS tells the OS to limit a CPU to
207				lower frequencies, the user can read out the
208				maximum available frequency from this file.
209				This typically can happen through (often not
210				intended) BIOS settings, restrictions
211				triggered through a service processor or other
212				BIOS/HW based implementations.
213				This does not cover thermal ACPI limitations
214				which can be detected through the generic
215				thermal driver.
216
217If you have selected the "userspace" governor which allows you to
218set the CPU operating frequency to a specific value, you can read out
219the current frequency in
220
221scaling_setspeed.		By "echoing" a new frequency into this
222				you can change the speed of the CPU,
223				but only within the limits of
224				scaling_min_freq and scaling_max_freq.
225