Recently I used the PowerTOP Tool to get an idea about the power aggressive application. Tool is very simple to use and provide lot of useful information on single click.
While using this tool, I remembered my struggle to achieve maximum power saving in MIPS processor by reducing the CPU Freq. The processor had the provision for CPU Frequency scale down, but not in Linux Kernel 2.4. In MIPS, the timer interrupt time and SDRAM refresh rate are derived from the CPU clock counter register. For ex, if 1 clock cycle is 1 us then 10000 clock cycle is 10ms (default timer interrupt time).
Initially I did’t know this dependency. Whenever I try to clock down the CPU, many timer based events are failed. After reading Junsun’s Linux Porting Guide, I got some idea about this dependency and started hacking the kernel code in that direction. At same time, initiate thread in the linux-mips list to get some tips.
Finally I fixed this issue by modifying the timer interrupt ack function and successfully run the CPU in 1/8 of its maximum freq.