Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249922
b: refs/heads/master
c: 23828a7
h: refs/heads/master
v: v3
  • Loading branch information
Russell King committed May 23, 2011
1 parent 3a5f7df commit 95a80e5
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 9 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: 57cc4f7de2b896ca79185e337eaf7ff9906c4656
refs/heads/master: 23828a7a976eb8dbe3b5f4e83584c3fe814b295b
16 changes: 8 additions & 8 deletions trunk/arch/arm/common/timer-sp.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@

#include <asm/hardware/arm_timer.h>

/*
* These timers are currently always setup to be clocked at 1MHz.
*/
#define TIMER_FREQ_KHZ (1000)
#define TIMER_RELOAD (TIMER_FREQ_KHZ * 1000 / HZ)

static long __init sp804_get_clock_rate(const char *name)
{
struct clk *clk;
Expand Down Expand Up @@ -84,6 +78,7 @@ void __init sp804_clocksource_init(void __iomem *base, const char *name)


static void __iomem *clkevt_base;
static unsigned long clkevt_reload;

/*
* IRQ handler for the timer
Expand All @@ -109,7 +104,7 @@ static void sp804_set_mode(enum clock_event_mode mode,

switch (mode) {
case CLOCK_EVT_MODE_PERIODIC:
writel(TIMER_RELOAD, clkevt_base + TIMER_LOAD);
writel(clkevt_reload, clkevt_base + TIMER_LOAD);
ctrl |= TIMER_CTRL_PERIODIC | TIMER_CTRL_ENABLE;
break;

Expand Down Expand Up @@ -158,12 +153,17 @@ void __init sp804_clockevents_init(void __iomem *base, unsigned int irq,
const char *name)
{
struct clock_event_device *evt = &sp804_clockevent;
long rate = sp804_get_clock_rate(name);

if (rate < 0)
return;

clkevt_base = base;
clkevt_reload = DIV_ROUND_CLOSEST(rate, HZ);

evt->name = name;
evt->irq = irq;
evt->mult = div_sc(TIMER_FREQ_KHZ, NSEC_PER_MSEC, evt->shift);
evt->mult = div_sc(rate, NSEC_PER_SEC, evt->shift);
evt->max_delta_ns = clockevent_delta2ns(0xffffffff, evt);
evt->min_delta_ns = clockevent_delta2ns(0xf, evt);

Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/arm/mach-vexpress/ct-ca9x4.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ static struct clk_lookup lookups[] = {
{ /* CLCD */
.dev_id = "ct:clcd",
.clk = &osc1_clk,
}, { /* SP804 timers */
.dev_id = "sp804",
.con_id = "ct-timer0",
.clk = &ct_sp804_clk,
}, { /* SP804 timers */
.dev_id = "sp804",
.con_id = "ct-timer1",
Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/arm/mach-vexpress/v2m.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,10 @@ static struct clk_lookup v2m_lookups[] = {
}, { /* CLCD */
.dev_id = "mb:clcd",
.clk = &osc1_clk,
}, { /* SP804 timers */
.dev_id = "sp804",
.con_id = "v2m-timer0",
.clk = &v2m_sp804_clk,
}, { /* SP804 timers */
.dev_id = "sp804",
.con_id = "v2m-timer1",
Expand Down

0 comments on commit 95a80e5

Please sign in to comment.