]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - Documentation/cpu-freq/user-guide.txt
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq
[linux-2.6-omap-h63xx.git] / 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 1.6 Blackfin
27
28 2. "Policy" / "Governor"?
29 2.1 Policy
30 2.2 Governor
31
32 3. How to change the CPU cpufreq policy and/or speed
33 3.1 Preferred interface: sysfs
34 3.2 Deprecated interfaces
35
36
37
38 1. Supported Architectures and Processors
39 =========================================
40
41 1.1 ARM
42 -------
43
44 The following ARM processors are supported by cpufreq:
45
46 ARM Integrator
47 ARM-SA1100
48 ARM-SA1110
49 Intel PXA
50
51
52 1.2 x86
53 -------
54
55 The following processors for the x86 architecture are supported by cpufreq:
56
57 AMD Elan - SC400, SC410
58 AMD mobile K6-2+
59 AMD mobile K6-3+
60 AMD mobile Duron
61 AMD mobile Athlon
62 AMD Opteron
63 AMD Athlon 64
64 Cyrix Media GXm
65 Intel mobile PIII and Intel mobile PIII-M on certain chipsets
66 Intel Pentium 4, Intel Xeon
67 Intel Pentium M (Centrino)
68 National Semiconductors Geode GX
69 Transmeta Crusoe
70 Transmeta Efficeon
71 VIA Cyrix 3 / C3
72 various processors on some ACPI 2.0-compatible systems [*]
73
74 [*] Only if "ACPI Processor Performance States" are available
75 to the ACPI<->BIOS interface.
76
77
78 1.3 sparc64
79 -----------
80
81 The following processors for the sparc64 architecture are supported by
82 cpufreq:
83
84 UltraSPARC-III
85
86
87 1.4 ppc
88 -------
89
90 Several "PowerBook" and "iBook2" notebooks are supported.
91
92
93 1.5 SuperH
94 ----------
95
96 The following SuperH processors are supported by cpufreq:
97
98 SH-3
99 SH-4
100
101 1.6 Blackfin
102 ------------
103
104 The following Blackfin processors are supported by cpufreq:
105
106 BF522, BF523, BF524, BF525, BF526, BF527, Rev 0.1 or higher
107 BF531, BF532, BF533, Rev 0.3 or higher
108 BF534, BF536, BF537, Rev 0.2 or higher
109 BF561, Rev 0.3 or higher
110 BF542, BF544, BF547, BF548, BF549, Rev 0.1 or higher
111
112
113 2. "Policy" / "Governor" ?
114 ==========================
115
116 Some CPU frequency scaling-capable processor switch between various
117 frequencies and operating voltages "on the fly" without any kernel or
118 user involvement. This guarantees very fast switching to a frequency
119 which is high enough to serve the user's needs, but low enough to save
120 power.
121
122
123 2.1 Policy
124 ----------
125
126 On these systems, all you can do is select the lower and upper
127 frequency limit as well as whether you want more aggressive
128 power-saving or more instantly available processing power.
129
130
131 2.2 Governor
132 ------------
133
134 On all other cpufreq implementations, these boundaries still need to
135 be set. Then, a "governor" must be selected. Such a "governor" decides
136 what speed the processor shall run within the boundaries. One such
137 "governor" is the "userspace" governor. This one allows the user - or
138 a yet-to-implement userspace program - to decide what specific speed
139 the processor shall run at.
140
141
142 3. How to change the CPU cpufreq policy and/or speed
143 ====================================================
144
145 3.1 Preferred Interface: sysfs
146 ------------------------------
147
148 The preferred interface is located in the sysfs filesystem. If you
149 mounted it at /sys, the cpufreq interface is located in a subdirectory
150 "cpufreq" within the cpu-device directory
151 (e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
152
153 cpuinfo_min_freq :              this file shows the minimum operating
154                                 frequency the processor can run at(in kHz) 
155 cpuinfo_max_freq :              this file shows the maximum operating
156                                 frequency the processor can run at(in kHz) 
157 scaling_driver :                this file shows what cpufreq driver is
158                                 used to set the frequency on this CPU
159
160 scaling_available_governors :   this file shows the CPUfreq governors
161                                 available in this kernel. You can see the
162                                 currently activated governor in
163
164 scaling_governor,               and by "echoing" the name of another
165                                 governor you can change it. Please note
166                                 that some governors won't load - they only
167                                 work on some specific architectures or
168                                 processors.
169
170 cpuinfo_cur_freq :              Current speed of the CPU, in KHz.
171
172 scaling_available_frequencies : List of available frequencies, in KHz.
173
174 scaling_min_freq and
175 scaling_max_freq                show the current "policy limits" (in
176                                 kHz). By echoing new values into these
177                                 files, you can change these limits.
178                                 NOTE: when setting a policy you need to
179                                 first set scaling_max_freq, then
180                                 scaling_min_freq.
181
182 affected_cpus :                 List of CPUs that require software coordination
183                                 of frequency.
184
185 related_cpus :                  List of CPUs that need some sort of frequency
186                                 coordination, whether software or hardware.
187
188 scaling_driver :                Hardware driver for cpufreq.
189
190 scaling_cur_freq :              Current frequency of the CPU, in KHz.
191
192 If you have selected the "userspace" governor which allows you to
193 set the CPU operating frequency to a specific value, you can read out
194 the current frequency in
195
196 scaling_setspeed.               By "echoing" a new frequency into this
197                                 you can change the speed of the CPU,
198                                 but only within the limits of
199                                 scaling_min_freq and scaling_max_freq.
200                                 
201
202 3.2 Deprecated Interfaces
203 -------------------------
204
205 Depending on your kernel configuration, you might find the following 
206 cpufreq-related files:
207 /proc/cpufreq
208 /proc/sys/cpu/*/speed
209 /proc/sys/cpu/*/speed-min
210 /proc/sys/cpu/*/speed-max
211
212 These are files for deprecated interfaces to cpufreq, which offer far
213 less functionality. Because of this, these interfaces aren't described
214 here.
215