git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
arm
/
mach-clps711x
/
time.c
diff --git
a/arch/arm/mach-clps711x/time.c
b/arch/arm/mach-clps711x/time.c
index
58da84e
..
428493d
100644
(file)
--- a/
arch/arm/mach-clps711x/time.c
+++ b/
arch/arm/mach-clps711x/time.c
@@
-19,6
+19,7
@@
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
#include <linux/init.h>
#include <linux/interrupt.h>
+#include <linux/irq.h>
#include <linux/sched.h>
#include <asm/hardware.h>
#include <linux/sched.h>
#include <asm/hardware.h>
@@
-47,19
+48,21
@@
static unsigned long clps711x_gettimeoffset(void)
* IRQ handler for the timer
*/
static irqreturn_t
* IRQ handler for the timer
*/
static irqreturn_t
-p720t_timer_interrupt(int irq, void *dev_id
, struct pt_regs *regs
)
+p720t_timer_interrupt(int irq, void *dev_id)
{
{
- timer_tick(regs);
+ write_seqlock(&xtime_lock);
+ timer_tick();
+ write_sequnlock(&xtime_lock);
return IRQ_HANDLED;
}
static struct irqaction clps711x_timer_irq = {
.name = "CLPS711x Timer Tick",
return IRQ_HANDLED;
}
static struct irqaction clps711x_timer_irq = {
.name = "CLPS711x Timer Tick",
- .flags =
SA_INTERRUPT
,
- .handler = p720t_timer_interrupt
+ .flags =
IRQF_DISABLED | IRQF_TIMER
,
+ .handler = p720t_timer_interrupt
,
};
};
-
void __init clps711x_init_time
(void)
+
static void __init clps711x_timer_init
(void)
{
struct timespec tv;
unsigned int syscon;
{
struct timespec tv;
unsigned int syscon;
@@
-71,9
+74,13
@@
void __init clps711x_init_time(void)
clps_writel(LATCH-1, TC2D); /* 512kHz / 100Hz - 1 */
setup_irq(IRQ_TC2OI, &clps711x_timer_irq);
clps_writel(LATCH-1, TC2D); /* 512kHz / 100Hz - 1 */
setup_irq(IRQ_TC2OI, &clps711x_timer_irq);
- gettimeoffset = clps711x_gettimeoffset;
tv.tv_nsec = 0;
tv.tv_sec = clps_readl(RTCDR);
do_settimeofday(&tv);
}
tv.tv_nsec = 0;
tv.tv_sec = clps_readl(RTCDR);
do_settimeofday(&tv);
}
+
+struct sys_timer clps711x_timer = {
+ .init = clps711x_timer_init,
+ .offset = clps711x_gettimeoffset,
+};