diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/cpu-freq/user-guide.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/cpu-freq/user-guide.txt')
-rw-r--r-- | Documentation/cpu-freq/user-guide.txt | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/Documentation/cpu-freq/user-guide.txt b/Documentation/cpu-freq/user-guide.txt new file mode 100644 index 000000000000..7fedc00c3d30 --- /dev/null +++ b/Documentation/cpu-freq/user-guide.txt | |||
@@ -0,0 +1,185 @@ | |||
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 | |||
161 | |||
162 | If you have selected the "userspace" governor which allows you to | ||
163 | set the CPU operating frequency to a specific value, you can read out | ||
164 | the current frequency in | ||
165 | |||
166 | scaling_setspeed. By "echoing" a new frequency into this | ||
167 | you can change the speed of the CPU, | ||
168 | but only within the limits of | ||
169 | scaling_min_freq and scaling_max_freq. | ||
170 | |||
171 | |||
172 | 3.2 Deprecated Interfaces | ||
173 | ------------------------- | ||
174 | |||
175 | Depending on your kernel configuration, you might find the following | ||
176 | cpufreq-related files: | ||
177 | /proc/cpufreq | ||
178 | /proc/sys/cpu/*/speed | ||
179 | /proc/sys/cpu/*/speed-min | ||
180 | /proc/sys/cpu/*/speed-max | ||
181 | |||
182 | These are files for deprecated interfaces to cpufreq, which offer far | ||
183 | less functionality. Because of this, these interfaces aren't described | ||
184 | here. | ||
185 | |||