sh: First step at generic timeofday support.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 4 Oct 2006 04:21:45 +0000 (13:21 +0900)
committerPaul Mundt <pmundt@dysnomia.hsdv.com>
Fri, 6 Oct 2006 06:26:21 +0000 (15:26 +0900)
At the moment we wrap GENERIC_TIME around our existing timer API.
As boards start providing their own clocksources, they're able to
select GENERIC_TIME accordingly and optimize out most of the timer
API.

Once the current timers have been reworked as proper clocksource
drivers, the rest of the place holders for the timer API can go
away and we can flip on GENERIC_TIME unconditionally.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/Kconfig
arch/sh/kernel/time.c
include/asm-sh/timer.h

index f6a0c44361682de8e34fdc1eec8c57a2d7977f7e..6a461d4caeffc814e2f5968c178edc1de2569bcf 100644 (file)
@@ -45,6 +45,9 @@ config GENERIC_CALIBRATE_DELAY
 config GENERIC_IOMAP
        bool
 
+config GENERIC_TIME
+       def_bool n
+
 config ARCH_MAY_HAVE_PC_FDC
        bool
 
@@ -357,6 +360,7 @@ config CPU_HAS_SR_RB
 endmenu
 
 menu "Timer support"
+depends on !GENERIC_TIME
 
 config SH_TMU
        bool "TMU timer support"
index 450c68f1df052f5ccba2eaef9d0149a1bc2390bf..1fbb83c665ddcb21f32ce1a7f218b350814331a8 100644 (file)
@@ -47,6 +47,7 @@ unsigned long long __attribute__ ((weak)) sched_clock(void)
        return (unsigned long long)jiffies * (1000000000 / HZ);
 }
 
+#ifndef CONFIG_GENERIC_TIME
 void do_gettimeofday(struct timeval *tv)
 {
        unsigned long seq;
@@ -99,6 +100,7 @@ int do_settimeofday(struct timespec *tv)
        return 0;
 }
 EXPORT_SYMBOL(do_settimeofday);
+#endif /* !CONFIG_GENERIC_TIME */
 
 /* last time the RTC clock got updated */
 static long last_rtc_update;
index c7ab28095ba0ea4ffabe410108d57a33c9f5e56b..ebc78db1a9ea8c34c33b5acf7d4224c71b1d2170 100644 (file)
@@ -8,7 +8,9 @@ struct sys_timer_ops {
        int (*init)(void);
        int (*start)(void);
        int (*stop)(void);
+#ifndef CONFIG_GENERIC_TIME
        unsigned long (*get_offset)(void);
+#endif
        unsigned long (*get_frequency)(void);
 };
 
@@ -24,10 +26,12 @@ struct sys_timer {
 extern struct sys_timer tmu_timer;
 extern struct sys_timer *sys_timer;
 
+#ifndef CONFIG_GENERIC_TIME
 static inline unsigned long get_timer_offset(void)
 {
        return sys_timer->ops->get_offset();
 }
+#endif
 
 static inline unsigned long get_timer_frequency(void)
 {