AT91: Added a generic way to setup AT91 serial ports in Kconfig
[linux-2.6/pdupreez.git] / Documentation / cpu-freq / user-guide.txt
blob6c442d8426b5928569918ebd149f4818c5657ab1
1      CPU frequency and voltage scaling code in the Linux(TM) kernel
4                          L i n u x    C P U F r e q
6                              U S E R   G U I D E
9                     Dominik Brodowski  <linux@brodo.de>
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.
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
27 2. "Policy" / "Governor"?
28 2.1 Policy
29 2.2 Governor
31 3. How to change the CPU cpufreq policy and/or speed
32 3.1 Preferred interface: sysfs
33 3.2 Deprecated interfaces
37 1. Supported Architectures and Processors
38 =========================================
40 1.1 ARM
41 -------
43 The following ARM processors are supported by cpufreq:
45 ARM Integrator
46 ARM-SA1100
47 ARM-SA1110
48 Intel PXA
51 1.2 x86
52 -------
54 The following processors for the x86 architecture are supported by cpufreq:
56 AMD Elan - SC400, SC410
57 AMD mobile K6-2+
58 AMD mobile K6-3+
59 AMD mobile Duron
60 AMD mobile Athlon
61 AMD Opteron
62 AMD Athlon 64
63 Cyrix Media GXm
64 Intel mobile PIII and Intel mobile PIII-M on certain chipsets
65 Intel Pentium 4, Intel Xeon
66 Intel Pentium M (Centrino)
67 National Semiconductors Geode GX
68 Transmeta Crusoe
69 Transmeta Efficeon
70 VIA Cyrix 3 / C3
71 various processors on some ACPI 2.0-compatible systems [*]
73 [*] Only if "ACPI Processor Performance States" are available
74 to the ACPI<->BIOS interface.
77 1.3 sparc64
78 -----------
80 The following processors for the sparc64 architecture are supported by
81 cpufreq:
83 UltraSPARC-III
86 1.4 ppc
87 -------
89 Several "PowerBook" and "iBook2" notebooks are supported.
92 1.5 SuperH
93 ----------
95 The following SuperH processors are supported by cpufreq:
97 SH-3
98 SH-4
101 2. "Policy" / "Governor" ?
102 ==========================
104 Some CPU frequency scaling-capable processor switch between various
105 frequencies and operating voltages "on the fly" without any kernel or
106 user involvement. This guarantees very fast switching to a frequency
107 which is high enough to serve the user's needs, but low enough to save
108 power.
111 2.1 Policy
112 ----------
114 On these systems, all you can do is select the lower and upper
115 frequency limit as well as whether you want more aggressive
116 power-saving or more instantly available processing power.
119 2.2 Governor
120 ------------
122 On all other cpufreq implementations, these boundaries still need to
123 be set. Then, a "governor" must be selected. Such a "governor" decides
124 what speed the processor shall run within the boundaries. One such
125 "governor" is the "userspace" governor. This one allows the user - or
126 a yet-to-implement userspace program - to decide what specific speed
127 the processor shall run at.
130 3. How to change the CPU cpufreq policy and/or speed
131 ====================================================
133 3.1 Preferred Interface: sysfs
134 ------------------------------
136 The preferred interface is located in the sysfs filesystem. If you
137 mounted it at /sys, the cpufreq interface is located in a subdirectory
138 "cpufreq" within the cpu-device directory
139 (e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
141 cpuinfo_min_freq :              this file shows the minimum operating
142                                 frequency the processor can run at(in kHz) 
143 cpuinfo_max_freq :              this file shows the maximum operating
144                                 frequency the processor can run at(in kHz) 
145 scaling_driver :                this file shows what cpufreq driver is
146                                 used to set the frequency on this CPU
148 scaling_available_governors :   this file shows the CPUfreq governors
149                                 available in this kernel. You can see the
150                                 currently activated governor in
152 scaling_governor,               and by "echoing" the name of another
153                                 governor you can change it. Please note
154                                 that some governors won't load - they only
155                                 work on some specific architectures or
156                                 processors.
158 cpuinfo_cur_freq :              Current speed of the CPU, in KHz.
160 scaling_available_frequencies : List of available frequencies, in KHz.
162 scaling_min_freq and
163 scaling_max_freq                show the current "policy limits" (in
164                                 kHz). By echoing new values into these
165                                 files, you can change these limits.
166                                 NOTE: when setting a policy you need to
167                                 first set scaling_max_freq, then
168                                 scaling_min_freq.
170 affected_cpus :                 List of CPUs that require software coordination
171                                 of frequency.
173 related_cpus :                  List of CPUs that need some sort of frequency
174                                 coordination, whether software or hardware.
176 scaling_driver :                Hardware driver for cpufreq.
178 scaling_cur_freq :              Current frequency of the CPU, in KHz.
180 If you have selected the "userspace" governor which allows you to
181 set the CPU operating frequency to a specific value, you can read out
182 the current frequency in
184 scaling_setspeed.               By "echoing" a new frequency into this
185                                 you can change the speed of the CPU,
186                                 but only within the limits of
187                                 scaling_min_freq and scaling_max_freq.
188                                 
190 3.2 Deprecated Interfaces
191 -------------------------
193 Depending on your kernel configuration, you might find the following 
194 cpufreq-related files:
195 /proc/cpufreq
196 /proc/sys/cpu/*/speed
197 /proc/sys/cpu/*/speed-min
198 /proc/sys/cpu/*/speed-max
200 These are files for deprecated interfaces to cpufreq, which offer far
201 less functionality. Because of this, these interfaces aren't described
202 here.