Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 44580
b: refs/heads/master
c: 1a815ae
h: refs/heads/master
v: v3
  • Loading branch information
Sascha Hauer authored and Russell King committed Dec 13, 2006
1 parent 17aef9b commit 0a71986
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c80204e5d67d1452ac0b761d980f1651dc2c66dc
refs/heads/master: 1a815aed1e03c73fcd0390109c7da9c69dc97490
42 changes: 30 additions & 12 deletions trunk/arch/arm/mach-netx/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,14 @@

#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/clocksource.h>

#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/mach/time.h>
#include <asm/arch/netx-regs.h>

/*
* Returns number of us since last clock interrupt. Note that interrupts
* will have been disabled by do_gettimeoffset()
*/
static unsigned long netx_gettimeoffset(void)
{
return readl(NETX_GPIO_COUNTER_CURRENT(0)) / 100;
}

/*
* IRQ handler for the timer
*/
Expand All @@ -43,6 +36,7 @@ netx_timer_interrupt(int irq, void *dev_id)
write_seqlock(&xtime_lock);

timer_tick();

write_sequnlock(&xtime_lock);

/* acknowledge interrupt */
Expand All @@ -51,13 +45,26 @@ netx_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}


static struct irqaction netx_timer_irq = {
.name = "NetX Timer Tick",
.flags = IRQF_DISABLED | IRQF_TIMER,
.handler = netx_timer_interrupt,
};

cycle_t netx_get_cycles(void)
{
return readl(NETX_GPIO_COUNTER_CURRENT(1));
}

static struct clocksource clocksource_netx = {
.name = "netx_timer",
.rating = 200,
.read = netx_get_cycles,
.mask = CLOCKSOURCE_MASK(32),
.shift = 20,
.is_continuous = 1,
};

/*
* Set up timer interrupt
*/
Expand All @@ -80,9 +87,20 @@ static void __init netx_timer_init(void)
NETX_GPIO_COUNTER_CTRL(0));

setup_irq(NETX_IRQ_TIMER0, &netx_timer_irq);

/* Setup timer one for clocksource */
writel(0, NETX_GPIO_COUNTER_CTRL(1));
writel(0, NETX_GPIO_COUNTER_CURRENT(1));
writel(0xFFFFFFFF, NETX_GPIO_COUNTER_MAX(1));

writel(NETX_GPIO_COUNTER_CTRL_RUN,
NETX_GPIO_COUNTER_CTRL(1));

clocksource_netx.mult =
clocksource_hz2mult(CLOCK_TICK_RATE, clocksource_netx.shift);
clocksource_register(&clocksource_netx);
}

struct sys_timer netx_timer = {
.init = netx_timer_init,
.offset = netx_gettimeoffset,
.init = netx_timer_init,
};

0 comments on commit 0a71986

Please sign in to comment.