[HACK] Overclocking/Undervolting kernels with Voltage Control support
I'm the author of Voltage Control, an application for Galaxy S series to control OC/UV kernels. I don't personally own a Nexus S (and I cant say I will, unless someone want to Nexus S donate one for me ;p).
Voltage Control Lite 4.00 on Android Market!
I know there are many apps to control OC, but I dont know any doing UV work.
If anybody is interested in making UV kernel for Nexus S there are some working kernels for SGS (given the hardware similarities some knowledge may be taken from current solutions).
Authors of most OC/UV code are raspdeep and Unhelpful, heres the topic: http://forum.xda-developers.com/showthread.php?t=822027
and second: http://forum.xda-developers.com/showthread.php?t=762171
If you are interested in creating UV kernel working with Voltage Control, I'll give brief explanation how VC works, and how are things done on SGS.
My application communicates with kernel via sysfs interfaces via cat and echo:
/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state // to read all states
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq // may be obsolete, didnt make a decision yet
key in UV procedure, it represents undervolt for each frequency from highest to lowest; "25 25 50 50 100" means UV highest freq by 25, and lowest by 100
providing additional functionality:
Containing all frequencies and corresponding voltages, format:
FREQ STOCK CURRENT
1120000 1300 1300
1000000 1300 1300
This is useful for determining stock voltages used by the device, because they are needed in voltage calculation. Stock values are hardcoded, but If you want to change them I suggest to implement this table, to let user know at exactly what voltage his device is running.
Third column is obsolete, since VC calculates current (stock-uv) voltage itself might be removed in the future.
This is table where we store enabled ("1") and disabled ("0") state for each frequency;
"0 1 1 0 1" means we disabled highest frequency and second to lowest.
This is useful when kernel developer wants to produce ONE kernel for all OC lovers.
This means there could be one kernel supporting OC frequencies up to 1600Mhz (lets say 1600,1500,1400,1300,1200,1120), and user could choose which ones he wants to use (eg 1400 and 1120, disabling the rest).
I'm aware that Nexus S will receive tremendous attention from developers so I believe that someone might actually come with better implementation (single table consisting of all information needed by VC?)of this mess.
Best idea would be to make one table for all information, so it can be easily parsed.
Current version of app is 4.0 beta, which is a complete rewrite.
I'm open for ideas, suggestions regarding additional features.