summaryrefslogtreecommitdiff
path: root/src/cc1111/ao_timer.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-05-13 22:46:19 -0700
committerKeith Packard <keithp@keithp.com>2014-05-13 22:46:19 -0700
commit940ec6a2d5b054f68da39945a00f4d1b36d1b318 (patch)
tree390739c6dc5bf7a7a9940db284613c7a7b15785d /src/cc1111/ao_timer.c
parentfeb0b5f8b28767197f87e5818812d6640c1f40e6 (diff)
altos/cc1111: Errata fix isn't needed for discontinued products
And, doesn't fit in memory for some of them, so don't compile it. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/cc1111/ao_timer.c')
-rw-r--r--src/cc1111/ao_timer.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/cc1111/ao_timer.c b/src/cc1111/ao_timer.c
index d681f51b..2fbc6621 100644
--- a/src/cc1111/ao_timer.c
+++ b/src/cc1111/ao_timer.c
@@ -83,6 +83,11 @@ ao_timer_init(void)
T1CTL = T1CTL_MODE_MODULO | T1CTL_DIV_8;
}
+#ifndef NEEDS_CC1111_CLOCK_HACK
+#define NEEDS_CC1111_CLOCK_HACK 1
+#endif
+
+#if NEEDS_CC1111_CLOCK_HACK
static void
ao_clock_delay(void)
{
@@ -91,6 +96,7 @@ ao_clock_delay(void)
while (--i)
ao_arch_nop();
}
+#endif
/*
* AltOS always cranks the clock to the max frequency
@@ -98,6 +104,7 @@ ao_clock_delay(void)
void
ao_clock_init(void)
{
+#if NEEDS_CC1111_CLOCK_HACK
/* Power up both oscillators */
SLEEP &= ~(SLEEP_OSC_PD);
@@ -115,16 +122,18 @@ ao_clock_init(void)
*/
ao_clock_delay();
+#endif
/* Switch system clock to crystal oscilator */
CLKCON = (CLKCON & ~CLKCON_OSC_MASK) | (CLKCON_OSC_XTAL);
+ /* Wait for the HFRC oscillator to be stable */
+ while (!(SLEEP & SLEEP_XOSC_STB))
+ ;
+
/* Power down the unused HFRC oscillator */
SLEEP |= SLEEP_OSC_PD;
- /* Wait for HFRC to power down */
- while ((SLEEP & SLEEP_HFRC_STB) != 0)
- ;
/* Crank up the timer tick and system clock speed */
CLKCON = ((CLKCON & ~(CLKCON_TICKSPD_MASK | CLKCON_CLKSPD_MASK)) |
(CLKCON_TICKSPD_1 | CLKCON_CLKSPD_1));