summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2020-08-25 18:58:00 +1000
committerDrashna Jael're <drashna@live.com>2020-09-30 03:41:26 -0700
commita29cb23322aa3685931fad114a7c0e28774019e0 (patch)
treeb52a00934c518c304ee13aad34ee59aa8c8b3627
parenta9087f8a17ddb4e0d06f940e9598852e8033328d (diff)
Kiibohd bootloader, take 2 (#10129)
-rw-r--r--bootloader.mk15
-rw-r--r--quantum/mcu_selection.mk2
-rw-r--r--tmk_core/chibios.mk2
-rw-r--r--tmk_core/common/chibios/bootloader.c6
4 files changed, 20 insertions, 5 deletions
diff --git a/bootloader.mk b/bootloader.mk
index e516e9ff9f..d5f803f896 100644
--- a/bootloader.mk
+++ b/bootloader.mk
@@ -27,6 +27,7 @@
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
+# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
@@ -89,7 +90,19 @@ ifeq ($(strip $(BOOTLOADER)), lufa-ms)
BOOTLOADER_SIZE = 6144
FIRMWARE_FORMAT = bin
endif
-
ifdef BOOTLOADER_SIZE
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
endif
+
+ifeq ($(strip $(BOOTLOADER)), kiibohd)
+ OPT_DEFS += -DBOOTLOADER_KIIBOHD
+ ifeq ($(strip $(MCU_ORIG)), MK20DX128)
+ MCU_LDSCRIPT = MK20DX128BLDR4
+ endif
+ ifeq ($(strip $(MCU_ORIG)), MK20DX256)
+ MCU_LDSCRIPT = MK20DX256BLDR8
+ endif
+
+ DFU_ARGS = -d 1C11:B007
+ DFU_SUFFIX_ARGS = -v 1C11 -p B007
+endif
diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk
index 96807be707..ae3e302ddf 100644
--- a/quantum/mcu_selection.mk
+++ b/quantum/mcu_selection.mk
@@ -1,3 +1,5 @@
+MCU_ORIG := $(MCU)
+
ifneq ($(findstring MKL26Z64, $(MCU)),)
# Cortex version
MCU = cortex-m0plus
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index a218488a19..2bd53f0dc8 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -386,7 +386,7 @@ bin: $(BUILD_DIR)/$(TARGET).bin sizeafter
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
ifneq ($(strip $(PROGRAM_CMD)),)
$(PROGRAM_CMD)
-else ifeq ($(strip $(BOOTLOADER)),dfu)
+else ifeq ($(strip $(BOOTLOADER)),kiibohd)
$(call EXEC_DFU_UTIL)
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
$(call EXEC_TEENSY)
diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c
index 743448ee18..7b2cf5c435 100644
--- a/tmk_core/common/chibios/bootloader.c
+++ b/tmk_core/common/chibios/bootloader.c
@@ -82,7 +82,7 @@ void enter_bootloader_mode_if_requested(void) {
#elif defined(KL2x) || defined(K20x) // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS
/* Kinetis */
-# if defined(KIIBOHD_BOOTLOADER)
+# if defined(BOOTLOADER_KIIBOHD)
/* Kiibohd Bootloader (MCHCK and Infinity KB) */
# define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000
const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";
@@ -92,14 +92,14 @@ void bootloader_jump(void) {
SCB->AIRCR = SCB_AIRCR_VECTKEY_WRITEMAGIC | SCB_AIRCR_SYSRESETREQ_Msk;
}
-# else /* defined(KIIBOHD_BOOTLOADER) */
+# else /* defined(BOOTLOADER_KIIBOHD) */
/* Default for Kinetis - expecting an ARM Teensy */
# include "wait.h"
void bootloader_jump(void) {
wait_ms(100);
__BKPT(0);
}
-# endif /* defined(KIIBOHD_BOOTLOADER) */
+# endif /* defined(BOOTLOADER_KIIBOHD) */
#else /* neither STM32 nor KINETIS */
__attribute__((weak)) void bootloader_jump(void) {}