Skip to contentSkip to conversation

mach-shmobile: Use preset_lpj with calibrate_delay()

PATCH Applied Magnus Damm 2 participants 2 messages May 9, 2012

Subsystems (4)
lore
Share & tools
lore

Magnus Damm

author maintainer
#0 lore raw

PATCH 1/1 mach-shmobile: Use preset_lpj with calibrate_delay()

From: Magnus Damm <[email protected]>

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.

---

 arch/arm/mach-shmobile/timer.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/timer.c +2 -1
@@ -36,7 +36,8 @@ void __init shmobile_setup_delay(unsigne
 
 	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 lore raw
Quoted 10 lines · Magnus Damm

From: Magnus Damm <[email protected]>

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.

Quoted 8 lines

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.

Applied to the soc branch of the renesas.git tree.

Thanks,
Rafael

Quoted 19 lines

---

 arch/arm/mach-shmobile/timer.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/timer.c +2 -1
@@ -36,7 +36,8 @@ void __init shmobile_setup_delay(unsigne
 
 	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)