Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28087
b: refs/heads/master
c: 2a6f990
h: refs/heads/master
i:
  28085: 422049a
  28083: 5997ca3
  28079: 533f65b
v: v3
  • Loading branch information
Andrew Victor authored and Russell King committed Jun 19, 2006
1 parent 9a82443 commit 26a4b43
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 15 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: 963151f2471d0e6475d8b2d3a005417aec1766f7
refs/heads/master: 2a6f9902c6a799a9c0218b37e39b75690c3b9a70
44 changes: 30 additions & 14 deletions trunk/arch/arm/mach-at91rm9200/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,20 @@ static struct irqaction at91rm9200_timer_irq = {
.handler = at91rm9200_timer_interrupt
};

void at91rm9200_timer_reset(void)
{
last_crtr = 0;

/* Real time counter incremented every 30.51758 microseconds */
at91_sys_write(AT91_ST_RTMR, 1);

/* Set Period Interval timer */
at91_sys_write(AT91_ST_PIMR, LATCH);

/* Enable Period Interval Timer interrupt */
at91_sys_write(AT91_ST_IER, AT91_ST_PITS);
}

/*
* Set up timer interrupt.
*/
Expand All @@ -99,28 +113,30 @@ void __init at91rm9200_timer_init(void)
at91_sys_write(AT91_ST_IDR, AT91_ST_PITS | AT91_ST_WDOVF | AT91_ST_RTTINC | AT91_ST_ALMS);
(void) at91_sys_read(AT91_ST_SR); /* Clear any pending interrupts */

/*
* Make IRQs happen for the system timer.
*/
/* Make IRQs happen for the system timer */
setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq);

/* Set initial alarm to 0 */
at91_sys_write(AT91_ST_RTAR, 0);

/* Real time counter incremented every 30.51758 microseconds */
at91_sys_write(AT91_ST_RTMR, 1);

/* Set Period Interval timer */
at91_sys_write(AT91_ST_PIMR, LATCH);

/* Change the kernel's 'tick' value to 10009 usec. (the default is 10000) */
tick_usec = (LATCH * 1000000) / CLOCK_TICK_RATE;

/* Enable Period Interval Timer interrupt */
at91_sys_write(AT91_ST_IER, AT91_ST_PITS);
/* Initialize and enable the timer interrupt */
at91rm9200_timer_reset();
}

#ifdef CONFIG_PM
static void at91rm9200_timer_suspend(void)
{
/* disable Period Interval Timer interrupt */
at91_sys_write(AT91_ST_IDR, AT91_ST_PITS);
}
#else
#define at91rm9200_timer_suspend NULL
#endif

struct sys_timer at91rm9200_timer = {
.init = at91rm9200_timer_init,
.offset = at91rm9200_gettimeoffset,
.suspend = at91rm9200_timer_suspend,
.resume = at91rm9200_timer_reset,
};

0 comments on commit 26a4b43

Please sign in to comment.