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 |