blob: 555c8cf3650a5e6bb6523b9bdc69c75b2bc94159 [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
26
272. "Policy" / "Governor"?
282.1 Policy
292.2 Governor
30
313. How to change the CPU cpufreq policy and/or speed
323.1 Preferred interface: sysfs
333.2 Deprecated interfaces
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
48
49
501.2 x86
51-------
52
53The following processors for the x86 architecture are supported by cpufreq:
54
55AMD Elan - SC400, SC410
56AMD mobile K6-2+
57AMD mobile K6-3+
58AMD mobile Duron
59AMD mobile Athlon
60AMD Opteron
61AMD Athlon 64
62Cyrix Media GXm
63Intel mobile PIII and Intel mobile PIII-M on certain chipsets
64Intel Pentium 4, Intel Xeon
65Intel Pentium M (Centrino)
66National Semiconductors Geode GX
67Transmeta Crusoe
68Transmeta Efficeon
69VIA Cyrix 3 / C3
70various processors on some ACPI 2.0-compatible systems [*]
71
72[*] Only if "ACPI Processor Performance States" are available
73to the ACPI<->BIOS interface.
74
75
761.3 sparc64
77-----------
78
79The following processors for the sparc64 architecture are supported by
80cpufreq:
81
82UltraSPARC-III
83
84
851.4 ppc
86-------
87
88Several "PowerBook" and "iBook2" notebooks are supported.
89
90
911.5 SuperH
92----------
93
94The following SuperH processors are supported by cpufreq:
95
96SH-3
97SH-4
98
99
1002. "Policy" / "Governor" ?
101==========================
102
103Some CPU frequency scaling-capable processor switch between various
104frequencies and operating voltages "on the fly" without any kernel or
105user involvement. This guarantees very fast switching to a frequency
106which is high enough to serve the user's needs, but low enough to save
107power.
108
109
1102.1 Policy
111----------
112
113On these systems, all you can do is select the lower and upper
114frequency limit as well as whether you want more aggressive
115power-saving or more instantly available processing power.
116
117
1182.2 Governor
119------------
120
121On all other cpufreq implementations, these boundaries still need to
122be set. Then, a "governor" must be selected. Such a "governor" decides
123what speed the processor shall run within the boundaries. One such
124"governor" is the "userspace" governor. This one allows the user - or
125a yet-to-implement userspace program - to decide what specific speed
126the processor shall run at.
127
128
1293. How to change the CPU cpufreq policy and/or speed
130====================================================
131
1323.1 Preferred Interface: sysfs
133------------------------------
134
135The preferred interface is located in the sysfs filesystem. If you
136mounted it at /sys, the cpufreq interface is located in a subdirectory
137"cpufreq" within the cpu-device directory
138(e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
139
140cpuinfo_min_freq : this file shows the minimum operating
141 frequency the processor can run at(in kHz)
142cpuinfo_max_freq : this file shows the maximum operating
143 frequency the processor can run at(in kHz)
144scaling_driver : this file shows what cpufreq driver is
145 used to set the frequency on this CPU
146
147scaling_available_governors : this file shows the CPUfreq governors
148 available in this kernel. You can see the
149 currently activated governor in
150
151scaling_governor, and by "echoing" the name of another
152 governor you can change it. Please note
153 that some governors won't load - they only
154 work on some specific architectures or
155 processors.
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200156scaling_min_freq and
Linus Torvalds1da177e2005-04-16 15:20:36 -0700157scaling_max_freq show the current "policy limits" (in
158 kHz). By echoing new values into these
159 files, you can change these limits.
Mattia Dongili9c9a43e2006-07-05 23:12:20 +0200160 NOTE: when setting a policy you need to
161 first set scaling_max_freq, then
162 scaling_min_freq.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700163
164
165If you have selected the "userspace" governor which allows you to
166set the CPU operating frequency to a specific value, you can read out
167the current frequency in
168
169scaling_setspeed. By "echoing" a new frequency into this
170 you can change the speed of the CPU,
171 but only within the limits of
172 scaling_min_freq and scaling_max_freq.
173
174
1753.2 Deprecated Interfaces
176-------------------------
177
178Depending on your kernel configuration, you might find the following
179cpufreq-related files:
180/proc/cpufreq
181/proc/sys/cpu/*/speed
182/proc/sys/cpu/*/speed-min
183/proc/sys/cpu/*/speed-max
184
185These are files for deprecated interfaces to cpufreq, which offer far
186less functionality. Because of this, these interfaces aren't described
187here.
188