diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index a6193991f8..513a3678a9 100644 --- a/builddefs/common_features.mk +++ b/builddefs/common_features.mk @@ -608,24 +608,9 @@ ifeq ($(strip $(VIA_ENABLE)), yes) TRI_LAYER_ENABLE := yes endif -VALID_MAGIC_TYPES := yes -BOOTMAGIC_ENABLE ?= no -ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) - ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),) - $(call CATASTROPHIC_ERROR,Invalid BOOTMAGIC_ENABLE,BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic) - endif - ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) - OPT_DEFS += -DBOOTMAGIC_LITE - QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c - endif -endif -COMMON_VPATH += $(QUANTUM_DIR)/bootmagic -QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c - VALID_CUSTOM_MATRIX_TYPES:= yes lite no CUSTOM_MATRIX ?= no - ifneq ($(strip $(CUSTOM_MATRIX)), yes) ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid CUSTOM_MATRIX,CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type) diff --git a/builddefs/generic_features.mk b/builddefs/generic_features.mk index 9c86958625..dc34a64230 100644 --- a/builddefs/generic_features.mk +++ b/builddefs/generic_features.mk @@ -21,6 +21,7 @@ SPACE_CADET_ENABLE ?= yes GENERIC_FEATURES = \ AUTO_SHIFT \ AUTOCORRECT \ + BOOTMAGIC \ CAPS_WORD \ COMBO \ COMMAND \ diff --git a/quantum/bootmagic/bootmagic_lite.c b/quantum/bootmagic/bootmagic.c similarity index 100% rename from quantum/bootmagic/bootmagic_lite.c rename to quantum/bootmagic/bootmagic.c diff --git a/quantum/bootmagic/bootmagic.h b/quantum/bootmagic/bootmagic.h index db826025ce..4b5f5f7c5e 100644 --- a/quantum/bootmagic/bootmagic.h +++ b/quantum/bootmagic/bootmagic.h @@ -15,8 +15,11 @@ */ #pragma once -#if defined(BOOTMAGIC_LITE) -# include "bootmagic_lite.h" +#ifndef BOOTMAGIC_LITE_COLUMN +# define BOOTMAGIC_LITE_COLUMN 0 +#endif +#ifndef BOOTMAGIC_LITE_ROW +# define BOOTMAGIC_LITE_ROW 0 #endif void bootmagic(void); diff --git a/quantum/bootmagic/bootmagic_lite.h b/quantum/bootmagic/bootmagic_lite.h deleted file mode 100644 index 17777e6b4a..0000000000 --- a/quantum/bootmagic/bootmagic_lite.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#ifndef BOOTMAGIC_LITE_COLUMN -# define BOOTMAGIC_LITE_COLUMN 0 -#endif -#ifndef BOOTMAGIC_LITE_ROW -# define BOOTMAGIC_LITE_ROW 0 -#endif - -void bootmagic_lite(void); diff --git a/quantum/bootmagic/magic.c b/quantum/bootmagic/magic.c deleted file mode 100644 index d68df3fa58..0000000000 --- a/quantum/bootmagic/magic.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include -#include -#include "wait.h" -#include "matrix.h" -#include "bootloader.h" -#include "debug.h" -#include "keycode_config.h" -#include "host.h" -#include "action_layer.h" -#include "eeconfig.h" -#include "bootmagic.h" - -keymap_config_t keymap_config; - -__attribute__((weak)) void bootmagic(void) {} - -/** \brief Magic - * - * FIXME: Needs doc - */ -void magic(void) { - /* check signature */ - if (!eeconfig_is_enabled()) { - eeconfig_init(); - } - - /* init globals */ - debug_config.raw = eeconfig_read_debug(); - keymap_config.raw = eeconfig_read_keymap(); - - bootmagic(); - - /* read here just incase bootmagic process changed its value */ - layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer(); - default_layer_set(default_layer); - - /* Also initialize layer state to trigger callback functions for layer_state */ - layer_state_set_kb((layer_state_t)layer_state); -} diff --git a/quantum/bootmagic/magic.h b/quantum/bootmagic/magic.h deleted file mode 100644 index 2c3969b85c..0000000000 --- a/quantum/bootmagic/magic.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -void magic(void); diff --git a/quantum/keyboard.c b/quantum/keyboard.c index b5fa1a6e2e..9bdf6e6344 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -20,7 +20,6 @@ along with this program. If not, see . #include "keycode_config.h" #include "matrix.h" #include "keymap_introspection.h" -#include "magic.h" #include "host.h" #include "led.h" #include "keycode.h" @@ -33,6 +32,9 @@ along with this program. If not, see . #include "sendchar.h" #include "eeconfig.h" #include "action_layer.h" +#ifdef BOOTMAGIC_ENABLE +# include "bootmagic.h" +#endif #ifdef AUDIO_ENABLE # include "audio.h" #endif @@ -370,28 +372,30 @@ void housekeeping_task(void) { housekeeping_task_user(); } -/** \brief Init tasks previously located in matrix_init_quantum +/** \brief quantum_init * - * TODO: rationalise against keyboard_init and current split role + * Init global state */ void quantum_init(void) { - magic(); - led_init_ports(); -#ifdef BACKLIGHT_ENABLE - backlight_init_ports(); -#endif -#ifdef AUDIO_ENABLE - audio_init(); -#endif -#ifdef LED_MATRIX_ENABLE - led_matrix_init(); -#endif -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_init(); -#endif -#if defined(UNICODE_COMMON_ENABLE) - unicode_input_mode_init(); + /* check signature */ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + + /* init globals */ + debug_config.raw = eeconfig_read_debug(); + keymap_config.raw = eeconfig_read_keymap(); + +#ifdef BOOTMAGIC_ENABLE + bootmagic(); #endif + + /* read here just incase bootmagic process changed its value */ + layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer(); + default_layer_set(default_layer); + + /* Also initialize layer state to trigger callback functions for layer_state */ + layer_state_set_kb((layer_state_t)layer_state); } /** \brief keyboard_init @@ -412,6 +416,22 @@ void keyboard_init(void) { #endif matrix_init(); quantum_init(); + led_init_ports(); +#ifdef BACKLIGHT_ENABLE + backlight_init_ports(); +#endif +#ifdef AUDIO_ENABLE + audio_init(); +#endif +#ifdef LED_MATRIX_ENABLE + led_matrix_init(); +#endif +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init(); +#endif +#if defined(UNICODE_COMMON_ENABLE) + unicode_input_mode_init(); +#endif #if defined(CRC_ENABLE) crc_init(); #endif diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 864488a65c..cbfbcc8140 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -16,6 +16,8 @@ #include "keycode_config.h" +keymap_config_t keymap_config; + /** \brief keycode_config * * This function is used to check a specific keycode against the bootmagic config, diff --git a/quantum/quantum.h b/quantum/quantum.h index 996e93a12f..98d848581d 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -42,7 +42,6 @@ #include "action_layer.h" #include "eeconfig.h" #include "bootloader.h" -#include "bootmagic.h" #include "timer.h" #include "sync_timer.h" #include "gpio.h" @@ -59,6 +58,10 @@ #include #include +#ifdef BOOTMAGIC_ENABLE +# include "bootmagic.h" +#endif + #ifdef DEFERRED_EXEC_ENABLE # include "deferred_exec.h" #endif