summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2005-12-12 13:53:22 +0000
committerThom Johansen <thomj@rockbox.org>2005-12-12 13:53:22 +0000
commit544b03cf9abafc080e10a91f65046eda540ff5ae (patch)
tree1fabed08230448393c5cab1f20f1a845f3ab883d /firmware/kernel.c
parent07a2ad2a2246c649ec86c2adb077ec9ed3cfef11 (diff)
downloadrockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.tar.gz
rockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.zip
Add interrupt handler for iPod. Add timer tick support. Remove temporary thread sleep solution. Remove temporary iPod current_tick solution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8224 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index b9aee94221..6166437282 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -25,9 +25,7 @@
25#include "system.h" 25#include "system.h"
26#include "panic.h" 26#include "panic.h"
27 27
28#if (CONFIG_CPU != PP5020)
29long current_tick = 0; 28long current_tick = 0;
30#endif
31 29
32static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void); 30static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
33 31
@@ -319,9 +317,36 @@ void tick_start(unsigned int interval_in_ms)
319 317
320#elif CONFIG_CPU == PP5020 318#elif CONFIG_CPU == PP5020
321 319
322void tick_start(unsigned int interval_in_ms) { 320#define USECS_PER_INT 0x2710
323 /* TODO: Implement tick_start */ 321
324 (void)interval_in_ms; 322void TIMER1(void)
323{
324 int i;
325
326 PP5020_TIMER1_ACK;
327 /* Run through the list of tick tasks */
328 for (i = 0;i < MAX_NUM_TICK_TASKS;i++)
329 {
330 if (tick_funcs[i])
331 {
332 tick_funcs[i]();
333 }
334 }
335
336 current_tick++;
337 wake_up_thread();
338}
339
340void tick_start(unsigned int interval_in_ms)
341{
342 /* TODO: use interval_in_ms to set timer periode */
343 (void)interval_in_ms;
344 PP5020_TIMER1 = 0x0;
345 PP5020_TIMER1_ACK;
346 /* enable timer, period, trigger value 0x2710 -> 100Hz */
347 PP5020_TIMER1 = 0xc0000000 | USECS_PER_INT;
348 /* unmask interrupt source */
349 PP5020_CPU_INT_EN = PP5020_TIMER1_MASK;
325} 350}
326 351
327#endif 352#endif