What you could do is load your system to the max (play a movie with mplayer and force it to scale to video output or something), lock to each frequency you want to record then write down what smart reflex chooses as a voltage for each frequency. Thus you could use some relatively sane voltages and just guess for the ones outside the SR range (1000MHz etc). This would allow you to PERHAPS create a voltage under clock profile that is safe for your device that will go up to 1000MHz. Although I think it should be said it really can not recommended to push the processor so hard without adequate cooling.
maemo:~# cat /usr/local/bin/smartreflex #!/bin/sh case $1 in "on") # This is called when the system gets locked, or taken off charge. # It should always set sane defaults. echo "805000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo "500000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo "300000" > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate echo "1" > /sys/power/sr_vdd1_autocomp echo "1" > /sys/power/sr_vdd2_autocomp # If we've been turned back on by relocking, then kill any waiting instance. kill -9 `pgrep -f smartreflex.wait` >/dev/null 2>&1 ;; "off") # This is called when the system gets unlocked. It temporarily disables SmartReflex, # permits overclocking to 1100MHz, and reduces the sampling_rate so that the CPU speed # will boost quickly as the user (for instance) loads a browser and selects a web page. # It then enters a loop by running "smartreflex wait". This sleeps for 20 seconds, then # tests whether we're still using a speed above 600MHz. If we are, then allow this to # persist for up to two minutes / six iterations before reverting to the sane defaults. echo "0" > /sys/power/sr_vdd1_autocomp echo "0" > /sys/power/sr_vdd2_autocomp echo "1100000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo "500000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo "150000" > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate /usr/local/bin/smartreflex wait & exit ;; "wait") # While SmartReflex is switched off... let count=0; while [ `cat /sys/power/sr_vdd1_autocomp` -ne 1 ]; do # Wait twenty seconds for user to load whatever he unlocked the phone for sleep 20; # We can reenable SmartReflex provided that our current speed is not greater than 600MHz # NB less than or equal to 600MHz, so we still re-enable SR if locked to 600MHz by a phone call if [ `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq` -le 600000 ]; then /usr/local/bin/smartreflex on; exit; fi; # Hmm, we're still using our overclocking it seems. Let's use a time limit as well. let count=$count+1; if [ "$count" -ge 6 ]; then # After six iterations, we've been running for two minutes above 600MHz. SmartReflex it is. /usr/local/bin/smartreflex on; exit; fi done; ;; esac
maemo:~# cat test1.sh let x=1; while [[ "$x" -le "1000" ]]; do smartreflex on; smartreflex off; let x=$x+1; done; maemo:~# time sh test1.sh real 0m 55.27s user 0m 12.05s sys 0m 30.03s