summaryrefslogtreecommitdiff
path: root/firmware/target/arm
diff options
context:
space:
mode:
authorBertrik Sikken <bertrik@sikken.nl>2009-06-12 21:11:45 +0000
committerBertrik Sikken <bertrik@sikken.nl>2009-06-12 21:11:45 +0000
commitd1faf8b39cf9492d1cd6f2e26b916dce0fe0354f (patch)
tree0759746bc14686cc506754ef17c8fd4bee41db5f /firmware/target/arm
parent9d2208e806a630b24c185ab9eb80c09a5ad8370f (diff)
downloadrockbox-d1faf8b39cf9492d1cd6f2e26b916dce0fe0354f.tar.gz
rockbox-d1faf8b39cf9492d1cd6f2e26b916dce0fe0354f.zip
FS#10317 - Sansa AMS 32-bit timers. Configure the timers for 32-bit mode instead of the default 16-bit mode.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21266 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm')
-rw-r--r--firmware/target/arm/as3525/kernel-as3525.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/firmware/target/arm/as3525/kernel-as3525.c b/firmware/target/arm/as3525/kernel-as3525.c
index d8f0e23d30..966d3bf349 100644
--- a/firmware/target/arm/as3525/kernel-as3525.c
+++ b/firmware/target/arm/as3525/kernel-as3525.c
@@ -61,26 +61,18 @@ void INT_TIMER2(void)
61 61
62void tick_start(unsigned int interval_in_ms) 62void tick_start(unsigned int interval_in_ms)
63{ 63{
64 int phi = 0; /* prescaler bits */
65 int prescale = 1;
66 int cycles = KERNEL_TIMER_FREQ / 1000 * interval_in_ms; 64 int cycles = KERNEL_TIMER_FREQ / 1000 * interval_in_ms;
67 65
68 while(cycles > 0x10000)
69 {
70 phi++;
71 prescale <<= 4;
72 cycles >>= 4;
73 }
74
75 if(prescale > 256)
76 panicf("%s : interval too big", __func__);
77
78 CGU_PERI |= CGU_TIMER2_CLOCK_ENABLE; /* enable peripheral */ 66 CGU_PERI |= CGU_TIMER2_CLOCK_ENABLE; /* enable peripheral */
79 VIC_INT_ENABLE |= INTERRUPT_TIMER2; /* enable interrupt */ 67 VIC_INT_ENABLE |= INTERRUPT_TIMER2; /* enable interrupt */
80 68
81 TIMER2_LOAD = TIMER2_BGLOAD = cycles; /* timer period */ 69 TIMER2_LOAD = TIMER2_BGLOAD = cycles; /* timer period */
82 70
83 /* /!\ bit 4 (reserved) must not be modified 71 /* /!\ bit 4 (reserved) must not be modified
84 * periodic mode, interrupt enabled, 16 bits counter */ 72 * periodic mode, interrupt enabled, no prescale, 32 bits counter */
85 TIMER2_CONTROL = (TIMER2_CONTROL & (1<<4)) | 0xe0 | (phi<<2); 73 TIMER2_CONTROL = (TIMER2_CONTROL & (1<<4)) |
74 TIMER_ENABLE |
75 TIMER_PERIODIC |
76 TIMER_INT_ENABLE |
77 TIMER_32_BIT;
86} 78}