La respuesta está en la fuente del kernel de ese HTC Wildfire - mira en arch/arm/mach-msm/acpuclock.c
para ver la tabla de las frecuencias aceptadas. Dado que el WildFire se basa en el chipset MSM-7x25, a continuación se muestra un extracto de la tabla de frecuencias codificadas, suponiendo que se trata de un teléfono GSM:
/* 7x01/7x25 normal with GSM capable modem */
static struct clkctl_acpu_speed pll0_245_pll1_768_pll2_1056[] = {
{ 0, 19200, ACPU_PLL_TCXO, 0, 0, 19200, 0, 0, 30720 },
{ 1, 122880, ACPU_PLL_0, 4, 1, 61440, 1, 3, 61440 },
{ 0, 128000, ACPU_PLL_1, 1, 5, 64000, 1, 3, 61440 },
{ 0, 176000, ACPU_PLL_2, 2, 5, 88000, 1, 3, 61440 },
{ 1, 245760, ACPU_PLL_0, 4, 0, 81920, 2, 4, 61440 },
{ 1, 256000, ACPU_PLL_1, 1, 2, 128000, 1, 5, 128000 },
{ 0, 352000, ACPU_PLL_2, 2, 2, 88000, 3, 5, 128000 },
{ 1, 384000, ACPU_PLL_1, 1, 1, 128000, 2, 6, 128000 },
{ 1, 528000, ACPU_PLL_2, 2, 1, 132000, 3, 7, 128000 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}, {0, 0, 0} }
};
- Primera columna, indica que la frecuencia se puede escalar, si es un 1 allí, que la frecuencia del chipset se puede escalar hacia arriba o hacia abajo, pensar en aumentar la CPU cuando se ejecuta una aplicación que consume mucho procesador y eso lo hace el kernel dinámicamente dentro de los límites de un umbral seguro sin quemar el chipset. - tenga en cuenta: ¡¡¡¡¡¡Esto es sólo para el núcleo de usar, más adelante en la respuesta, que muestra la tabla de overclocking, que es "usuario final" responsabilidad - no el kernel!!!!!!
- Segunda columna, la frecuencia normal en KHz dictada por lo que creo que se llama el
a11
reloj (en algún lugar de las entrañas del propio chipset)
- Tercera columna, no exactamente seguro, pero es específicamente relacionados con chipset en sí
- Cuarta columna, el selector utilizado para el ajuste de la frecuencia normal
- Quinta columna, el divisor utilizado para el ajuste de frecuencia normal
- Sexta columna, la frecuencia de overclocking en KHz
- Séptima columna, el selector de frecuencia de overclocking
- Octava columna, el divisor utilizado para el ajuste de la frecuencia de overclocking
- Novena columna, tampoco estoy seguro de lo que significa
De hecho, se utilizan 12 campos, los campos restantes se rellenan al arrancar el kernel, quizás añadiendo protecciones y asegurando que los valores conservados no se anulan explícitamente, un "gate-keeper" si quieres, sigue leyendo...
Más adelante en la fuente, suele haber unas frecuencias de overclocking conservadoras (las comunes MSM-7x 01 / 25 / 27 ) lo soportan), de nuevo el mismo diseño que los "valores conservadores" resaltados anteriormente, observe que cada una de las frecuencias puede ser aumentada/disminuida para cada frecuencia de overclock. Así es como SetCPU puede ajustar esos valores ya que tiene un 1 en la primera columna
#ifndef CONFIG_MSM_CPU_FREQ_OVERCLOCK_AHB
/* Conservative AHB overclocking */
{ 0, 403200, ACPU_PLL_2, 2, 2, 134400, 2, 5, 122880 },
{ 1, 480000, ACPU_PLL_0, 4, 1, 160000, 2, 6, 122880 },
{ 1, 595200, ACPU_PLL_2, 2, 1, 198400, 2, 7, 122880 },
{ 1, 604800, ACPU_PLL_2, 2, 1, 201600, 2, 7, 200000 },
{ 1, 614400, ACPU_PLL_0, 4, 0, 204800, 2, 7, 200000 },
{ 1, 633600, ACPU_PLL_0, 4, 0, 211200, 2, 7, 200000 },
{ 1, 652800, ACPU_PLL_0, 4, 0, 217600, 2, 7, 200000 },
{ 1, 672000, ACPU_PLL_0, 4, 0, 224000, 2, 7, 200000 },
{ 1, 691200, ACPU_PLL_0, 4, 0, 230400, 2, 7, 200000 },
{ 1, 710400, ACPU_PLL_0, 4, 0, 236800, 2, 7, 200000 },
{ 1, 729600, ACPU_PLL_0, 4, 0, 243200, 2, 7, 200000 },
{ 1, 748800, ACPU_PLL_0, 4, 0, 249600, 2, 7, 200000 },
{ 1, 768000, ACPU_PLL_0, 4, 0, 256000, 2, 7, 200000 },
{ 1, 787200, ACPU_PLL_0, 4, 0, 262400, 2, 7, 200000 },
{ 1, 806400, ACPU_PLL_0, 4, 0, 268800, 2, 7, 200000 },
// { 1, 825600, ACPU_PLL_0, 4, 0, 275200, 2, 7, 200000 },
// { 1, 844800, ACPU_PLL_0, 4, 0, 281600, 2, 7, 200000 },
#else
/* Agressive AHB overclocking */
{ 0, 403200, ACPU_PLL_2, 2, 2, 201600, 1, 5, 200000 },
{ 1, 480000, ACPU_PLL_0, 4, 1, 240000, 1, 6, 200000 },
{ 1, 595200, ACPU_PLL_2, 2, 1, 297600, 1, 7, 200000 },
{ 1, 604800, ACPU_PLL_2, 2, 1, 302400, 1, 7, 200000 },
{ 1, 614400, ACPU_PLL_0, 4, 0, 307200, 1, 7, 200000 },
{ 1, 633600, ACPU_PLL_0, 4, 0, 316800, 1, 7, 200000 },
{ 1, 652800, ACPU_PLL_0, 4, 0, 326400, 1, 7, 200000 },
{ 1, 672000, ACPU_PLL_0, 4, 0, 336000, 1, 7, 200000 },
{ 1, 691200, ACPU_PLL_0, 4, 0, 345600, 1, 7, 200000 },
{ 1, 710400, ACPU_PLL_0, 4, 0, 355200, 1, 7, 200000 },
{ 1, 729600, ACPU_PLL_0, 4, 0, 364800, 1, 7, 200000 },
{ 1, 748800, ACPU_PLL_0, 4, 0, 374400, 1, 7, 200000 },
{ 1, 768000, ACPU_PLL_0, 4, 0, 384000, 1, 7, 200000 },
{ 1, 787200, ACPU_PLL_0, 4, 0, 393600, 1, 7, 200000 },
{ 1, 806400, ACPU_PLL_0, 4, 0, 403200, 1, 7, 200000 },
// { 1, 825600, ACPU_PLL_0, 4, 0, 412800, 1, 7, 200000 },
// { 1, 844800, ACPU_PLL_0, 4, 0, 422400, 1, 7, 200000 },
#endif /* CONFIG_MSM_CPU_FREQ_OVERCLOCK_AHB */
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0}, {0, 0, 0} }
};
Dependiendo de las búsquedas en la tabla, y dependiendo del chipset, sólo se especifica el máximo, y es reforzado por el kernel (en el resto de los campos del registro que el kernel lee y lo procesa - ¡como se mencionó anteriormente!)
Finalmente he creado un archivo setcpu.txt que puse en root de la Tarjeta SD. La cosa es que cuando tenía una frecuencia de 800MHz SetCPU todavía lo leía pero la frecuencia máxima que podía tocar obviamente era 768MHz.
Por eso nunca se puede sobrepasar el máximo dictado, como en el caso del OP, ¡para evitar daños térmicos en el chipset y la frecuencia de reloj!
Reinicios aleatorios, congelaciones aleatorias, sobrecalentamiento de la batería más rápido de lo normal (normal como dentro del umbral regulado de frecuencia de reloj de la CPU) son todos síntomas de un chipset overclockeado.
Este es un gran indicio cuando alguien pregunta sobre reinicios aleatorios pero no dice que probablemente está overclockeado.