summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/tau_6xx.c
diff options
context:
space:
mode:
authorFinn Thain <fthain@telegraphics.com.au>2020-09-05 02:02:20 +0300
committerMichael Ellerman <mpe@ellerman.id.au>2020-09-15 15:13:24 +0300
commit66943005cc41f48e4d05614e8f76c0ca1812f0fd (patch)
treea63a21bc0a6c699e1a0043b2b06701a7c85b5554 /arch/powerpc/kernel/tau_6xx.c
parentb32d5d7e920a364287f6206af2d20179978a617d (diff)
downloadlinux-66943005cc41f48e4d05614e8f76c0ca1812f0fd.tar.xz
powerpc/tau: Use appropriate temperature sample interval
According to the MPC750 Users Manual, the SITV value in Thermal Management Register 3 is 13 bits long. The present code calculates the SITV value as 60 * 500 cycles. This would overflow to give 10 us on a 500 MHz CPU rather than the intended 60 us. (But according to the Microprocessor Datasheet, there is also a factor of 266 that has to be applied to this value on certain parts i.e. speed sort above 266 MHz.) Always use the maximum cycle count, as recommended by the Datasheet. Fixes: 1da177e4c3f41 ("Linux-2.6.12-rc2") Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Tested-by: Stan Johnson <userm57@yahoo.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/896f542e5f0f1d6cf8218524c2b67d79f3d69b3c.1599260540.git.fthain@telegraphics.com.au
Diffstat (limited to 'arch/powerpc/kernel/tau_6xx.c')
-rw-r--r--arch/powerpc/kernel/tau_6xx.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/arch/powerpc/kernel/tau_6xx.c b/arch/powerpc/kernel/tau_6xx.c
index e2ab8a111b69..976d5bc1b517 100644
--- a/arch/powerpc/kernel/tau_6xx.c
+++ b/arch/powerpc/kernel/tau_6xx.c
@@ -178,15 +178,11 @@ static void tau_timeout(void * info)
* complex sleep code needs to be added. One mtspr every time
* tau_timeout is called is probably not a big deal.
*
- * Enable thermal sensor and set up sample interval timer
- * need 20 us to do the compare.. until a nice 'cpu_speed' function
- * call is implemented, just assume a 500 mhz clock. It doesn't really
- * matter if we take too long for a compare since it's all interrupt
- * driven anyway.
- *
- * use a extra long time.. (60 us @ 500 mhz)
+ * The "PowerPC 740 and PowerPC 750 Microprocessor Datasheet"
+ * recommends that "the maximum value be set in THRM3 under all
+ * conditions."
*/
- mtspr(SPRN_THRM3, THRM3_SITV(500*60) | THRM3_E);
+ mtspr(SPRN_THRM3, THRM3_SITV(0x1fff) | THRM3_E);
local_irq_restore(flags);
}