aboutsummaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-07-06 22:48:19 -0400
committerJack Humbert <jack.humb@gmail.com>2016-07-06 22:48:19 -0400
commita4bf46f9b1d0a0be0cecb2cd0f0d941aa7c71bd3 (patch)
treed06043ac6fe7003ba2e9d7c3ea30378b6a51c3d5 /tmk_core
parentc88207884b5fb16c8955b54b4331fc605158b9f2 (diff)
downloadfirmware-a4bf46f9b1d0a0be0cecb2cd0f0d941aa7c71bd3.tar.gz
firmware-a4bf46f9b1d0a0be0cecb2cd0f0d941aa7c71bd3.tar.bz2
firmware-a4bf46f9b1d0a0be0cecb2cd0f0d941aa7c71bd3.zip
default keymap, reset sorted out for now, added serial to makefile
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/common/avr/bootloader.c54
1 files changed, 37 insertions, 17 deletions
diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c
index 7c744e8c7..fb9bf2d1c 100644
--- a/tmk_core/common/avr/bootloader.c
+++ b/tmk_core/common/avr/bootloader.c
@@ -73,26 +73,46 @@ uint32_t reset_key __attribute__ ((section (".noinit")));
/* initialize MCU status by watchdog reset */
void bootloader_jump(void) {
-#ifdef PROTOCOL_LUFA
- USB_Disable();
- cli();
- _delay_ms(2000);
-#endif
+ #ifndef CATERINA_BOOTLOADER
-#ifdef PROTOCOL_PJRC
- cli();
- UDCON = 1;
- USBCON = (1<<FRZCLK);
- UCSR1B = 0;
- _delay_ms(5);
-#endif
+ #ifdef PROTOCOL_LUFA
+ USB_Disable();
+ cli();
+ _delay_ms(2000);
+ #endif
- // watchdog reset
- reset_key = BOOTLOADER_RESET_KEY;
- wdt_enable(WDTO_250MS);
- for (;;);
-}
+ #ifdef PROTOCOL_PJRC
+ cli();
+ UDCON = 1;
+ USBCON = (1<<FRZCLK);
+ UCSR1B = 0;
+ _delay_ms(5);
+ #endif
+
+ // watchdog reset
+ reset_key = BOOTLOADER_RESET_KEY;
+ wdt_enable(WDTO_250MS);
+ for (;;);
+
+ #else
+ // this block may be optional
+ // TODO: figure it out
+
+ uint16_t *const bootKeyPtr = (uint16_t *)0x0800;
+ // Value used by Caterina bootloader use to determine whether to run the
+ // sketch or the bootloader programmer.
+ uint16_t bootKey = 0x7777;
+
+ *bootKeyPtr = bootKey;
+
+ // setup watchdog timeout
+ wdt_enable(WDTO_60MS);
+
+ while(1) {} // wait for watchdog timer to trigger
+
+ #endif
+}
/* this runs before main() */
void bootloader_jump_after_watchdog_reset(void) __attribute__ ((used, naked, section (".init3")));