blob: 04f6b32993e69ca4185a81bbaadb677aac5056e9 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001 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
Robin Getz121fe862008-10-17 01:36:43 +0800261.6 Blackfin
Linus Torvalds1da177e2005-04-16 15:20:36 -070027
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
Linus Torvalds1da177e2005-04-16 15:20:36 -070034
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
Russell King9e2697f2007-12-14 13:30:14 +000048Intel PXA
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
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
Paul Mundt8a655052008-12-17 15:06:54 +090095All SuperH processors supporting rate rounding through the clock
96framework are supported by cpufreq.
Linus Torvalds1da177e2005-04-16 15:20:36 -070097
Robin Getz121fe862008-10-17 01:36:43 +0800981.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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109
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)
Thomas Renningered129782009-02-04 01:17:41 +0100154cpuinfo_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.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700166scaling_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.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700178
Naga Chumbalkarda470db2009-06-29 19:53:41 +0000179cpuinfo_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.
Darrick J. Wong605400a2008-04-18 13:31:13 -0700182
183scaling_available_frequencies : List of available frequencies, in KHz.
184
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200185scaling_min_freq and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700186scaling_max_freq show the current "policy limits" (in
187 kHz). By echoing new values into these
188 files, you can change these limits.
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200189 NOTE: when setting a policy you need to
190 first set scaling_max_freq, then
191 scaling_min_freq.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192
Darrick J. Wong605400a2008-04-18 13:31:13 -0700193affected_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
Naga Chumbalkarda470db2009-06-29 19:53:41 +0000201scaling_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.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700205
Thomas Renningere2f74f32009-11-19 12:31:01 +0100206bios_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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700217If 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.