summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/drashna/bootmagic_better.c56
-rw-r--r--users/drashna/drashna.c54
-rw-r--r--users/drashna/rules.mk4
3 files changed, 60 insertions, 54 deletions
diff --git a/users/drashna/bootmagic_better.c b/users/drashna/bootmagic_better.c
new file mode 100644
index 0000000000..4932e25f1d
--- /dev/null
+++ b/users/drashna/bootmagic_better.c
@@ -0,0 +1,56 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+#include "bootmagic_lite.h"
+
+void bootmagic_lite(void) {
+ bool perform_reset = false;
+ // We need multiple scans because debouncing can't be turned off.
+ matrix_scan();
+#if defined(DEBOUNCE) && DEBOUNCE > 0
+ wait_ms(DEBOUNCE * 2);
+#else
+ wait_ms(30);
+#endif
+ matrix_scan();
+
+ // If the configured key (commonly Esc) is held down on power up,
+ // reset the EEPROM valid state and jump to bootloader.
+ // This isn't very generalized, but we need something that doesn't
+ // rely on user's keymaps in firmware or EEPROM.
+ uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN;
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
+ uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN;
+#endif
+
+#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
+ if (!is_keyboard_left()) {
+ row = BOOTMAGIC_LITE_ROW_RIGHT;
+ col = BOOTMAGIC_LITE_COLUMN_RIGHT;
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT)
+ row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT;
+ col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT;
+# endif
+ }
+#endif
+
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
+ if (matrix_get_row(row_e) & (1 << col_e)) {
+ eeconfig_disable();
+ perform_reset = true;
+ }
+#endif
+ if (matrix_get_row(row) & (1 << col)) {
+ perform_reset = true;
+ }
+#ifdef STM32F411xE
+ if (!readPin(A0)) {
+ perform_reset = true;
+ }
+#endif
+
+ if (perform_reset) {
+ bootloader_jump();
+ }
+}
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 85f47c8cb4..91f3a06b7c 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -2,9 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "drashna.h"
-#ifdef __AVR__
-# include <avr/wdt.h>
-#endif
userspace_config_t userspace_config;
@@ -132,54 +129,3 @@ void keyboard_post_init_i2c(void) {
scan_timer = timer_read();
}
#endif
-
-void bootmagic_lite(void) {
- bool perform_reset = false;
- // We need multiple scans because debouncing can't be turned off.
- matrix_scan();
-#if defined(DEBOUNCE) && DEBOUNCE > 0
- wait_ms(DEBOUNCE * 2);
-#else
- wait_ms(30);
-#endif
- matrix_scan();
-
- // If the configured key (commonly Esc) is held down on power up,
- // reset the EEPROM valid state and jump to bootloader.
- // This isn't very generalized, but we need something that doesn't
- // rely on user's keymaps in firmware or EEPROM.
- uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN;
-#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
- uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN;
-#endif
-
-#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
- if (!is_keyboard_left()) {
- row = BOOTMAGIC_LITE_ROW_RIGHT;
- col = BOOTMAGIC_LITE_COLUMN_RIGHT;
-#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT)
- row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT;
- col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT;
-# endif
- }
-#endif
-
-#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
- if (matrix_get_row(row_e) & (1 << col_e)) {
- eeconfig_disable();
- perform_reset = true;
- }
-#endif
- if (matrix_get_row(row) & (1 << col)) {
- perform_reset = true;
- }
-#ifdef STM32F411xE
- if (!readPin(A0)) {
- perform_reset = true;
- }
-#endif
-
- if (perform_reset) {
- bootloader_jump();
- }
-}
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 13ed761ba8..5644aad2c4 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -133,3 +133,7 @@ ifeq ($(strip $(AUTOCORRECTION_ENABLE)), yes)
$(shell touch $(USER_PATH)/keyrecords/autocorrection/autocorrection.c)
OPT_DEFS += -DAUTOCORRECTION_ENABLE
endif
+
+ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes)
+ SRC += bootmagic_better.c
+endif