summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-07-06 21:36:32 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-07-06 21:36:32 +0000
commit4ae87c8b8ab7ddbd286f5288adaddcaf0a187e31 (patch)
treed3880b9f53a5c38d2211a1b8812724bf96913c4c /firmware/kernel.c
parentcbed7a2cd21bb2715b39ebcd3015147a9d7ff3c2 (diff)
downloadrockbox-4ae87c8b8ab7ddbd286f5288adaddcaf0a187e31.zip
rockbox-4ae87c8b8ab7ddbd286f5288adaddcaf0a187e31.tar.gz
rockbox-4ae87c8b8ab7ddbd286f5288adaddcaf0a187e31.tar.bz2
rockbox-4ae87c8b8ab7ddbd286f5288adaddcaf0a187e31.tar.xz
Gigabeat: Add timer functionality. Rework tick timer setup to be exactly 100Hz. Metronome should work now but some pcm changes are needed to have faster tocks work correctly (in the works).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13806 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c36
1 files changed, 1 insertions, 35 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index 2d4ccde..b1a4e62 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -29,7 +29,7 @@
volatile long current_tick NOCACHEDATA_ATTR = 0;
#endif
-static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
+void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
/* This array holds all queues that are initiated. It is used for broadcast. */
static struct event_queue *all_queues[32] NOCACHEBSS_ATTR;
@@ -708,40 +708,6 @@ void tick_start(unsigned int interval_in_ms)
TIMER0.ctrl |= 0x80; /* Enable the counter */
}
-#elif CONFIG_CPU == S3C2440
-void tick_start(unsigned int interval_in_ms)
-{
- TCON &= ~(1 << 20); // stop timer 4
- // TODO: this constant depends on dividers settings inherited from
- // firmware. Set them explicitly somwhere.
- TCNTB4 = 12193 * interval_in_ms / 1000;
- TCON |= 1 << 21; // set manual bit
- TCON &= ~(1 << 21); // reset manual bit
- TCON |= 1 << 22; //interval mode
- TCON |= (1 << 20); // start timer 4
-
- INTMOD &= ~(1 << 14); // timer 4 to IRQ mode
- INTMSK &= ~(1 << 14); // timer 4 unmask interrupts
-}
-
-void TIMER4(void)
-{
- int i;
-
- SRCPND = TIMER4_MASK;
- INTPND = TIMER4_MASK;
-
- /* Run through the list of tick tasks */
- for(i = 0; i < MAX_NUM_TICK_TASKS; i++)
- {
- if(tick_funcs[i])
- {
- tick_funcs[i]();
- }
- }
-
- current_tick++;
-}
#endif
int tick_add_task(void (*f)(void))