| From 0d710173dcca9b9e7c5ec0ddf109e9bbaa6d4a79 Mon Sep 17 00:00:00 2001 |
| From: Magnus Damm <damm@opensource.se> |
| Date: Thu, 10 May 2012 00:37:48 +0200 |
| Subject: ARM / mach-shmobile: Use preset_lpj with calibrate_delay() |
| |
| Update the mach-shmobile shared delay calibration code for late |
| timers. All existing in-tree non-DT socs are however using early |
| timers today and they are unaffected by this change. |
| |
| The patch modifies shmobile_setup_delay() from using lpj_fine |
| to preset_lpj. This change allows us to preset the worst case |
| loops-per-jiffy value to all CPU cores on the system. |
| |
| The old code which made use of lpj_fine did not affect the |
| secondary CPU cores which made it impossible to boot on SMP |
| without early timers. |
| |
| Needed for SMP SoCs using late timers like EMEV2 or any other |
| mach-shmobile SMP SoC that makes use of late timers via DT. |
| |
| Signed-off-by: Magnus Damm <damm@opensource.se> |
| Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> |
| (cherry picked from commit 173bf69a7af142e0325fa514954f6eeb2d20cc1d) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/timer.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c |
| index b323e3c..a169cea 100644 |
| --- a/arch/arm/mach-shmobile/timer.c |
| +++ b/arch/arm/mach-shmobile/timer.c |
| @@ -35,7 +35,8 @@ void __init shmobile_setup_delay(unsigned int max_cpu_core_mhz, |
| |
| unsigned int value = (1000000 * mult) / (HZ * div); |
| |
| - lpj_fine = max_cpu_core_mhz * value; |
| + if (!preset_lpj) |
| + preset_lpj = max_cpu_core_mhz * value; |
| } |
| |
| static void __init shmobile_late_time_init(void) |
| -- |
| 1.7.10.1.362.g242cab3 |
| |