altos: Share cc1111 reset/debug-start code
authorKeith Packard <keithp@keithp.com>
Fri, 30 Nov 2012 23:10:59 +0000 (15:10 -0800)
committerKeith Packard <keithp@keithp.com>
Fri, 30 Nov 2012 23:10:59 +0000 (15:10 -0800)
These sequences are very similar, differing only in whether the dbg
clock line is toggled while holding reset low for a while.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/cc1111/ao_dbg.c

index fd1fdabfa1c450f487b144d3f5d548cc63624cb5..4e534697021d71eab0266c0e977ac5c207ea4cf1 100644 (file)
@@ -201,43 +201,31 @@ ao_dbg_send_bits_delay(uint8_t msk, uint8_t val)
 }
 
 void
-ao_dbg_debug_mode(void)
+ao_dbg_do_reset(uint8_t clock_up)
 {
        ao_dbg_set_pins();
        ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|    0    );
+       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, clock_up |DBG_DATA|    0    );
        ao_delay(AO_RESET_LOW_DELAY);
        ao_dbg_send_bits      (DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|    0    );
+       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, clock_up |DBG_DATA|    0    );
        ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N,     0    |DBG_DATA|DBG_RESET_N);
-       ao_delay(AO_RESET_HIGH_DELAY);
-}
-
-void
-ao_dbg_reset(void)
-{
-       ao_dbg_set_pins();
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_delay(AO_RESET_LOW_DELAY);
-       ao_dbg_send_bits      (DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|    0    );
-       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N);
+       ao_dbg_send_bits_delay(DBG_CLOCK|DBG_DATA|DBG_RESET_N, clock_up |DBG_DATA|DBG_RESET_N);
        ao_delay(AO_RESET_HIGH_DELAY);
 }
 
 static void
 debug_enable(void)
 {
-       ao_dbg_debug_mode();
+       /* toggle clock line while holding reset low */
+       ao_dbg_do_reset(0);
 }
 
 static void
 debug_reset(void)
 {
-       ao_dbg_reset();
+       /* hold clock high while holding reset low */
+       ao_dbg_do_reset(DBG_CLOCK);
 }
 
 static void