mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-04-23 07:31:30 +00:00
Offset and length for datablocks.
This commit is contained in:
parent
f78412d841
commit
298f360eb1
@ -32,7 +32,7 @@ void eeconfig_init_kb(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Write default value to EEPROM now
|
// Write default value to EEPROM now
|
||||||
eeconfig_update_kb_datablock(&eeprom_ec_config);
|
eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
eeconfig_init_user();
|
eeconfig_init_user();
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ void eeconfig_init_kb(void) {
|
|||||||
// On Keyboard startup
|
// On Keyboard startup
|
||||||
void keyboard_post_init_kb(void) {
|
void keyboard_post_init_kb(void) {
|
||||||
// Read custom menu variables from memory
|
// Read custom menu variables from memory
|
||||||
eeconfig_read_kb_datablock(&eeprom_ec_config);
|
eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
// Set runtime values to EEPROM values
|
// Set runtime values to EEPROM values
|
||||||
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
||||||
|
@ -262,7 +262,7 @@ void ec_save_threshold_data(uint8_t option) {
|
|||||||
eeprom_ec_config.mode_1_release_offset = ec_config.mode_1_release_offset;
|
eeprom_ec_config.mode_1_release_offset = ec_config.mode_1_release_offset;
|
||||||
ec_rescale_values(2);
|
ec_rescale_values(2);
|
||||||
}
|
}
|
||||||
eeconfig_update_kb_datablock(&eeprom_ec_config);
|
eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
uprintf("####################################\n");
|
uprintf("####################################\n");
|
||||||
uprintf("# New thresholds applied and saved #\n");
|
uprintf("# New thresholds applied and saved #\n");
|
||||||
uprintf("####################################\n");
|
uprintf("####################################\n");
|
||||||
@ -287,7 +287,7 @@ void ec_save_bottoming_reading(void) {
|
|||||||
ec_rescale_values(0);
|
ec_rescale_values(0);
|
||||||
ec_rescale_values(1);
|
ec_rescale_values(1);
|
||||||
ec_rescale_values(2);
|
ec_rescale_values(2);
|
||||||
eeconfig_update_kb_datablock(&eeprom_ec_config);
|
eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the calibration data
|
// Show the calibration data
|
||||||
|
@ -44,7 +44,7 @@ void eeconfig_init_kb(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Write default value to EEPROM now
|
// Write default value to EEPROM now
|
||||||
eeconfig_update_kb_datablock(&eeprom_ec_config);
|
eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
eeconfig_init_user();
|
eeconfig_init_user();
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ void eeconfig_init_kb(void) {
|
|||||||
// On Keyboard startup
|
// On Keyboard startup
|
||||||
void keyboard_post_init_kb(void) {
|
void keyboard_post_init_kb(void) {
|
||||||
// Read custom menu variables from memory
|
// Read custom menu variables from memory
|
||||||
eeconfig_read_kb_datablock(&eeprom_ec_config);
|
eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
// Set runtime values to EEPROM values
|
// Set runtime values to EEPROM values
|
||||||
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
||||||
|
@ -44,7 +44,7 @@ void eeconfig_init_kb(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Write default value to EEPROM now
|
// Write default value to EEPROM now
|
||||||
eeconfig_update_kb_datablock(&eeprom_ec_config);
|
eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
eeconfig_init_user();
|
eeconfig_init_user();
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ void eeconfig_init_kb(void) {
|
|||||||
// On Keyboard startup
|
// On Keyboard startup
|
||||||
void keyboard_post_init_kb(void) {
|
void keyboard_post_init_kb(void) {
|
||||||
// Read custom menu variables from memory
|
// Read custom menu variables from memory
|
||||||
eeconfig_read_kb_datablock(&eeprom_ec_config);
|
eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
|
||||||
|
|
||||||
// Set runtime values to EEPROM values
|
// Set runtime values to EEPROM values
|
||||||
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
ec_config.actuation_mode = eeprom_ec_config.actuation_mode;
|
||||||
|
@ -245,11 +245,11 @@ void eeconfig_update_handedness(bool val) {
|
|||||||
bool eeconfig_is_kb_datablock_valid(void) {
|
bool eeconfig_is_kb_datablock_valid(void) {
|
||||||
return nvm_eeconfig_is_kb_datablock_valid();
|
return nvm_eeconfig_is_kb_datablock_valid();
|
||||||
}
|
}
|
||||||
void eeconfig_read_kb_datablock(void *data) {
|
uint32_t eeconfig_read_kb_datablock(void *data, uint32_t offset, uint32_t length) {
|
||||||
nvm_eeconfig_read_kb_datablock(data);
|
return nvm_eeconfig_read_kb_datablock(data, offset, length);
|
||||||
}
|
}
|
||||||
void eeconfig_update_kb_datablock(const void *data) {
|
uint32_t eeconfig_update_kb_datablock(const void *data, uint32_t offset, uint32_t length) {
|
||||||
nvm_eeconfig_update_kb_datablock(data);
|
return nvm_eeconfig_update_kb_datablock(data, offset, length);
|
||||||
}
|
}
|
||||||
__attribute__((weak)) void eeconfig_init_kb_datablock(void) {
|
__attribute__((weak)) void eeconfig_init_kb_datablock(void) {
|
||||||
nvm_eeconfig_init_kb_datablock();
|
nvm_eeconfig_init_kb_datablock();
|
||||||
@ -260,11 +260,11 @@ __attribute__((weak)) void eeconfig_init_kb_datablock(void) {
|
|||||||
bool eeconfig_is_user_datablock_valid(void) {
|
bool eeconfig_is_user_datablock_valid(void) {
|
||||||
return nvm_eeconfig_is_user_datablock_valid();
|
return nvm_eeconfig_is_user_datablock_valid();
|
||||||
}
|
}
|
||||||
void eeconfig_read_user_datablock(void *data) {
|
uint32_t eeconfig_read_user_datablock(void *data, uint32_t offset, uint32_t length) {
|
||||||
nvm_eeconfig_read_user_datablock(data);
|
return nvm_eeconfig_read_user_datablock(data, offset, length);
|
||||||
}
|
}
|
||||||
void eeconfig_update_user_datablock(const void *data) {
|
uint32_t eeconfig_update_user_datablock(const void *data, uint32_t offset, uint32_t length) {
|
||||||
nvm_eeconfig_update_user_datablock(data);
|
return nvm_eeconfig_update_user_datablock(data, offset, length);
|
||||||
}
|
}
|
||||||
__attribute__((weak)) void eeconfig_init_user_datablock(void) {
|
__attribute__((weak)) void eeconfig_init_user_datablock(void) {
|
||||||
nvm_eeconfig_init_user_datablock();
|
nvm_eeconfig_init_user_datablock();
|
||||||
|
@ -138,15 +138,15 @@ void eeconfig_update_handedness(bool val);
|
|||||||
|
|
||||||
#if (EECONFIG_KB_DATA_SIZE) > 0
|
#if (EECONFIG_KB_DATA_SIZE) > 0
|
||||||
bool eeconfig_is_kb_datablock_valid(void);
|
bool eeconfig_is_kb_datablock_valid(void);
|
||||||
void eeconfig_read_kb_datablock(void *data);
|
uint32_t eeconfig_read_kb_datablock(void *data, uint32_t offset, uint32_t length);
|
||||||
void eeconfig_update_kb_datablock(const void *data);
|
uint32_t eeconfig_update_kb_datablock(const void *data, uint32_t offset, uint32_t length);
|
||||||
void eeconfig_init_kb_datablock(void);
|
void eeconfig_init_kb_datablock(void);
|
||||||
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
||||||
|
|
||||||
#if (EECONFIG_USER_DATA_SIZE) > 0
|
#if (EECONFIG_USER_DATA_SIZE) > 0
|
||||||
bool eeconfig_is_user_datablock_valid(void);
|
bool eeconfig_is_user_datablock_valid(void);
|
||||||
void eeconfig_read_user_datablock(void *data);
|
uint32_t eeconfig_read_user_datablock(void *data, uint32_t offset, uint32_t length);
|
||||||
void eeconfig_update_user_datablock(const void *data);
|
uint32_t eeconfig_update_user_datablock(const void *data, uint32_t offset, uint32_t length);
|
||||||
void eeconfig_init_user_datablock(void);
|
void eeconfig_init_user_datablock(void);
|
||||||
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
||||||
|
|
||||||
|
@ -3,8 +3,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "nvm_eeconfig.h"
|
#include "nvm_eeconfig.h"
|
||||||
#include "nvm_eeconfig_eeprom.h"
|
#include "nvm_eeconfig_eeprom.h"
|
||||||
#include "eeprom.h"
|
#include "util.h"
|
||||||
#include "eeconfig.h"
|
#include "eeconfig.h"
|
||||||
|
#include "eeprom.h"
|
||||||
|
|
||||||
#if defined(EEPROM_DRIVER)
|
#if defined(EEPROM_DRIVER)
|
||||||
# include "eeprom_driver.h"
|
# include "eeprom_driver.h"
|
||||||
@ -176,22 +177,30 @@ bool nvm_eeconfig_is_kb_datablock_valid(void) {
|
|||||||
return eeprom_read_dword(EECONFIG_KEYBOARD) == (EECONFIG_KB_DATA_VERSION);
|
return eeprom_read_dword(EECONFIG_KEYBOARD) == (EECONFIG_KB_DATA_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_read_kb_datablock(void *data) {
|
uint32_t nvm_eeconfig_read_kb_datablock(void *data, uint32_t offset, uint32_t length) {
|
||||||
if (eeconfig_is_kb_datablock_valid()) {
|
if (eeconfig_is_kb_datablock_valid()) {
|
||||||
eeprom_read_block(data, EECONFIG_KB_DATABLOCK, (EECONFIG_KB_DATA_SIZE));
|
void *ee_start = (void *)(uintptr_t)(EECONFIG_KB_DATABLOCK + offset);
|
||||||
|
void *ee_end = (void *)(uintptr_t)(EECONFIG_KB_DATABLOCK + MIN(EECONFIG_KB_DATA_SIZE, offset + length));
|
||||||
|
eeprom_read_block(data, ee_start, ee_end - ee_start);
|
||||||
|
return ee_end - ee_start;
|
||||||
} else {
|
} else {
|
||||||
memset(data, 0, (EECONFIG_KB_DATA_SIZE));
|
memset(data, 0, length);
|
||||||
|
return length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_update_kb_datablock(const void *data) {
|
uint32_t nvm_eeconfig_update_kb_datablock(const void *data, uint32_t offset, uint32_t length) {
|
||||||
eeprom_update_dword(EECONFIG_KEYBOARD, (EECONFIG_KB_DATA_VERSION));
|
eeprom_update_dword(EECONFIG_KEYBOARD, (EECONFIG_KB_DATA_VERSION));
|
||||||
eeprom_update_block(data, EECONFIG_KB_DATABLOCK, (EECONFIG_KB_DATA_SIZE));
|
|
||||||
|
void *ee_start = (void *)(uintptr_t)(EECONFIG_KB_DATABLOCK + offset);
|
||||||
|
void *ee_end = (void *)(uintptr_t)(EECONFIG_KB_DATABLOCK + MIN(EECONFIG_KB_DATA_SIZE, offset + length));
|
||||||
|
eeprom_update_block(data, ee_start, ee_end - ee_start);
|
||||||
|
return ee_end - ee_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_init_kb_datablock(void) {
|
void nvm_eeconfig_init_kb_datablock(void) {
|
||||||
uint8_t dummy_kb[(EECONFIG_KB_DATA_SIZE)] = {0};
|
uint8_t dummy_kb[(EECONFIG_KB_DATA_SIZE)] = {0};
|
||||||
eeconfig_update_kb_datablock(dummy_kb);
|
eeconfig_update_kb_datablock(dummy_kb, 0, (EECONFIG_KB_DATA_SIZE));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
||||||
@ -202,22 +211,30 @@ bool nvm_eeconfig_is_user_datablock_valid(void) {
|
|||||||
return eeprom_read_dword(EECONFIG_USER) == (EECONFIG_USER_DATA_VERSION);
|
return eeprom_read_dword(EECONFIG_USER) == (EECONFIG_USER_DATA_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_read_user_datablock(void *data) {
|
uint32_t nvm_eeconfig_read_user_datablock(void *data, uint32_t offset, uint32_t length) {
|
||||||
if (eeconfig_is_user_datablock_valid()) {
|
if (eeconfig_is_user_datablock_valid()) {
|
||||||
eeprom_read_block(data, EECONFIG_USER_DATABLOCK, (EECONFIG_USER_DATA_SIZE));
|
void *ee_start = (void *)(uintptr_t)(EECONFIG_USER_DATABLOCK + offset);
|
||||||
|
void *ee_end = (void *)(uintptr_t)(EECONFIG_USER_DATABLOCK + MIN(EECONFIG_USER_DATA_SIZE, offset + length));
|
||||||
|
eeprom_read_block(data, ee_start, ee_end - ee_start);
|
||||||
|
return ee_end - ee_start;
|
||||||
} else {
|
} else {
|
||||||
memset(data, 0, (EECONFIG_USER_DATA_SIZE));
|
memset(data, 0, length);
|
||||||
|
return length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_update_user_datablock(const void *data) {
|
uint32_t nvm_eeconfig_update_user_datablock(const void *data, uint32_t offset, uint32_t length) {
|
||||||
eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION));
|
eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION));
|
||||||
eeprom_update_block(data, EECONFIG_USER_DATABLOCK, (EECONFIG_USER_DATA_SIZE));
|
|
||||||
|
void *ee_start = (void *)(uintptr_t)(EECONFIG_USER_DATABLOCK + offset);
|
||||||
|
void *ee_end = (void *)(uintptr_t)(EECONFIG_USER_DATABLOCK + MIN(EECONFIG_USER_DATA_SIZE, offset + length));
|
||||||
|
eeprom_update_block(data, ee_start, ee_end - ee_start);
|
||||||
|
return ee_end - ee_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_init_user_datablock(void) {
|
void nvm_eeconfig_init_user_datablock(void) {
|
||||||
uint8_t dummy_user[(EECONFIG_USER_DATA_SIZE)] = {0};
|
uint8_t dummy_user[(EECONFIG_USER_DATA_SIZE)] = {0};
|
||||||
eeconfig_update_user_datablock(dummy_user);
|
eeconfig_update_user_datablock(dummy_user, 0, (EECONFIG_USER_DATA_SIZE));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
||||||
|
@ -74,14 +74,8 @@ uint32_t nvm_via_read_custom_config(void *buf, uint32_t offset, uint32_t length)
|
|||||||
#if VIA_EEPROM_CUSTOM_CONFIG_SIZE > 0
|
#if VIA_EEPROM_CUSTOM_CONFIG_SIZE > 0
|
||||||
void *ee_start = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + offset);
|
void *ee_start = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + offset);
|
||||||
void *ee_end = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + MIN(VIA_EEPROM_CUSTOM_CONFIG_SIZE, offset + length));
|
void *ee_end = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + MIN(VIA_EEPROM_CUSTOM_CONFIG_SIZE, offset + length));
|
||||||
uint32_t counter = 0;
|
eeprom_read_block(buf, ee_start, ee_end - ee_start);
|
||||||
uint8_t *source = (uint8_t *)ee_start;
|
return ee_end - ee - start;
|
||||||
uint8_t *dest = (uint8_t *)buf;
|
|
||||||
while (source != ee_end) {
|
|
||||||
*dest++ = eeprom_read_byte(source++);
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
return counter;
|
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
@ -91,14 +85,8 @@ uint32_t nvm_via_update_custom_config(const void *buf, uint32_t offset, uint32_t
|
|||||||
#if VIA_EEPROM_CUSTOM_CONFIG_SIZE > 0
|
#if VIA_EEPROM_CUSTOM_CONFIG_SIZE > 0
|
||||||
void *ee_start = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + offset);
|
void *ee_start = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + offset);
|
||||||
void *ee_end = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + MIN(VIA_EEPROM_CUSTOM_CONFIG_SIZE, offset + length));
|
void *ee_end = (void *)(uintptr_t)(VIA_EEPROM_CUSTOM_CONFIG_ADDR + MIN(VIA_EEPROM_CUSTOM_CONFIG_SIZE, offset + length));
|
||||||
uint32_t counter = 0;
|
eeprom_update_block(buf, ee_start, ee_end - ee_start);
|
||||||
uint8_t *dest = (uint8_t *)ee_start;
|
return ee_end - ee_start;
|
||||||
uint8_t *source = (uint8_t *)buf;
|
|
||||||
while (dest != ee_end) {
|
|
||||||
eeprom_update_byte(dest++, *source++);
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
return counter;
|
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,14 +87,14 @@ void nvm_eeconfig_update_handedness(bool val);
|
|||||||
|
|
||||||
#if (EECONFIG_KB_DATA_SIZE) > 0
|
#if (EECONFIG_KB_DATA_SIZE) > 0
|
||||||
bool nvm_eeconfig_is_kb_datablock_valid(void);
|
bool nvm_eeconfig_is_kb_datablock_valid(void);
|
||||||
void nvm_eeconfig_read_kb_datablock(void *data);
|
uint32_t nvm_eeconfig_read_kb_datablock(void *data, uint32_t offset, uint32_t length);
|
||||||
void nvm_eeconfig_update_kb_datablock(const void *data);
|
uint32_t nvm_eeconfig_update_kb_datablock(const void *data, uint32_t offset, uint32_t length);
|
||||||
void nvm_eeconfig_init_kb_datablock(void);
|
void nvm_eeconfig_init_kb_datablock(void);
|
||||||
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
#endif // (EECONFIG_KB_DATA_SIZE) > 0
|
||||||
|
|
||||||
#if (EECONFIG_USER_DATA_SIZE) > 0
|
#if (EECONFIG_USER_DATA_SIZE) > 0
|
||||||
bool nvm_eeconfig_is_user_datablock_valid(void);
|
bool nvm_eeconfig_is_user_datablock_valid(void);
|
||||||
void nvm_eeconfig_read_user_datablock(void *data);
|
uint32_t nvm_eeconfig_read_user_datablock(void *data, uint32_t offset, uint32_t length);
|
||||||
void nvm_eeconfig_update_user_datablock(const void *data);
|
uint32_t nvm_eeconfig_update_user_datablock(const void *data, uint32_t offset, uint32_t length);
|
||||||
void nvm_eeconfig_init_user_datablock(void);
|
void nvm_eeconfig_init_user_datablock(void);
|
||||||
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
#endif // (EECONFIG_USER_DATA_SIZE) > 0
|
||||||
|
Loading…
Reference in New Issue
Block a user