summaryrefslogtreecommitdiff
path: root/tmk_core/common
diff options
context:
space:
mode:
authorAndrew Kannan <andrew.kannan@klaviyo.com>2019-01-29 23:04:20 -0500
committerDrashna Jaelre <drashna@live.com>2019-01-29 20:04:20 -0800
commit7186d1581abbd97d7c76626ae83fc866e85d217c (patch)
tree1a6cf65f38f00f48e1539a8c01418cf770119a37 /tmk_core/common
parent74fcfd533508d5743a20a7cd7faba404f8fc7cd3 (diff)
Moving cannonkeys boards to one place, eeprom fix (#4999)
* Move boards to cannonkeys and share resources * Share common files between cannonkey boards * Fix ortho60 keymap * update LED numbers * Add RGB keys to Ortho60 and Ortho48 * Add Backlight control to default layout Ortho60 and 48 * Remove unnecessary ws2812.c SRC from rules.mk
Diffstat (limited to 'tmk_core/common')
-rwxr-xr-xtmk_core/common/chibios/eeprom_stm32.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/tmk_core/common/chibios/eeprom_stm32.c b/tmk_core/common/chibios/eeprom_stm32.c
index 17d38af6a0..4b1abc968d 100755
--- a/tmk_core/common/chibios/eeprom_stm32.c
+++ b/tmk_core/common/chibios/eeprom_stm32.c
@@ -179,10 +179,14 @@ void eeprom_write_dword (uint32_t *Address, uint32_t Value)
void eeprom_update_dword (uint32_t *Address, uint32_t Value)
{
uint16_t p = (const uint32_t) Address;
- EEPROM_WriteDataByte(p, (uint8_t) Value);
- EEPROM_WriteDataByte(p+1, (uint8_t) (Value >> 8));
- EEPROM_WriteDataByte(p+2, (uint8_t) (Value >> 16));
- EEPROM_WriteDataByte(p+3, (uint8_t) (Value >> 24));
+ uint32_t existingValue = EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p+1) << 8)
+ | (EEPROM_ReadDataByte(p+2) << 16) | (EEPROM_ReadDataByte(p+3) << 24);
+ if(Value != existingValue){
+ EEPROM_WriteDataByte(p, (uint8_t) Value);
+ EEPROM_WriteDataByte(p+1, (uint8_t) (Value >> 8));
+ EEPROM_WriteDataByte(p+2, (uint8_t) (Value >> 16));
+ EEPROM_WriteDataByte(p+3, (uint8_t) (Value >> 24));
+ }
}
void eeprom_read_block(void *buf, const void *addr, uint32_t len) {