Add libusb support and lots more examples
[fw/altos] / ccdbg-command.c
index 3e42d48e2dd8066bd890c4e80482b75ef9d81845..f79d3621726a78ac36d996d79ae88c3fb39be83a 100644 (file)
 #include "ccdbg.h"
 
 void
 #include "ccdbg.h"
 
 void
-ccdbg_reset(struct ccdbg *dbg)
+ccdbg_debug_mode(struct ccdbg *dbg)
 {
        /* force two rising clocks while holding RESET_N low */
 {
        /* force two rising clocks while holding RESET_N low */
-       ccdbg_clock_1_0(dbg);
-       cccp_write(dbg, CC_RESET_N, 0);
-       ccdbg_clock_0_1(dbg);
-       ccdbg_clock_1_0(dbg);
-       ccdbg_clock_0_1(dbg);
-       cccp_write(dbg, CC_RESET_N, CC_RESET_N);
+       ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_RESET_N|CC_CLOCK, 0); ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_CLOCK, CC_CLOCK);    ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_CLOCK, 0);           ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_CLOCK, CC_CLOCK);     ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_RESET_N, CC_RESET_N); ccdbg_half_clock(dbg);
+}
+
+void
+ccdbg_reset(struct ccdbg *dbg)
+{
+       ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_RESET_N, 0);                ccdbg_half_clock(dbg);
+       ccdbg_write(dbg, CC_RESET_N, CC_RESET_N);
 }
 
 uint8_t
 }
 
 uint8_t
@@ -41,3 +49,10 @@ ccdbg_rd_config(struct ccdbg *dbg)
 {
        return ccdbg_cmd_write_read8(dbg, CC_RD_CONFIG, NULL, 0);
 }
 {
        return ccdbg_cmd_write_read8(dbg, CC_RD_CONFIG, NULL, 0);
 }
+
+uint16_t
+ccdbg_get_chip_id(struct ccdbg *dbg)
+{
+       return ccdbg_cmd_write_read16(dbg, CC_GET_CHIP_ID, NULL, 0);
+}
+