blob: 5d5f5fadd1c2c3d278b791735aed625fa39b82f9 [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
179cpuinfo_cur_freq : Current speed of the CPU, in KHz.
180
181scaling_available_frequencies : List of available frequencies, in KHz.
182
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200183scaling_min_freq and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700184scaling_max_freq show the current "policy limits" (in
185 kHz). By echoing new values into these
186 files, you can change these limits.
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200187 NOTE: when setting a policy you need to
188 first set scaling_max_freq, then
189 scaling_min_freq.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700190
Darrick J. Wong605400a2008-04-18 13:31:13 -0700191affected_cpus : List of CPUs that require software coordination
192 of frequency.
193
194related_cpus : List of CPUs that need some sort of frequency
195 coordination, whether software or hardware.
196
197scaling_driver : Hardware driver for cpufreq.
198
199scaling_cur_freq : Current frequency of the CPU, in KHz.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700200
201If you have selected the "userspace" governor which allows you to
202set the CPU operating frequency to a specific value, you can read out
203the current frequency in
204
205scaling_setspeed. By "echoing" a new frequency into this
206 you can change the speed of the CPU,
207 but only within the limits of
208 scaling_min_freq and scaling_max_freq.