diff options
| author | Joel Challis <git@zvecr.com> | 2021-09-15 09:21:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-15 01:21:36 -0700 |
| commit | fa141a5a8fc3b3f439385db990ec34ad3bbbcb16 (patch) | |
| tree | 6b8f1107ab2f3b896ebef97ef30156a2e9eae3e1 | |
| parent | b63453a75bc3e49802c7df1d2ff5b2ea95a5354f (diff) | |
| download | qmk_firmware-fa141a5a8fc3b3f439385db990ec34ad3bbbcb16.tar.gz qmk_firmware-fa141a5a8fc3b3f439385db990ec34ad3bbbcb16.zip | |
Migrate STM32_EEPROM_ENABLE to use EEPROM_DRIVER (#14433)
| -rw-r--r-- | common_features.mk | 16 | ||||
| -rw-r--r-- | keyboards/mxss/rgblight.c | 4 | ||||
| -rw-r--r-- | quantum/eeconfig.c | 11 | ||||
| -rw-r--r-- | quantum/keyboard.c | 6 | ||||
| -rw-r--r-- | tmk_core/common/chibios/eeprom_stm32.c | 57 | ||||
| -rw-r--r-- | tmk_core/common/test/rules.mk | 1 |
6 files changed, 22 insertions, 73 deletions
diff --git a/common_features.mk b/common_features.mk index 98e47d3dd..ddb7112fd 100644 --- a/common_features.mk +++ b/common_features.mk | |||
| @@ -157,20 +157,26 @@ else | |||
| 157 | # Automatically provided by avr-libc, nothing required | 157 | # Automatically provided by avr-libc, nothing required |
| 158 | else ifeq ($(PLATFORM),CHIBIOS) | 158 | else ifeq ($(PLATFORM),CHIBIOS) |
| 159 | ifeq ($(MCU_SERIES), STM32F3xx) | 159 | ifeq ($(MCU_SERIES), STM32F3xx) |
| 160 | OPT_DEFS += -DEEPROM_DRIVER | ||
| 161 | COMMON_VPATH += $(DRIVER_PATH)/eeprom | ||
| 162 | SRC += eeprom_driver.c | ||
| 160 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c | 163 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 161 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c | 164 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 162 | OPT_DEFS += -DEEPROM_EMU_STM32F303xC | 165 | OPT_DEFS += -DEEPROM_EMU_STM32F303xC |
| 163 | OPT_DEFS += -DSTM32_EEPROM_ENABLE | ||
| 164 | else ifeq ($(MCU_SERIES), STM32F1xx) | 166 | else ifeq ($(MCU_SERIES), STM32F1xx) |
| 167 | OPT_DEFS += -DEEPROM_DRIVER | ||
| 168 | COMMON_VPATH += $(DRIVER_PATH)/eeprom | ||
| 169 | SRC += eeprom_driver.c | ||
| 165 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c | 170 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 166 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c | 171 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 167 | OPT_DEFS += -DEEPROM_EMU_STM32F103xB | 172 | OPT_DEFS += -DEEPROM_EMU_STM32F103xB |
| 168 | OPT_DEFS += -DSTM32_EEPROM_ENABLE | ||
| 169 | else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB) | 173 | else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB) |
| 174 | OPT_DEFS += -DEEPROM_DRIVER | ||
| 175 | COMMON_VPATH += $(DRIVER_PATH)/eeprom | ||
| 176 | SRC += eeprom_driver.c | ||
| 170 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c | 177 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 171 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c | 178 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 172 | OPT_DEFS += -DEEPROM_EMU_STM32F072xB | 179 | OPT_DEFS += -DEEPROM_EMU_STM32F072xB |
| 173 | OPT_DEFS += -DSTM32_EEPROM_ENABLE | ||
| 174 | else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F042x6) | 180 | else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F042x6) |
| 175 | 181 | ||
| 176 | # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced. | 182 | # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced. |
| @@ -178,10 +184,12 @@ else | |||
| 178 | USE_PROCESS_STACKSIZE = 0x600 | 184 | USE_PROCESS_STACKSIZE = 0x600 |
| 179 | USE_EXCEPTIONS_STACKSIZE = 0x300 | 185 | USE_EXCEPTIONS_STACKSIZE = 0x300 |
| 180 | 186 | ||
| 187 | OPT_DEFS += -DEEPROM_DRIVER | ||
| 188 | COMMON_VPATH += $(DRIVER_PATH)/eeprom | ||
| 189 | SRC += eeprom_driver.c | ||
| 181 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c | 190 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 182 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c | 191 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 183 | OPT_DEFS += -DEEPROM_EMU_STM32F042x6 | 192 | OPT_DEFS += -DEEPROM_EMU_STM32F042x6 |
| 184 | OPT_DEFS += -DSTM32_EEPROM_ENABLE | ||
| 185 | else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),) | 193 | else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),) |
| 186 | OPT_DEFS += -DEEPROM_DRIVER | 194 | OPT_DEFS += -DEEPROM_DRIVER |
| 187 | COMMON_VPATH += $(DRIVER_PATH)/eeprom | 195 | COMMON_VPATH += $(DRIVER_PATH)/eeprom |
diff --git a/keyboards/mxss/rgblight.c b/keyboards/mxss/rgblight.c index d2d79815c..b2df351c5 100644 --- a/keyboards/mxss/rgblight.c +++ b/keyboards/mxss/rgblight.c | |||
| @@ -23,10 +23,6 @@ | |||
| 23 | #ifdef EEPROM_ENABLE | 23 | #ifdef EEPROM_ENABLE |
| 24 | # include "eeprom.h" | 24 | # include "eeprom.h" |
| 25 | #endif | 25 | #endif |
| 26 | #ifdef STM32_EEPROM_ENABLE | ||
| 27 | # include <hal.h> | ||
| 28 | # include "eeprom_stm32.h" | ||
| 29 | #endif | ||
| 30 | #include "wait.h" | 26 | #include "wait.h" |
| 31 | #include "progmem.h" | 27 | #include "progmem.h" |
| 32 | #include "timer.h" | 28 | #include "timer.h" |
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index 92f0ac443..4c2ad2490 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c | |||
| @@ -4,11 +4,6 @@ | |||
| 4 | #include "eeconfig.h" | 4 | #include "eeconfig.h" |
| 5 | #include "action_layer.h" | 5 | #include "action_layer.h" |
| 6 | 6 | ||
| 7 | #ifdef STM32_EEPROM_ENABLE | ||
| 8 | # include <hal.h> | ||
| 9 | # include "eeprom_stm32.h" | ||
| 10 | #endif | ||
| 11 | |||
| 12 | #if defined(EEPROM_DRIVER) | 7 | #if defined(EEPROM_DRIVER) |
| 13 | # include "eeprom_driver.h" | 8 | # include "eeprom_driver.h" |
| 14 | #endif | 9 | #endif |
| @@ -43,9 +38,6 @@ __attribute__((weak)) void eeconfig_init_kb(void) { | |||
| 43 | * FIXME: needs doc | 38 | * FIXME: needs doc |
| 44 | */ | 39 | */ |
| 45 | void eeconfig_init_quantum(void) { | 40 | void eeconfig_init_quantum(void) { |
| 46 | #ifdef STM32_EEPROM_ENABLE | ||
| 47 | EEPROM_Erase(); | ||
| 48 | #endif | ||
| 49 | #if defined(EEPROM_DRIVER) | 41 | #if defined(EEPROM_DRIVER) |
| 50 | eeprom_driver_erase(); | 42 | eeprom_driver_erase(); |
| 51 | #endif | 43 | #endif |
| @@ -111,9 +103,6 @@ void eeconfig_enable(void) { eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_N | |||
| 111 | * FIXME: needs doc | 103 | * FIXME: needs doc |
| 112 | */ | 104 | */ |
| 113 | void eeconfig_disable(void) { | 105 | void eeconfig_disable(void) { |
| 114 | #ifdef STM32_EEPROM_ENABLE | ||
| 115 | EEPROM_Erase(); | ||
| 116 | #endif | ||
| 117 | #if defined(EEPROM_DRIVER) | 106 | #if defined(EEPROM_DRIVER) |
| 118 | eeprom_driver_erase(); | 107 | eeprom_driver_erase(); |
| 119 | #endif | 108 | #endif |
diff --git a/quantum/keyboard.c b/quantum/keyboard.c index b98fc64e4..5846507b3 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c | |||
| @@ -97,9 +97,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 97 | #ifdef DIP_SWITCH_ENABLE | 97 | #ifdef DIP_SWITCH_ENABLE |
| 98 | # include "dip_switch.h" | 98 | # include "dip_switch.h" |
| 99 | #endif | 99 | #endif |
| 100 | #ifdef STM32_EEPROM_ENABLE | ||
| 101 | # include "eeprom_stm32.h" | ||
| 102 | #endif | ||
| 103 | #ifdef EEPROM_DRIVER | 100 | #ifdef EEPROM_DRIVER |
| 104 | # include "eeprom_driver.h" | 101 | # include "eeprom_driver.h" |
| 105 | #endif | 102 | #endif |
| @@ -246,9 +243,6 @@ void keyboard_setup(void) { | |||
| 246 | disable_jtag(); | 243 | disable_jtag(); |
| 247 | #endif | 244 | #endif |
| 248 | print_set_sendchar(sendchar); | 245 | print_set_sendchar(sendchar); |
| 249 | #ifdef STM32_EEPROM_ENABLE | ||
| 250 | EEPROM_Init(); | ||
| 251 | #endif | ||
| 252 | #ifdef EEPROM_DRIVER | 246 | #ifdef EEPROM_DRIVER |
| 253 | eeprom_driver_init(); | 247 | eeprom_driver_init(); |
| 254 | #endif | 248 | #endif |
diff --git a/tmk_core/common/chibios/eeprom_stm32.c b/tmk_core/common/chibios/eeprom_stm32.c index 1fdf8c1e2..acc6a4851 100644 --- a/tmk_core/common/chibios/eeprom_stm32.c +++ b/tmk_core/common/chibios/eeprom_stm32.c | |||
| @@ -620,48 +620,11 @@ uint16_t EEPROM_ReadDataWord(uint16_t Address) { | |||
| 620 | } | 620 | } |
| 621 | 621 | ||
| 622 | /***************************************************************************** | 622 | /***************************************************************************** |
| 623 | * Wrap library in AVR style functions. | 623 | * Bind to eeprom_driver.c |
| 624 | *******************************************************************************/ | 624 | *******************************************************************************/ |
| 625 | uint8_t eeprom_read_byte(const uint8_t *Address) { return EEPROM_ReadDataByte((const uintptr_t)Address); } | 625 | void eeprom_driver_init(void) { EEPROM_Init(); } |
| 626 | 626 | ||
| 627 | void eeprom_write_byte(uint8_t *Address, uint8_t Value) { EEPROM_WriteDataByte((uintptr_t)Address, Value); } | 627 | void eeprom_driver_erase(void) { EEPROM_Erase(); } |
| 628 | |||
| 629 | void eeprom_update_byte(uint8_t *Address, uint8_t Value) { EEPROM_WriteDataByte((uintptr_t)Address, Value); } | ||
| 630 | |||
| 631 | uint16_t eeprom_read_word(const uint16_t *Address) { return EEPROM_ReadDataWord((const uintptr_t)Address); } | ||
| 632 | |||
| 633 | void eeprom_write_word(uint16_t *Address, uint16_t Value) { EEPROM_WriteDataWord((uintptr_t)Address, Value); } | ||
| 634 | |||
| 635 | void eeprom_update_word(uint16_t *Address, uint16_t Value) { EEPROM_WriteDataWord((uintptr_t)Address, Value); } | ||
| 636 | |||
| 637 | uint32_t eeprom_read_dword(const uint32_t *Address) { | ||
| 638 | const uint16_t p = (const uintptr_t)Address; | ||
| 639 | /* Check word alignment */ | ||
| 640 | if (p % 2) { | ||
| 641 | /* Not aligned */ | ||
| 642 | return (uint32_t)EEPROM_ReadDataByte(p) | (uint32_t)(EEPROM_ReadDataWord(p + 1) << 8) | (uint32_t)(EEPROM_ReadDataByte(p + 3) << 24); | ||
| 643 | } else { | ||
| 644 | /* Aligned */ | ||
| 645 | return EEPROM_ReadDataWord(p) | (EEPROM_ReadDataWord(p + 2) << 16); | ||
| 646 | } | ||
| 647 | } | ||
| 648 | |||
| 649 | void eeprom_write_dword(uint32_t *Address, uint32_t Value) { | ||
| 650 | uint16_t p = (const uintptr_t)Address; | ||
| 651 | /* Check word alignment */ | ||
| 652 | if (p % 2) { | ||
| 653 | /* Not aligned */ | ||
| 654 | EEPROM_WriteDataByte(p, (uint8_t)Value); | ||
| 655 | EEPROM_WriteDataWord(p + 1, (uint16_t)(Value >> 8)); | ||
| 656 | EEPROM_WriteDataByte(p + 3, (uint8_t)(Value >> 24)); | ||
| 657 | } else { | ||
| 658 | /* Aligned */ | ||
| 659 | EEPROM_WriteDataWord(p, (uint16_t)Value); | ||
| 660 | EEPROM_WriteDataWord(p + 2, (uint16_t)(Value >> 16)); | ||
| 661 | } | ||
| 662 | } | ||
| 663 | |||
| 664 | void eeprom_update_dword(uint32_t *Address, uint32_t Value) { eeprom_write_dword(Address, Value); } | ||
| 665 | 628 | ||
| 666 | void eeprom_read_block(void *buf, const void *addr, size_t len) { | 629 | void eeprom_read_block(void *buf, const void *addr, size_t len) { |
| 667 | const uint8_t *src = (const uint8_t *)addr; | 630 | const uint8_t *src = (const uint8_t *)addr; |
| @@ -670,14 +633,14 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) { | |||
| 670 | /* Check word alignment */ | 633 | /* Check word alignment */ |
| 671 | if (len && (uintptr_t)src % 2) { | 634 | if (len && (uintptr_t)src % 2) { |
| 672 | /* Read the unaligned first byte */ | 635 | /* Read the unaligned first byte */ |
| 673 | *dest++ = eeprom_read_byte(src++); | 636 | *dest++ = EEPROM_ReadDataByte((const uintptr_t)src++); |
| 674 | --len; | 637 | --len; |
| 675 | } | 638 | } |
| 676 | 639 | ||
| 677 | uint16_t value; | 640 | uint16_t value; |
| 678 | bool aligned = ((uintptr_t)dest % 2 == 0); | 641 | bool aligned = ((uintptr_t)dest % 2 == 0); |
| 679 | while (len > 1) { | 642 | while (len > 1) { |
| 680 | value = eeprom_read_word((uint16_t *)src); | 643 | value = EEPROM_ReadDataWord((const uintptr_t)((uint16_t *)src)); |
| 681 | if (aligned) { | 644 | if (aligned) { |
| 682 | *(uint16_t *)dest = value; | 645 | *(uint16_t *)dest = value; |
| 683 | dest += 2; | 646 | dest += 2; |
| @@ -689,7 +652,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) { | |||
| 689 | len -= 2; | 652 | len -= 2; |
| 690 | } | 653 | } |
| 691 | if (len) { | 654 | if (len) { |
| 692 | *dest = eeprom_read_byte(src); | 655 | *dest = EEPROM_ReadDataByte((const uintptr_t)src); |
| 693 | } | 656 | } |
| 694 | } | 657 | } |
| 695 | 658 | ||
| @@ -700,7 +663,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { | |||
| 700 | /* Check word alignment */ | 663 | /* Check word alignment */ |
| 701 | if (len && (uintptr_t)dest % 2) { | 664 | if (len && (uintptr_t)dest % 2) { |
| 702 | /* Write the unaligned first byte */ | 665 | /* Write the unaligned first byte */ |
| 703 | eeprom_write_byte(dest++, *src++); | 666 | EEPROM_WriteDataByte((uintptr_t)dest++, *src++); |
| 704 | --len; | 667 | --len; |
| 705 | } | 668 | } |
| 706 | 669 | ||
| @@ -712,15 +675,13 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { | |||
| 712 | } else { | 675 | } else { |
| 713 | value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8); | 676 | value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8); |
| 714 | } | 677 | } |
| 715 | eeprom_write_word((uint16_t *)dest, value); | 678 | EEPROM_WriteDataWord((uintptr_t)((uint16_t *)dest), value); |
| 716 | dest += 2; | 679 | dest += 2; |
| 717 | src += 2; | 680 | src += 2; |
| 718 | len -= 2; | 681 | len -= 2; |
| 719 | } | 682 | } |
| 720 | 683 | ||
| 721 | if (len) { | 684 | if (len) { |
| 722 | eeprom_write_byte(dest, *src); | 685 | EEPROM_WriteDataByte((uintptr_t)dest, *src); |
| 723 | } | 686 | } |
| 724 | } | 687 | } |
| 725 | |||
| 726 | void eeprom_update_block(const void *buf, void *addr, size_t len) { eeprom_write_block(buf, addr, len); } | ||
diff --git a/tmk_core/common/test/rules.mk b/tmk_core/common/test/rules.mk index 48632a095..73d2302da 100644 --- a/tmk_core/common/test/rules.mk +++ b/tmk_core/common/test/rules.mk | |||
| @@ -16,6 +16,7 @@ eeprom_stm32_tiny_INC := $(eeprom_stm32_INC) | |||
| 16 | eeprom_stm32_large_INC := $(eeprom_stm32_INC) | 16 | eeprom_stm32_large_INC := $(eeprom_stm32_INC) |
| 17 | 17 | ||
| 18 | eeprom_stm32_SRC := \ | 18 | eeprom_stm32_SRC := \ |
| 19 | $(TOP_DIR)/drivers/eeprom/eeprom_driver.c \ | ||
| 19 | $(TMK_PATH)/common/test/eeprom_stm32_tests.cpp \ | 20 | $(TMK_PATH)/common/test/eeprom_stm32_tests.cpp \ |
| 20 | $(TMK_PATH)/common/test/flash_stm32_mock.c \ | 21 | $(TMK_PATH)/common/test/flash_stm32_mock.c \ |
| 21 | $(TMK_PATH)/common/chibios/eeprom_stm32.c | 22 | $(TMK_PATH)/common/chibios/eeprom_stm32.c |
