diff options
| author | Thom Johansen <thomj@rockbox.org> | 2005-12-12 13:53:22 +0000 |
|---|---|---|
| committer | Thom Johansen <thomj@rockbox.org> | 2005-12-12 13:53:22 +0000 |
| commit | 544b03cf9abafc080e10a91f65046eda540ff5ae (patch) | |
| tree | 1fabed08230448393c5cab1f20f1a845f3ab883d /firmware/kernel.c | |
| parent | 07a2ad2a2246c649ec86c2adb077ec9ed3cfef11 (diff) | |
| download | rockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.zip rockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.tar.gz rockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.tar.bz2 rockbox-544b03cf9abafc080e10a91f65046eda540ff5ae.tar.xz | |
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.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c index b9aee94..6166437 100644 --- a/firmware/kernel.c +++ b/firmware/kernel.c @@ -25,9 +25,7 @@ #include "system.h" #include "panic.h" -#if (CONFIG_CPU != PP5020) long current_tick = 0; -#endif static void (*tick_funcs[MAX_NUM_TICK_TASKS])(void); @@ -319,9 +317,36 @@ void tick_start(unsigned int interval_in_ms) #elif CONFIG_CPU == PP5020 -void tick_start(unsigned int interval_in_ms) { - /* TODO: Implement tick_start */ - (void)interval_in_ms; +#define USECS_PER_INT 0x2710 + +void TIMER1(void) +{ + int i; + + PP5020_TIMER1_ACK; + /* 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++; + wake_up_thread(); +} + +void tick_start(unsigned int interval_in_ms) +{ + /* TODO: use interval_in_ms to set timer periode */ + (void)interval_in_ms; + PP5020_TIMER1 = 0x0; + PP5020_TIMER1_ACK; + /* enable timer, period, trigger value 0x2710 -> 100Hz */ + PP5020_TIMER1 = 0xc0000000 | USECS_PER_INT; + /* unmask interrupt source */ + PP5020_CPU_INT_EN = PP5020_TIMER1_MASK; } #endif |