[Sprint HTC EVO 4G LTE] Zarboz:
Honestly its just cuz i havent cleaned it up to a single table and IMO if used with the governors the right way can yield a nice battery life as well as proper ramp ups

as far as i can tell our board uses all 3 of these "speed steps" for lack of a better term

static struct acpu_level * __init select_freq_plan(void)
{
struct acpu_level *l, *max_acpu_level = NULL;
unsigned int kernel_flag = get_kernel_flag();

/* Select frequency tables. */
if (cpu_is_msm8960()) {
uint32_t pte_efuse, pvs;
struct acpu_level *v1, *v2;

pte_efuse = readl_relaxed(QFPROM_PTE_EFUSE_ADDR);
pvs = (pte_efuse >> 10) & 0x7;
if (pvs == 0x7)
pvs = (pte_efuse >> 13) & 0x7;

switch (pvs) {
case 0x0:
case 0x7:
pr_info("ACPU PVS: Slow\n");
v1 = acpu_freq_tbl_8960_kraitv1_slow;
v2 = acpu_freq_tbl_8960_kraitv2_slow;
break;
case 0x1:
pr_info("ACPU PVS: Nominal\n");
v1 = acpu_freq_tbl_8960_kraitv1_nom_fast;
v2 = acpu_freq_tbl_8960_kraitv2_nom;
break;
case 0x3:
pr_info("ACPU PVS: Fast\n");
v1 = acpu_freq_tbl_8960_kraitv1_nom_fast;
v2 = acpu_freq_tbl_8960_kraitv2_fast;
break;
default:
pr_warn("ACPU PVS: Unknown. Defaulting to slow.\n");
v1 = acpu_freq_tbl_8960_kraitv1_slow;
v2 = acpu_freq_tbl_8960_kraitv2_slow;
break;
}

/* Force apply CPU table by writeconfig */
if (!cpu_is_krait_v1()){
if(kernel_flag & KERNEL_FLAG_PVS_SLOW_CPU){
pr_info("ACPU PVS: Force SLOW by writeconfig\n");
v2 = acpu_freq_tbl_8960_kraitv2_slow;
}
else if (kernel_flag & KERNEL_FLAG_PVS_NOM_CPU){
pr_info("ACPU PVS: Force NOMINAL by writeconfig\n");
v2 = acpu_freq_tbl_8960_kraitv2_nom;
}
else if (kernel_flag & KERNEL_FLAG_PVS_FAST_CPU){
v2 = acpu_freq_tbl_8960_kraitv2_fast;
pr_info("ACPU PVS: Force FAST by writeconfig\n");
}
}

scalable = scalable_8960;
if (cpu_is_krait_v1()) {
acpu_freq_tbl = v1;
l2_freq_tbl = l2_freq_tbl_8960_kraitv1;
l2_freq_tbl_size = ARRAY_SIZE(l2_freq_tbl_8960_kraitv1);
} else {
acpu_freq_tbl = v2;
l2_freq_tbl = l2_freq_tbl_8960_kraitv2;
l2_freq_tbl_size = ARRAY_SIZE(l2_freq_tbl_8960_kraitv2);
}
} else if (cpu_is_apq8064()) {
scalable = scalable_8064;
acpu_freq_tbl = acpu_freq_tbl_8064;
l2_freq_tbl = l2_freq_tbl_8064;
l2_freq_tbl_size = ARRAY_SIZE(l2_freq_tbl_8064);
} else if (cpu_is_msm8627()) {
scalable = scalable_8627;
acpu_freq_tbl = acpu_freq_tbl_8627;
l2_freq_tbl = l2_freq_tbl_8627;
l2_freq_tbl_size = ARRAY_SIZE(l2_freq_tbl_8627);
} else if (cpu_is_msm8930()) {
scalable = scalable_8930;
acpu_freq_tbl = acpu_freq_tbl_8930;
l2_freq_tbl = l2_freq_tbl_8930;
l2_freq_tbl_size = ARRAY_SIZE(l2_freq_tbl_8930);
} else {
BUG();
}
if (krait_needs_vmin()) {
pr_info("Applying min 1.15v fix for Krait Errata 26\n");
kraitv2_apply_vmin(acpu_freq_tbl);
}

/* Adjust frequency table according to custom acpu_max_freq */
if (acpu_max_freq) {
for (l = acpu_freq_tbl; l->speed.khz != 0; l++) {
if (l->speed.khz == acpu_max_freq) {
/* Custom max freq found in table.
* Mark all subsequent frequencies
* as not supported.
*/
for (++l; l->speed.khz != 0; l++)
l->use_for_scaling = 0;
break;
}
}
}

/* Find the max supported scaling frequency. */
for (l = acpu_freq_tbl; l->speed.khz != 0; l++)
if (l->use_for_scaling)
max_acpu_level = l;
BUG_ON(!max_acpu_level);
pr_info("Max ACPU freq: %u KHz\n", max_acpu_level->speed.khz);
max_vdd = max_acpu_level->vdd_core;

return max_acpu_level;
}

static struct acpuclk_data acpuclk_8960_data = {
.set_rate = acpuclk_8960_set_rate,
.get_rate = acpuclk_8960_get_rate,
.power_collapse_khz = STBY_KHZ,
.wait_for_irq_khz = STBY_KHZ,
};

here it runs some kind of check to check wich "version" of the speedstep your CPU manufacturer revision requires. It is my opinion this clock table is meant to be used with other CPU's but after reviewing the S3's code it appears MUCH different than HTC's.... So is this the way to differentiate the One XL, One S, Evo LTE Variants???? Unsure at this time as the only thing that seems to vary is the voltage tables (wich leads me to believe its to determine the "version" of your One series: OneS,OneXL,LTE.)

if you look at ca1ne's source i believe he revised the table to simply read acpu_freq_tbl_8960_OC

this IMO is much cleaner but i have not had time to get around to do it quite yet ill be honest :D