0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/init.h>
0009 #include <linux/types.h>
0010 #include <linux/errno.h>
0011
0012 #include <asm/delay.h>
0013 #include <asm/arch_timer.h>
0014
0015 #include <clocksource/arm_arch_timer.h>
0016
0017 static unsigned long arch_timer_read_counter_long(void)
0018 {
0019 return arch_timer_read_counter();
0020 }
0021
0022 static struct delay_timer arch_delay_timer;
0023
0024 static void __init arch_timer_delay_timer_register(void)
0025 {
0026
0027 arch_delay_timer.read_current_timer = arch_timer_read_counter_long;
0028 arch_delay_timer.freq = arch_timer_get_rate();
0029 register_current_timer_delay(&arch_delay_timer);
0030 }
0031
0032 int __init arch_timer_arch_init(void)
0033 {
0034 u32 arch_timer_rate = arch_timer_get_rate();
0035
0036 if (arch_timer_rate == 0)
0037 return -ENXIO;
0038
0039 arch_timer_delay_timer_register();
0040
0041 return 0;
0042 }