[Captivate Android Development] existz:
Yea smartass2 scales a little differently than ondemand, 100 is actually used but not as much, give it awhile (as CPUSpy and the time in state is not updated in exact real time).. smartass2 is setup to scale depending a few different factors, so once the load is below a certain percentage or after a certain amount of time of no load, it will drop down to 100... you was either putting load on the CPU, even by just touching the screen or whatever, and didn't give it enough time...but it will scale down to 100.. u didn't actually lose the frequency, giving it more time or just switching to ondemand would have showed it...but remember that cpuspy does not show in real time, give it awhile, especially with no load on the CPU (just let it set there or with screen off) and it will show

Ondemand usually scales from min to max, or max to min, so when theres no load, it drops straight to 100, then when there's load it jumps to 1ghz/1.2ghz, sometimes skipping through a few of the others...while smartass has a lot more factors and settings, so depending on the load, it might jump down to 200 and set until a certain amount of load is not on the CPU, or after a certain amount of time of no load,...etc..etc.. there's just different variables that come into effect.. smartass2 will scale/use more of the other frequencies than ondemand.

But heres the tunable options for smartass2 in the source, as you can see, if its below the ideal frequency it will scale down to 200mhz, then when theres below 25% load it will scale on down

/*
* The "ideal" frequency to use when awake. The governor will ramp up faster
* towards the ideal frequency and slower after it has passed it. Similarly,
* lowering the frequency towards the ideal frequency is faster than below it.
*/
#define DEFAULT_AWAKE_IDEAL_FREQ (800*1000)
static unsigned int awake_ideal_freq;

/*
* The "ideal" frequency to use when suspended.
* When set to 0, the governor will not track the suspended state (meaning
* that practically when sleep_ideal_freq==0 the awake_ideal_freq is used
* also when suspended).
*/
#define DEFAULT_SLEEP_IDEAL_FREQ (100*1000)
static unsigned int sleep_ideal_freq;

/*
* Freqeuncy delta when ramping up above the ideal freqeuncy.
* Zero disables and causes to always jump straight to max frequency.
* When below the ideal freqeuncy we always ramp up to the ideal freq.
*/
#define DEFAULT_RAMP_UP_STEP (200*1000)
static unsigned int ramp_up_step;

/*
* Freqeuncy delta when ramping down below the ideal freqeuncy.
* Zero disables and will calculate ramp down according to load heuristic.
* When above the ideal freqeuncy we always ramp down to the ideal freq.
*/
#define DEFAULT_RAMP_DOWN_STEP (200*1000)
static unsigned int ramp_down_step;

/*
* CPU freq will be increased if measured load > max_cpu_load;
*/
#define DEFAULT_MAX_CPU_LOAD 50
static unsigned long max_cpu_load;

/*
* CPU freq will be decreased if measured load < min_cpu_load;
*/
#define DEFAULT_MIN_CPU_LOAD 25
static unsigned long min_cpu_load;

/*
* The minimum amount of time to spend at a frequency before we can ramp up.
* Notice we ignore this when we are below the ideal frequency.
*/
#define DEFAULT_UP_RATE_US 10000;
static unsigned long up_rate_us;

/*
* The minimum amount of time to spend at a frequency before we can ramp down.
* Notice we ignore this when we are above the ideal frequency.
*/
#define DEFAULT_DOWN_RATE_US 99000;
static unsigned long down_rate_us;

/*
* The frequency to set when waking up from sleep.
* When sleep_ideal_freq=0 this will have no effect.
*/
#define DEFAULT_SLEEP_WAKEUP_FREQ (1000*1000)
static unsigned int sleep_wakeup_freq;

/*
* Sampling rate, I highly recommend to leave it at 2.
*/
#define DEFAULT_SAMPLE_RATE_JIFFIES 2
static unsigned int sample_rate_jiffies;