Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[linux-2.6] / Documentation / cpu-freq / user-guide.txt
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
18 Contents:
19 ---------
20 1. Supported Architectures and Processors
21 1.1 ARM
22 1.2 x86
23 1.3 sparc64
24 1.4 ppc
25 1.5 SuperH
26
27 2. "Policy" / "Governor"?
28 2.1 Policy
29 2.2 Governor
30
31 3. How to change the CPU cpufreq policy and/or speed
32 3.1 Preferred interface: sysfs
33 3.2 Deprecated interfaces
34
35
36
37 1. Supported Architectures and Processors
38 =========================================
39
40 1.1 ARM
41 -------
42
43 The following ARM processors are supported by cpufreq:
44
45 ARM Integrator
46 ARM-SA1100
47 ARM-SA1110
48
49
50 1.2 x86
51 -------
52
53 The following processors for the x86 architecture are supported by cpufreq:
54
55 AMD Elan - SC400, SC410
56 AMD mobile K6-2+
57 AMD mobile K6-3+
58 AMD mobile Duron
59 AMD mobile Athlon
60 AMD Opteron
61 AMD Athlon 64
62 Cyrix Media GXm
63 Intel mobile PIII and Intel mobile PIII-M on certain chipsets
64 Intel Pentium 4, Intel Xeon
65 Intel Pentium M (Centrino)
66 National Semiconductors Geode GX
67 Transmeta Crusoe
68 Transmeta Efficeon
69 VIA Cyrix 3 / C3
70 various processors on some ACPI 2.0-compatible systems [*]
71
72 [*] Only if "ACPI Processor Performance States" are available
73 to the ACPI<->BIOS interface.
74
75
76 1.3 sparc64
77 -----------
78
79 The following processors for the sparc64 architecture are supported by
80 cpufreq:
81
82 UltraSPARC-III
83
84
85 1.4 ppc
86 -------
87
88 Several "PowerBook" and "iBook2" notebooks are supported.
89
90
91 1.5 SuperH
92 ----------
93
94 The following SuperH processors are supported by cpufreq:
95
96 SH-3
97 SH-4
98
99
100 2. "Policy" / "Governor" ?
101 ==========================
102
103 Some CPU frequency scaling-capable processor switch between various
104 frequencies and operating voltages "on the fly" without any kernel or
105 user involvement. This guarantees very fast switching to a frequency
106 which is high enough to serve the user's needs, but low enough to save
107 power.
108
109
110 2.1 Policy
111 ----------
112
113 On these systems, all you can do is select the lower and upper
114 frequency limit as well as whether you want more aggressive
115 power-saving or more instantly available processing power.
116
117
118 2.2 Governor
119 ------------
120
121 On all other cpufreq implementations, these boundaries still need to
122 be set. Then, a "governor" must be selected. Such a "governor" decides
123 what speed the processor shall run within the boundaries. One such
124 "governor" is the "userspace" governor. This one allows the user - or
125 a yet-to-implement userspace program - to decide what specific speed
126 the processor shall run at.
127
128
129 3. How to change the CPU cpufreq policy and/or speed
130 ====================================================
131
132 3.1 Preferred Interface: sysfs
133 ------------------------------
134
135 The preferred interface is located in the sysfs filesystem. If you
136 mounted 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
140 cpuinfo_min_freq :              this file shows the minimum operating
141                                 frequency the processor can run at(in kHz) 
142 cpuinfo_max_freq :              this file shows the maximum operating
143                                 frequency the processor can run at(in kHz) 
144 scaling_driver :                this file shows what cpufreq driver is
145                                 used to set the frequency on this CPU
146
147 scaling_available_governors :   this file shows the CPUfreq governors
148                                 available in this kernel. You can see the
149                                 currently activated governor in
150
151 scaling_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.
156 scaling_min_freq and
157 scaling_max_freq                show the current "policy limits" (in
158                                 kHz). By echoing new values into these
159                                 files, you can change these limits.
160                                 NOTE: when setting a policy you need to
161                                 first set scaling_max_freq, then
162                                 scaling_min_freq.
163
164
165 If you have selected the "userspace" governor which allows you to
166 set the CPU operating frequency to a specific value, you can read out
167 the current frequency in
168
169 scaling_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
175 3.2 Deprecated Interfaces
176 -------------------------
177
178 Depending on your kernel configuration, you might find the following 
179 cpufreq-related files:
180 /proc/cpufreq
181 /proc/sys/cpu/*/speed
182 /proc/sys/cpu/*/speed-min
183 /proc/sys/cpu/*/speed-max
184
185 These are files for deprecated interfaces to cpufreq, which offer far
186 less functionality. Because of this, these interfaces aren't described
187 here.
188