summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tcc77x/timer-tcc77x.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tcc77x/timer-tcc77x.c')
-rw-r--r--firmware/target/arm/tcc77x/timer-tcc77x.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/firmware/target/arm/tcc77x/timer-tcc77x.c b/firmware/target/arm/tcc77x/timer-tcc77x.c
new file mode 100644
index 0000000000..32010b2d25
--- /dev/null
+++ b/firmware/target/arm/tcc77x/timer-tcc77x.c
@@ -0,0 +1,79 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8* $Id$
9*
10* Copyright (C) 2008 by Rob Purchase
11*
12* All files in this archive are subject to the GNU General Public License.
13* See the file COPYING in the source tree root for full license agreement.
14*
15* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16* KIND, either express or implied.
17*
18****************************************************************************/
19
20#include "config.h"
21#include "cpu.h"
22#include "system.h"
23#include "timer.h"
24#include "logf.h"
25
26/* Use the TC32 counter [sourced by Xin:12Mhz] for this timer, as it's the
27 only one that allows a 32-bit counter (Timer0-5 are 16/20 bit only). */
28
29bool __timer_set(long cycles, bool start)
30{
31 #warning function not implemented
32
33 (void)cycles;
34 (void)start;
35 return false;
36}
37
38bool __timer_register(void)
39{
40 #warning function not implemented
41
42 return false;
43}
44
45void __timer_unregister(void)
46{
47 #warning function not implemented
48}
49
50
51/* Timer interrupt processing - all timers (inc. tick) have a single IRQ */
52
53extern void (*tick_funcs[MAX_NUM_TICK_TASKS])(void);
54
55void TIMER(void)
56{
57 if (TIREQ & TF0) /* Timer0 reached ref value */
58 {
59 int i;
60
61 /* Run through the list of tick tasks */
62 for(i = 0; i < MAX_NUM_TICK_TASKS; i++)
63 {
64 if(tick_funcs[i])
65 {
66 tick_funcs[i]();
67 }
68 }
69 current_tick++;
70
71 /* reset Timer 0 IRQ & ref flags */
72 TIREQ |= TI0 | TF0;
73 }
74
75 if (TC32IRQ & (1<<3)) /* end of TC32 prescale */
76 {
77 /* dispatch timer */
78 }
79}