]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
sh: Derive calibrate_delay lpj from clk fwk.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 8 Sep 2008 11:47:42 +0000 (20:47 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 8 Sep 2008 11:47:42 +0000 (20:47 +0900)
All CPUs must have a sensible cpu_clk definition these days, which we can
safely use for deriving the preset loops_per_jiffy. The only odd one out
is SH-5, which hasn't been hammered in to the framework yet.

Based on the ST patch.

Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
Signed-off-by: Carl Shaw <carl.shaw@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/Kconfig
arch/sh/kernel/setup.c

index c5b08eb3770e7d4e72d99048beb8c41a0045708a..bbdcd6418ef52d56e9e30b1db610719e73324a80 100644 (file)
@@ -25,6 +25,7 @@ config SUPERH32
 
 config SUPERH64
        def_bool y if CPU_SH5
+       select GENERIC_CALIBRATE_DELAY
 
 config ARCH_DEFCONFIG
        string
@@ -57,7 +58,7 @@ config GENERIC_IRQ_PROBE
        def_bool y
 
 config GENERIC_CALIBRATE_DELAY
-       def_bool y
+       bool
 
 config GENERIC_IOMAP
        bool
index fc098c8af052aa7ddda14148e07cd4d58cb927f9..267b344099c088f8494580a4451c7171b6220716 100644 (file)
@@ -27,6 +27,8 @@
 #include <linux/debugfs.h>
 #include <linux/crash_dump.h>
 #include <linux/mmzone.h>
+#include <linux/clk.h>
+#include <linux/delay.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 #include <asm/page.h>
@@ -180,6 +182,24 @@ static inline void __init reserve_crashkernel(void)
 {}
 #endif
 
+#ifndef CONFIG_GENERIC_CALIBRATE_DELAY
+void __cpuinit calibrate_delay(void)
+{
+       struct clk *clk = clk_get(NULL, "cpu_clk");
+
+       if (IS_ERR(clk))
+               panic("Need a sane CPU clock definition!");
+
+       loops_per_jiffy = (clk_get_rate(clk) >> 1) / HZ;
+
+       printk(KERN_INFO "Calibrating delay loop (skipped)... "
+                        "%lu.%02lu BogoMIPS PRESET (lpj=%lu)\n",
+                        loops_per_jiffy/(500000/HZ),
+                        (loops_per_jiffy/(5000/HZ)) % 100,
+                        loops_per_jiffy);
+}
+#endif
+
 void __init __add_active_range(unsigned int nid, unsigned long start_pfn,
                                                unsigned long end_pfn)
 {