diff options
| -rw-r--r-- | drivers/eeprom/eeprom_custom.c-template | 11 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_driver.c | 6 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_driver.h | 2 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_i2c.c | 8 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_spi.c | 8 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_transient.c | 9 | ||||
| -rw-r--r-- | drivers/eeprom/eeprom_wear_leveling.c | 6 | ||||
| -rw-r--r-- | keyboards/bastardkb/tbk/config.h | 20 | ||||
| -rw-r--r-- | keyboards/bastardkb/tbk/keyboard.json | 111 | ||||
| -rw-r--r-- | keyboards/bastardkb/tbk/keymaps/default/keymap.c | 60 | ||||
| -rw-r--r-- | keyboards/bastardkb/tbk/readme.md | 22 | ||||
| -rw-r--r-- | platforms/chibios/drivers/eeprom/eeprom_legacy_emulated_flash.c | 7 | ||||
| -rw-r--r-- | platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c | 6 | ||||
| -rw-r--r-- | quantum/eeconfig.c | 4 | ||||
| -rw-r--r-- | readme.md | 4 | 
15 files changed, 67 insertions, 217 deletions
| diff --git a/drivers/eeprom/eeprom_custom.c-template b/drivers/eeprom/eeprom_custom.c-template index 5f915f7fab..fb1f0a3a97 100644 --- a/drivers/eeprom/eeprom_custom.c-template +++ b/drivers/eeprom/eeprom_custom.c-template @@ -23,6 +23,17 @@ void eeprom_driver_init(void) {      /* Any initialisation code */   } +void eeprom_driver_format(bool erase) { +    /* If erase=false, then only do the absolute minimum initialisation necessary +       to make sure that the eeprom driver is usable. It doesn't need to guarantee +       that the content of the eeprom is reset to any particular value. For many +       eeprom drivers this may be a no-op. + +       If erase=true, then in addition to making sure the eeprom driver is in a +       usable state, also make sure that it is erased. +     */ +} +  void eeprom_driver_erase(void) {      /* Wipe out the EEPROM, setting values to zero */  } diff --git a/drivers/eeprom/eeprom_driver.c b/drivers/eeprom/eeprom_driver.c index 885cf21981..1f3f96f006 100644 --- a/drivers/eeprom/eeprom_driver.c +++ b/drivers/eeprom/eeprom_driver.c @@ -77,3 +77,9 @@ void eeprom_update_dword(uint32_t *addr, uint32_t value) {          eeprom_write_dword(addr, value);      }  } + +void eeprom_driver_format(bool erase) __attribute__((weak)); +void eeprom_driver_format(bool erase) { +    (void)erase; /* The default implementation assumes that the eeprom must be erased in order to be usable. */ +    eeprom_driver_erase(); +} diff --git a/drivers/eeprom/eeprom_driver.h b/drivers/eeprom/eeprom_driver.h index 74592bc8f0..0c55c497d4 100644 --- a/drivers/eeprom/eeprom_driver.h +++ b/drivers/eeprom/eeprom_driver.h @@ -16,7 +16,9 @@  #pragma once +#include <stdbool.h>  #include "eeprom.h"  void eeprom_driver_init(void); +void eeprom_driver_format(bool erase);  void eeprom_driver_erase(void); diff --git a/drivers/eeprom/eeprom_i2c.c b/drivers/eeprom/eeprom_i2c.c index 0d3d5ccbe5..d29aff5f85 100644 --- a/drivers/eeprom/eeprom_i2c.c +++ b/drivers/eeprom/eeprom_i2c.c @@ -36,6 +36,7 @@  #include "wait.h"  #include "i2c_master.h"  #include "eeprom.h" +#include "eeprom_driver.h"  #include "eeprom_i2c.h"  // #define DEBUG_EEPROM_OUTPUT @@ -62,6 +63,13 @@ void eeprom_driver_init(void) {  #endif  } +void eeprom_driver_format(bool erase) { +    /* i2c eeproms do not need to be formatted before use */ +    if (erase) { +        eeprom_driver_erase(); +    } +} +  void eeprom_driver_erase(void) {  #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)      uint32_t start = timer_read32(); diff --git a/drivers/eeprom/eeprom_spi.c b/drivers/eeprom/eeprom_spi.c index 51ba25dece..14f0afa68b 100644 --- a/drivers/eeprom/eeprom_spi.c +++ b/drivers/eeprom/eeprom_spi.c @@ -35,6 +35,7 @@  #include "timer.h"  #include "spi_master.h"  #include "eeprom.h" +#include "eeprom_driver.h"  #include "eeprom_spi.h"  #define CMD_WREN 6 @@ -92,6 +93,13 @@ void eeprom_driver_init(void) {      spi_init();  } +void eeprom_driver_format(bool erase) { +    /* spi eeproms do not need to be formatted before use */ +    if (erase) { +        eeprom_driver_erase(); +    } +} +  void eeprom_driver_erase(void) {  #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)      uint32_t start = timer_read32(); diff --git a/drivers/eeprom/eeprom_transient.c b/drivers/eeprom/eeprom_transient.c index 9dc4289c27..d9f5db9853 100644 --- a/drivers/eeprom/eeprom_transient.c +++ b/drivers/eeprom/eeprom_transient.c @@ -30,8 +30,13 @@ size_t clamp_length(intptr_t offset, size_t len) {      return len;  } -void eeprom_driver_init(void) { -    eeprom_driver_erase(); +void eeprom_driver_init(void) {} + +void eeprom_driver_format(bool erase) { +    /* The transient eeprom driver doesn't necessarily need to be formatted before use, and it always starts up filled with zeros, due to placement in the .bss section */ +    if (erase) { +        eeprom_driver_erase(); +    }  }  void eeprom_driver_erase(void) { diff --git a/drivers/eeprom/eeprom_wear_leveling.c b/drivers/eeprom/eeprom_wear_leveling.c index bd77eef35c..24ca6c3c6b 100644 --- a/drivers/eeprom/eeprom_wear_leveling.c +++ b/drivers/eeprom/eeprom_wear_leveling.c @@ -10,6 +10,12 @@ void eeprom_driver_init(void) {      wear_leveling_init();  } +void eeprom_driver_format(bool erase) { +    /* wear leveling requires the write log data structures to be erased before use. */ +    (void)erase; +    eeprom_driver_erase(); +} +  void eeprom_driver_erase(void) {      wear_leveling_erase();  } diff --git a/keyboards/bastardkb/tbk/config.h b/keyboards/bastardkb/tbk/config.h deleted file mode 100644 index 8515cac5ef..0000000000 --- a/keyboards/bastardkb/tbk/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD <[email protected]> - * - * 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 2 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 <http://www.gnu.org/licenses/>. - */ - -#pragma once - -#define MASTER_RIGHT diff --git a/keyboards/bastardkb/tbk/keyboard.json b/keyboards/bastardkb/tbk/keyboard.json deleted file mode 100644 index 90e37478a1..0000000000 --- a/keyboards/bastardkb/tbk/keyboard.json +++ /dev/null @@ -1,111 +0,0 @@ -{ -    "keyboard_name": "The Bastard Keyboard", -    "url": "https://bastardkb.com/", -    "usb": { -        "device_version": "0.0.1", -        "pid": "0x1828" -    }, -    "rgblight": { -        "led_count": 38, -        "split_count": [19, 19], -        "animations": { -            "breathing": true, -            "rainbow_mood": true, -            "rainbow_swirl": true, -            "snake": true, -            "knight": true, -            "christmas": true, -            "static_gradient": true, -            "rgb_test": true, -            "alternating": true, -            "twinkle": true -        } -    }, -    "ws2812": { -        "pin": "D2" -    }, -    "features": { -        "bootmagic": true, -        "command": false, -        "console": false, -        "extrakey": true, -        "mousekey": true, -        "nkro": false, -        "rgblight": true -    }, -    "matrix_pins": { -        "cols": ["B4", "E6", "C6", "B1", "B3", "B2"], -        "rows": ["D7", "B5", "F7", "F6", "B6"] -    }, -    "diode_direction": "ROW2COL", -    "split": { -        "enabled": true, -        "soft_serial_pin": "D0" -    }, -    "processor": "atmega32u4", -    "bootloader": "atmel-dfu", -    "layouts": { -        "LAYOUT_split_4x6_5": { -            "layout": [ -                {"matrix": [0, 0], "x": 0, "y": 0}, -                {"matrix": [0, 1], "x": 1, "y": 0}, -                {"matrix": [0, 2], "x": 2, "y": 0}, -                {"matrix": [0, 3], "x": 3, "y": 0}, -                {"matrix": [0, 4], "x": 4, "y": 0}, -                {"matrix": [0, 5], "x": 5, "y": 0}, -                {"matrix": [5, 5], "x": 11, "y": 0}, -                {"matrix": [5, 4], "x": 12, "y": 0}, -                {"matrix": [5, 3], "x": 13, "y": 0}, -                {"matrix": [5, 2], "x": 14, "y": 0}, -                {"matrix": [5, 1], "x": 15, "y": 0}, -                {"matrix": [5, 0], "x": 16, "y": 0}, -                {"matrix": [1, 0], "x": 0, "y": 1}, -                {"matrix": [1, 1], "x": 1, "y": 1}, -                {"matrix": [1, 2], "x": 2, "y": 1}, -                {"matrix": [1, 3], "x": 3, "y": 1}, -                {"matrix": [1, 4], "x": 4, "y": 1}, -                {"matrix": [1, 5], "x": 5, "y": 1}, -                {"matrix": [6, 5], "x": 11, "y": 1}, -                {"matrix": [6, 4], "x": 12, "y": 1}, -                {"matrix": [6, 3], "x": 13, "y": 1}, -                {"matrix": [6, 2], "x": 14, "y": 1}, -                {"matrix": [6, 1], "x": 15, "y": 1}, -                {"matrix": [6, 0], "x": 16, "y": 1}, -                {"matrix": [2, 0], "x": 0, "y": 2}, -                {"matrix": [2, 1], "x": 1, "y": 2}, -                {"matrix": [2, 2], "x": 2, "y": 2}, -                {"matrix": [2, 3], "x": 3, "y": 2}, -                {"matrix": [2, 4], "x": 4, "y": 2}, -                {"matrix": [2, 5], "x": 5, "y": 2}, -                {"matrix": [7, 5], "x": 11, "y": 2}, -                {"matrix": [7, 4], "x": 12, "y": 2}, -                {"matrix": [7, 3], "x": 13, "y": 2}, -                {"matrix": [7, 2], "x": 14, "y": 2}, -                {"matrix": [7, 1], "x": 15, "y": 2}, -                {"matrix": [7, 0], "x": 16, "y": 2}, -                {"matrix": [3, 0], "x": 0, "y": 3}, -                {"matrix": [3, 1], "x": 1, "y": 3}, -                {"matrix": [3, 2], "x": 2, "y": 3}, -                {"matrix": [3, 3], "x": 3, "y": 3}, -                {"matrix": [3, 4], "x": 4, "y": 3}, -                {"matrix": [3, 5], "x": 5, "y": 3}, -                {"matrix": [8, 5], "x": 11, "y": 3}, -                {"matrix": [8, 4], "x": 12, "y": 3}, -                {"matrix": [8, 3], "x": 13, "y": 3}, -                {"matrix": [8, 2], "x": 14, "y": 3}, -                {"matrix": [8, 1], "x": 15, "y": 3}, -                {"matrix": [8, 0], "x": 16, "y": 3}, -                {"matrix": [4, 3], "x": 5, "y": 4}, -                {"matrix": [4, 4], "x": 6, "y": 4}, -                {"matrix": [4, 1], "x": 7, "y": 4}, -                {"matrix": [9, 1], "x": 9, "y": 4}, -                {"matrix": [9, 4], "x": 10, "y": 4}, -                {"matrix": [9, 3], "x": 11, "y": 4}, -                {"matrix": [4, 5], "x": 6, "y": 5}, -                {"matrix": [4, 2], "x": 7, "y": 5}, -                {"matrix": [9, 2], "x": 9, "y": 5}, -                {"matrix": [9, 5], "x": 10, "y": 5} -            ] -        } -    } -} diff --git a/keyboards/bastardkb/tbk/keymaps/default/keymap.c b/keyboards/bastardkb/tbk/keymaps/default/keymap.c deleted file mode 100644 index 3227076c07..0000000000 --- a/keyboards/bastardkb/tbk/keymaps/default/keymap.c +++ /dev/null @@ -1,60 +0,0 @@ -/*  - * Copyright 2021 Quentin LEBASTARD <[email protected]> - * - * 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 2 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 <http://www.gnu.org/licenses/>. - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -  [0] = LAYOUT_split_4x6_5( -    KC_ESC,  KC_1, KC_2, KC_3, KC_4, KC_5,			            KC_6, KC_7, KC_8,    KC_9,   KC_0,     KC_BSPC, -//-------------------------------------------------//-----------------------------------------------------------// -    KC_TAB,  KC_Q, KC_W, KC_E, KC_R, KC_T,			            KC_Y, KC_U, KC_I,    KC_O,   KC_P,     KC_MINS, -//-------------------------------------------------//-----------------------------------------------------------// -    KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G,	                KC_H, KC_J, KC_K,    KC_L,   KC_SCLN,  KC_QUOT, -//-------------------------------------------------//-----------------------------------------------------------// -    KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B,                  KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,  KC_BSLS, -//-------------------------------------------------//-----------------------------------------------------------// -                        KC_LCTL, KC_SPC, MO(1),		     MO(2),  KC_ENT, KC_RGUI, -                                 KC_HOME,  KC_BSPC,      KC_DEL, KC_RALT -  ), - -  [1] = LAYOUT_split_4x6_5( -    KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,			  KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,  KC_DEL, -//---------------------------------------------------------//-----------------------------------------------------------// -    QK_BOOT, _______, _______, _______, _______, KC_LBRC,			  KC_RBRC, KC_P7,   KC_P8,   KC_P9,   _______,  KC_PLUS, -//---------------------------------------------------------//-----------------------------------------------------------// -    _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END,  KC_LPRN,	      KC_RPRN, KC_P4,   KC_P5,   KC_P6,   KC_MINS,  KC_PIPE, -//---------------------------------------------------------//-----------------------------------------------------------// -    _______, _______, _______, _______, _______, _______,       _______, KC_P1,   KC_P2,   KC_P3,   KC_EQL,   KC_UNDS, -//---------------------------------------------------------//-----------------------------------------------------------// -                               KC_LCTL, KC_HOME, KC_TRNS,		    KC_TRNS, KC_RALT, KC_RGUI, -                                        KC_SPC,  KC_BSPC,       KC_RCTL, KC_ENT -  ), - -  [2] = LAYOUT_split_4x6_5( -    KC_F12,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,			    KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11, -//---------------------------------------------------------//--------------------------------------------------------------// -    _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, KC_LBRC,			  KC_RBRC, _______, KC_NUM,  KC_INS,  KC_SCRL,  KC_MUTE, -//---------------------------------------------------------//--------------------------------------------------------------// -    _______, KC_LEFT, KC_UP,    KC_DOWN, KC_RGHT, KC_LPRN,	      KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______,  KC_VOLU, -//---------------------------------------------------------//--------------------------------------------------------------// -    _______, _______, _______,  _______, _______, _______,        _______, _______, _______, _______, _______,  KC_VOLD, -//---------------------------------------------------------//--------------------------------------------------------------// -                               KC_LCTL, KC_HOME, KC_TRNS,		    KC_TRNS, KC_RALT, QK_BOOT, -                                        KC_SPC,  KC_BSPC,       KC_RCTL, KC_ENT -  ), -}; diff --git a/keyboards/bastardkb/tbk/readme.md b/keyboards/bastardkb/tbk/readme.md deleted file mode 100644 index 0d552e5caf..0000000000 --- a/keyboards/bastardkb/tbk/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# The Bastard Keyboard - -A split ergonomic keyboard. - -* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -* Hardware Supported: elite-C V4 -* Hardware Availability: [Bastard Keyboards](https://bastardkb.com/) - -Make example for this keyboard (after setting up your build environment): - -    make bastardkb/tbk:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - -See the [keyboard build instructions](https://docs.bastardkb.com) - - -## Important information regarding the reset - -If you modify this firmware, make sure to always have a QK_BOOT key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up. - -Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button. diff --git a/platforms/chibios/drivers/eeprom/eeprom_legacy_emulated_flash.c b/platforms/chibios/drivers/eeprom/eeprom_legacy_emulated_flash.c index a81fe3353c..9857ac046b 100644 --- a/platforms/chibios/drivers/eeprom/eeprom_legacy_emulated_flash.c +++ b/platforms/chibios/drivers/eeprom/eeprom_legacy_emulated_flash.c @@ -24,6 +24,7 @@  #include "debug.h"  #include "eeprom_legacy_emulated_flash.h"  #include "legacy_flash_ops.h" +#include "eeprom_driver.h"  /*   * We emulate eeprom by writing a snapshot compacted view of eeprom contents, @@ -564,6 +565,12 @@ void eeprom_driver_init(void) {      EEPROM_Init();  } +void eeprom_driver_format(bool erase) { +    /* emulated eepron requires the write log data structures to be erased before use. */ +    (void)erase; +    eeprom_driver_erase(); +} +  void eeprom_driver_erase(void) {      EEPROM_Erase();  } diff --git a/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c b/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c index ed26cc7145..628137a0b3 100644 --- a/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c +++ b/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c @@ -52,6 +52,12 @@ static inline void STM32_L0_L1_EEPROM_Lock(void) {  void eeprom_driver_init(void) {} +void eeprom_driver_format(bool erase) { +    if (erase) { +        eeprom_driver_erase(); +    } +} +  void eeprom_driver_erase(void) {      STM32_L0_L1_EEPROM_Unlock(); diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index 40690d6a97..ffbbf43a95 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c @@ -46,7 +46,7 @@ __attribute__((weak)) void eeconfig_init_kb(void) {   */  void eeconfig_init_quantum(void) {  #if defined(EEPROM_DRIVER) -    eeprom_driver_erase(); +    eeprom_driver_format(false);  #endif      eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); @@ -108,7 +108,7 @@ void eeconfig_enable(void) {   */  void eeconfig_disable(void) {  #if defined(EEPROM_DRIVER) -    eeprom_driver_erase(); +    eeprom_driver_format(false);  #endif      eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER_OFF);  } @@ -1,3 +1,7 @@ +# THIS IS THE DEVELOP BRANCH + +Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information. +  # Quantum Mechanical Keyboard Firmware  [](https://github.com/qmk/qmk_firmware/tags) | 
