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
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.
156scaling_min_freq and
157scaling_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
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