Dynamically control cpu clock freq. and vcore with Powernowd on the Zaurus!

Here's the patch for Powernowd 0.96 which enables controlling clock and vcore on pxa270-based Z's under Linux. It should work on all pxa270-based Z's running 2.4.20 kernel with the following cpu/voltage changing patches:

  • http://www.piro.hopto.org/~piro/zaurus/kernelpatch/c3000/P01-C3000-clockup_050221.patch
  • http://www.piro.hopto.org/~piro/zaurus/kernelpatch/c3000/P02-C3000-voltage_050221.patch
  • including ones running 2.4 kernel-based pdaXrom and cacko's distributions. For impatient and those who can't compile, there's a pre-compiled package available here.

    A word of caution: it's possible to permanently damage hardware when running outside of manufacturer's set specifications.

    That said, my Zaurus SL-C1000 runs just fine at much lower voltage than specified by Intel. Here's a copy of my /etc/powernowd.conf file.


  • Powernowd daemon doesn't play nice when the Zaurus is suspended. Thus it needs to be killed before suspending. I have /etc/rc.d/init.d/powernowd script symlink'ed to /etc/apm/suspend.d and /etc/apm/resume.d directories.
  • Sometimes screen briefly blinks when cpu frequency gets changed.
  • Misc

    Here's a patch for XFCE systemload panel plugin for Linux that corrects the cpu load graph scaling on the Zaurii (actually, it accounts for kapm-idled kernel thread cpu time) and also shows the current cpu freq and vcore voltage. To enable displaying freq/vcore, mark checkbox next to "Text to display" for CPU monitor in systemload plugin settings dialog. Please notice that displaying freq/vcore will put quite a load on the system itself (it would add approx. 15% of system time @ default 416MHz), so it's probably not a good idea to have it enabled outside of debug/testing environment. I think that's because of slow access to i2c (lots of delay loops) in Sharp's kernel.

    Credits: Some code/ideas are borrowed from busybox and Piro's qclockchange.

    You can reach me at albertr at iral dot com.