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 261.6 Blackfin 27 282. "Policy" / "Governor"? 292.1 Policy 302.2 Governor 31 323. How to change the CPU cpufreq policy and/or speed 333.1 Preferred interface: sysfs 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 48Intel PXA 49 50 511.2 x86 52------- 53 54The following processors for the x86 architecture are supported by cpufreq: 55 56AMD Elan - SC400, SC410 57AMD mobile K6-2+ 58AMD mobile K6-3+ 59AMD mobile Duron 60AMD mobile Athlon 61AMD Opteron 62AMD Athlon 64 63Cyrix Media GXm 64Intel mobile PIII and Intel mobile PIII-M on certain chipsets 65Intel Pentium 4, Intel Xeon 66Intel Pentium M (Centrino) 67National Semiconductors Geode GX 68Transmeta Crusoe 69Transmeta Efficeon 70VIA Cyrix 3 / C3 71various processors on some ACPI 2.0-compatible systems [*] 72 73[*] Only if "ACPI Processor Performance States" are available 74to the ACPI<->BIOS interface. 75 76 771.3 sparc64 78----------- 79 80The following processors for the sparc64 architecture are supported by 81cpufreq: 82 83UltraSPARC-III 84 85 861.4 ppc 87------- 88 89Several "PowerBook" and "iBook2" notebooks are supported. 90 91 921.5 SuperH 93---------- 94 95All SuperH processors supporting rate rounding through the clock 96framework are supported by cpufreq. 97 981.6 Blackfin 99------------ 100 101The following Blackfin processors are supported by cpufreq: 102 103BF522, BF523, BF524, BF525, BF526, BF527, Rev 0.1 or higher 104BF531, BF532, BF533, Rev 0.3 or higher 105BF534, BF536, BF537, Rev 0.2 or higher 106BF561, Rev 0.3 or higher 107BF542, BF544, BF547, BF548, BF549, Rev 0.1 or higher 108 109 1102. "Policy" / "Governor" ? 111========================== 112 113Some CPU frequency scaling-capable processor switch between various 114frequencies and operating voltages "on the fly" without any kernel or 115user involvement. This guarantees very fast switching to a frequency 116which is high enough to serve the user's needs, but low enough to save 117power. 118 119 1202.1 Policy 121---------- 122 123On these systems, all you can do is select the lower and upper 124frequency limit as well as whether you want more aggressive 125power-saving or more instantly available processing power. 126 127 1282.2 Governor 129------------ 130 131On all other cpufreq implementations, these boundaries still need to 132be set. Then, a "governor" must be selected. Such a "governor" decides 133what speed the processor shall run within the boundaries. One such 134"governor" is the "userspace" governor. This one allows the user - or 135a yet-to-implement userspace program - to decide what specific speed 136the processor shall run at. 137 138 1393. How to change the CPU cpufreq policy and/or speed 140==================================================== 141 1423.1 Preferred Interface: sysfs 143------------------------------ 144 145The preferred interface is located in the sysfs filesystem. If you 146mounted it at /sys, the cpufreq interface is located in a subdirectory 147"cpufreq" within the cpu-device directory 148(e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU). 149 150cpuinfo_min_freq : this file shows the minimum operating 151 frequency the processor can run at(in kHz) 152cpuinfo_max_freq : this file shows the maximum operating 153 frequency the processor can run at(in kHz) 154cpuinfo_transition_latency The time it takes on this CPU to 155 switch between two frequencies in nano 156 seconds. If unknown or known to be 157 that high that the driver does not 158 work with the ondemand governor, -1 159 (CPUFREQ_ETERNAL) will be returned. 160 Using this information can be useful 161 to choose an appropriate polling 162 frequency for a kernel governor or 163 userspace daemon. Make sure to not 164 switch the frequency too often 165 resulting in performance loss. 166scaling_driver : this file shows what cpufreq driver is 167 used to set the frequency on this CPU 168 169scaling_available_governors : this file shows the CPUfreq governors 170 available in this kernel. You can see the 171 currently activated governor in 172 173scaling_governor, and by "echoing" the name of another 174 governor you can change it. Please note 175 that some governors won't load - they only 176 work on some specific architectures or 177 processors. 178 179cpuinfo_cur_freq : Current frequency of the CPU as obtained from 180 the hardware, in KHz. This is the frequency 181 the CPU actually runs at. 182 183scaling_available_frequencies : List of available frequencies, in KHz. 184 185scaling_min_freq and 186scaling_max_freq show the current "policy limits" (in 187 kHz). By echoing new values into these 188 files, you can change these limits. 189 NOTE: when setting a policy you need to 190 first set scaling_max_freq, then 191 scaling_min_freq. 192 193affected_cpus : List of CPUs that require software coordination 194 of frequency. 195 196related_cpus : List of CPUs that need some sort of frequency 197 coordination, whether software or hardware. 198 199scaling_driver : Hardware driver for cpufreq. 200 201scaling_cur_freq : Current frequency of the CPU as determined by 202 the governor and cpufreq core, in KHz. This is 203 the frequency the kernel thinks the CPU runs 204 at. 205 206bios_limit : If the BIOS tells the OS to limit a CPU to 207 lower frequencies, the user can read out the 208 maximum available frequency from this file. 209 This typically can happen through (often not 210 intended) BIOS settings, restrictions 211 triggered through a service processor or other 212 BIOS/HW based implementations. 213 This does not cover thermal ACPI limitations 214 which can be detected through the generic 215 thermal driver. 216 217If you have selected the "userspace" governor which allows you to 218set the CPU operating frequency to a specific value, you can read out 219the current frequency in 220 221scaling_setspeed. By "echoing" a new frequency into this 222 you can change the speed of the CPU, 223 but only within the limits of 224 scaling_min_freq and scaling_max_freq. 225