mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-24 17:37:40 +06:00
Infer eeconfig identifiers (#22135)
Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
parent
6720e9c58c
commit
4bbfecae90
|
@ -22,6 +22,10 @@ void eeprom_update_dword(uint32_t *__p, uint32_t __value);
|
||||||
void eeprom_update_block(const void *__src, void *__dst, size_t __n);
|
void eeprom_update_block(const void *__src, void *__dst, size_t __n);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline void eeprom_write_qword(uint64_t *__p, uint64_t __value) {
|
||||||
|
eeprom_update_block(&__value, __p, sizeof(uint64_t));
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(EEPROM_CUSTOM)
|
#if defined(EEPROM_CUSTOM)
|
||||||
# ifndef EEPROM_SIZE
|
# ifndef EEPROM_SIZE
|
||||||
# error EEPROM_SIZE has not been defined for custom driver.
|
# error EEPROM_SIZE has not been defined for custom driver.
|
||||||
|
|
|
@ -19,6 +19,8 @@ void via_eeprom_set_valid(bool valid);
|
||||||
void eeconfig_init_via(void);
|
void eeconfig_init_via(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
_Static_assert((intptr_t)EECONFIG_HANDEDNESS == 14, "EEPROM handedness offset is incorrect");
|
||||||
|
|
||||||
/** \brief eeconfig enable
|
/** \brief eeconfig enable
|
||||||
*
|
*
|
||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
|
@ -57,11 +59,9 @@ void eeconfig_init_quantum(void) {
|
||||||
eeprom_update_byte(EECONFIG_AUDIO, 0);
|
eeprom_update_byte(EECONFIG_AUDIO, 0);
|
||||||
eeprom_update_dword(EECONFIG_RGBLIGHT, 0);
|
eeprom_update_dword(EECONFIG_RGBLIGHT, 0);
|
||||||
eeprom_update_byte(EECONFIG_RGBLIGHT_EXTENDED, 0);
|
eeprom_update_byte(EECONFIG_RGBLIGHT_EXTENDED, 0);
|
||||||
eeprom_update_byte(EECONFIG_UNUSED, 0);
|
|
||||||
eeprom_update_byte(EECONFIG_UNICODEMODE, 0);
|
eeprom_update_byte(EECONFIG_UNICODEMODE, 0);
|
||||||
eeprom_update_byte(EECONFIG_STENOMODE, 0);
|
eeprom_update_byte(EECONFIG_STENOMODE, 0);
|
||||||
uint64_t dummy = 0;
|
eeprom_write_qword(EECONFIG_RGB_MATRIX, 0);
|
||||||
eeprom_update_block(&dummy, EECONFIG_RGB_MATRIX, sizeof(uint64_t));
|
|
||||||
eeprom_update_dword(EECONFIG_HAPTIC, 0);
|
eeprom_update_dword(EECONFIG_HAPTIC, 0);
|
||||||
#if defined(HAPTIC_ENABLE)
|
#if defined(HAPTIC_ENABLE)
|
||||||
haptic_reset();
|
haptic_reset();
|
||||||
|
|
|
@ -19,37 +19,57 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h> // offsetof
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
#ifndef EECONFIG_MAGIC_NUMBER
|
#ifndef EECONFIG_MAGIC_NUMBER
|
||||||
# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE6 // When changing, decrement this value to avoid future re-init issues
|
# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE5 // When changing, decrement this value to avoid future re-init issues
|
||||||
#endif
|
#endif
|
||||||
#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF
|
#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF
|
||||||
|
|
||||||
/* EEPROM parameter address */
|
// Dummy struct only used to calculate offsets
|
||||||
#define EECONFIG_MAGIC (uint16_t *)0
|
typedef struct PACKED {
|
||||||
#define EECONFIG_DEBUG (uint8_t *)2
|
uint16_t magic;
|
||||||
#define EECONFIG_DEFAULT_LAYER (uint8_t *)3
|
uint8_t debug;
|
||||||
#define EECONFIG_KEYMAP (uint16_t *)4
|
uint8_t default_layer;
|
||||||
#define EECONFIG_BACKLIGHT (uint8_t *)6
|
uint16_t keymap;
|
||||||
#define EECONFIG_AUDIO (uint8_t *)7
|
uint8_t backlight;
|
||||||
#define EECONFIG_RGBLIGHT (uint32_t *)8
|
uint8_t audio;
|
||||||
#define EECONFIG_UNICODEMODE (uint8_t *)12
|
uint32_t rgblight;
|
||||||
#define EECONFIG_STENOMODE (uint8_t *)13
|
uint8_t unicode;
|
||||||
// EEHANDS for two handed boards
|
uint8_t steno;
|
||||||
#define EECONFIG_HANDEDNESS (uint8_t *)14
|
uint8_t handedness;
|
||||||
#define EECONFIG_KEYBOARD (uint32_t *)15
|
uint32_t keyboard;
|
||||||
#define EECONFIG_USER (uint32_t *)19
|
uint32_t user;
|
||||||
#define EECONFIG_UNUSED (uint8_t *)23
|
union { // Mutually exclusive
|
||||||
// Mutually exclusive
|
uint32_t led_matrix;
|
||||||
#define EECONFIG_LED_MATRIX (uint32_t *)24
|
uint64_t rgb_matrix;
|
||||||
#define EECONFIG_RGB_MATRIX (uint64_t *)24
|
};
|
||||||
|
uint32_t haptic;
|
||||||
|
uint8_t rgblight_ext;
|
||||||
|
} eeprom_core_t;
|
||||||
|
|
||||||
#define EECONFIG_HAPTIC (uint32_t *)32
|
/* EEPROM parameter address */
|
||||||
#define EECONFIG_RGBLIGHT_EXTENDED (uint8_t *)36
|
#define EECONFIG_MAGIC (uint16_t *)(offsetof(eeprom_core_t, magic))
|
||||||
|
#define EECONFIG_DEBUG (uint8_t *)(offsetof(eeprom_core_t, debug))
|
||||||
|
#define EECONFIG_DEFAULT_LAYER (uint8_t *)(offsetof(eeprom_core_t, default_layer))
|
||||||
|
#define EECONFIG_KEYMAP (uint16_t *)(offsetof(eeprom_core_t, keymap))
|
||||||
|
#define EECONFIG_BACKLIGHT (uint8_t *)(offsetof(eeprom_core_t, backlight))
|
||||||
|
#define EECONFIG_AUDIO (uint8_t *)(offsetof(eeprom_core_t, audio))
|
||||||
|
#define EECONFIG_RGBLIGHT (uint32_t *)(offsetof(eeprom_core_t, rgblight))
|
||||||
|
#define EECONFIG_UNICODEMODE (uint8_t *)(offsetof(eeprom_core_t, unicode))
|
||||||
|
#define EECONFIG_STENOMODE (uint8_t *)(offsetof(eeprom_core_t, steno))
|
||||||
|
#define EECONFIG_HANDEDNESS (uint8_t *)(offsetof(eeprom_core_t, handedness))
|
||||||
|
#define EECONFIG_KEYBOARD (uint32_t *)(offsetof(eeprom_core_t, keyboard))
|
||||||
|
#define EECONFIG_USER (uint32_t *)(offsetof(eeprom_core_t, user))
|
||||||
|
#define EECONFIG_LED_MATRIX (uint32_t *)(offsetof(eeprom_core_t, led_matrix))
|
||||||
|
#define EECONFIG_RGB_MATRIX (uint64_t *)(offsetof(eeprom_core_t, rgb_matrix))
|
||||||
|
#define EECONFIG_HAPTIC (uint32_t *)(offsetof(eeprom_core_t, haptic))
|
||||||
|
#define EECONFIG_RGBLIGHT_EXTENDED (uint8_t *)(offsetof(eeprom_core_t, rgblight_ext))
|
||||||
|
|
||||||
// Size of EEPROM being used for core data storage
|
// Size of EEPROM being used for core data storage
|
||||||
#define EECONFIG_BASE_SIZE 37
|
#define EECONFIG_BASE_SIZE ((uint8_t)sizeof(eeprom_core_t))
|
||||||
|
|
||||||
// Size of EEPROM dedicated to keyboard- and user-specific data
|
// Size of EEPROM dedicated to keyboard- and user-specific data
|
||||||
#ifndef EECONFIG_KB_DATA_SIZE
|
#ifndef EECONFIG_KB_DATA_SIZE
|
||||||
|
|
Loading…
Reference in New Issue
Block a user