[ARM] 3855/1: Add generic time support
authorKevin Hilman <khilman@mvista.com>
Thu, 21 Sep 2006 23:16:30 +0000 (00:16 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 28 Sep 2006 19:59:24 +0000 (20:59 +0100)
This patch adds Generic time-of-day support for the ARM architecture.

The support is currently added using #ifdef's so that it can support
sub-arches that do not (yet) have a clocksource added.  As sub-arches
add clocksource support, they should 'select GENERIC_TIME'

Signed-off-by: Deepak Saxena <dsaxena@mvista.com>
Signed-off-by: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Kevin Hilman <khilman@mvista.com>
Acked-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig
arch/arm/kernel/time.c
include/asm-arm/mach/time.h
include/asm-arm/timeofday.h [new file with mode: 0644]

index 0810d27c039e44b42f18011bab024c6117dc2ec5..314ac6ba0ec44dbaf7bf1ce39860a7c5b9449a39 100644 (file)
@@ -17,6 +17,10 @@ config ARM
          Europe.  There is an ARM Linux project with a web page at
          <http://www.arm.linux.org.uk/>.
 
+config GENERIC_TIME
+       bool
+       default n
+
 config MMU
        bool
        default y
index 09a67d77185775937a6f70c9541172bbee416d67..d4dceb5f06e94181b0300fbd3a1375f6a573194d 100644 (file)
@@ -69,10 +69,12 @@ EXPORT_SYMBOL(profile_pc);
  */
 int (*set_rtc)(void);
 
+#ifndef CONFIG_GENERIC_TIME
 static unsigned long dummy_gettimeoffset(void)
 {
        return 0;
 }
+#endif
 
 /*
  * Scheduler clock - returns current time in nanosec units.
@@ -230,6 +232,7 @@ static inline void do_leds(void)
 #define        do_leds()
 #endif
 
+#ifndef CONFIG_GENERIC_TIME
 void do_gettimeofday(struct timeval *tv)
 {
        unsigned long flags;
@@ -291,6 +294,7 @@ int do_settimeofday(struct timespec *tv)
 }
 
 EXPORT_SYMBOL(do_settimeofday);
+#endif /* !CONFIG_GENERIC_TIME */
 
 /**
  * save_time_delta - Save the offset between system time and RTC time
@@ -500,8 +504,10 @@ device_initcall(timer_init_sysfs);
 
 void __init time_init(void)
 {
+#ifndef CONFIG_GENERIC_TIME
        if (system_timer->offset == NULL)
                system_timer->offset = dummy_gettimeoffset;
+#endif
        system_timer->init();
 
 #ifdef CONFIG_NO_IDLE_HZ
index dee0bc336fe8393ae8e13b4079a1a3f3eab6f328..1eb93f5c0d6cf921c6bfc3cf211bf84b654687c6 100644 (file)
@@ -38,7 +38,9 @@ struct sys_timer {
        void                    (*init)(void);
        void                    (*suspend)(void);
        void                    (*resume)(void);
+#ifndef CONFIG_GENERIC_TIME
        unsigned long           (*offset)(void);
+#endif
 
 #ifdef CONFIG_NO_IDLE_HZ
        struct dyn_tick_timer   *dyn_tick;
diff --git a/include/asm-arm/timeofday.h b/include/asm-arm/timeofday.h
new file mode 100644 (file)
index 0000000..27254bd
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _ASM_ARM_TIMEOFDAY_H
+#define _ASM_ARM_TIMEOFDAY_H
+#include <asm-generic/timeofday.h>
+#endif