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