diff options
-rw-r--r-- | arch/arm/mach-pxa/time.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c index 3ac268fa419b..b91466861029 100644 --- a/arch/arm/mach-pxa/time.c +++ b/arch/arm/mach-pxa/time.c | |||
@@ -124,6 +124,7 @@ static struct irqaction pxa_timer_irq = { | |||
124 | static void __init pxa_timer_init(void) | 124 | static void __init pxa_timer_init(void) |
125 | { | 125 | { |
126 | struct timespec tv; | 126 | struct timespec tv; |
127 | unsigned long flags; | ||
127 | 128 | ||
128 | set_rtc = pxa_set_rtc; | 129 | set_rtc = pxa_set_rtc; |
129 | 130 | ||
@@ -132,12 +133,12 @@ static void __init pxa_timer_init(void) | |||
132 | do_settimeofday(&tv); | 133 | do_settimeofday(&tv); |
133 | 134 | ||
134 | OIER = 0; /* disable any timer interrupts */ | 135 | OIER = 0; /* disable any timer interrupts */ |
135 | OSCR = LATCH*2; /* push OSCR out of the way */ | ||
136 | OSMR0 = LATCH; /* set initial match */ | ||
137 | OSSR = 0xf; /* clear status on all timers */ | 136 | OSSR = 0xf; /* clear status on all timers */ |
138 | setup_irq(IRQ_OST0, &pxa_timer_irq); | 137 | setup_irq(IRQ_OST0, &pxa_timer_irq); |
138 | local_irq_save(flags); | ||
139 | OIER = OIER_E0; /* enable match on timer 0 to cause interrupts */ | 139 | OIER = OIER_E0; /* enable match on timer 0 to cause interrupts */ |
140 | OSCR = 0; /* initialize free-running timer */ | 140 | OSMR0 = OSCR + LATCH; /* set initial match */ |
141 | local_irq_restore(flags); | ||
141 | } | 142 | } |
142 | 143 | ||
143 | #ifdef CONFIG_NO_IDLE_HZ | 144 | #ifdef CONFIG_NO_IDLE_HZ |