diff options
Diffstat (limited to 'quantum/keyboard.c')
| -rw-r--r-- | quantum/keyboard.c | 60 | 
1 files changed, 40 insertions, 20 deletions
| diff --git a/quantum/keyboard.c b/quantum/keyboard.c index 86a1a9fea3..9bdf6e6344 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -20,7 +20,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #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 <http://www.gnu.org/licenses/>.  #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 @@ -615,7 +635,7 @@ void quantum_task(void) {  #endif  #ifdef DIP_SWITCH_ENABLE -    dip_switch_read(false); +    dip_switch_task();  #endif  #ifdef AUTO_SHIFT_ENABLE | 
