summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2025-04-20 05:20:00 +1000
committerGitHub <noreply@github.com>2025-04-19 20:20:00 +0100
commit5c39722ab9c9c7b86f34d4ed4ca4620a47dab01b (patch)
tree54580856cc6c7cdea1fdf69775f67c13d0d28c82
parentea85ace4a90baca401e49f35365a6a8f7d3802c4 (diff)
Allow for disabling EEPROM subsystem entirely. (#25173)
-rw-r--r--builddefs/common_features.mk146
-rw-r--r--data/schemas/keyboard.jsonschema2
-rw-r--r--quantum/dynamic_keymap.c2
-rw-r--r--quantum/eeconfig.c5
-rw-r--r--quantum/led_matrix/led_matrix.c1
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c1
-rw-r--r--quantum/unicode/unicode.c1
-rw-r--r--quantum/via.c1
8 files changed, 75 insertions, 84 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index 802e01de43..f30a456fc3 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -171,80 +171,82 @@ endif
171 171
172VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash 172VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash
173EEPROM_DRIVER ?= vendor 173EEPROM_DRIVER ?= vendor
174ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),) 174ifneq ($(strip $(EEPROM_DRIVER)),none)
175 ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
175 $(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver) 176 $(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
176else 177 else
177 OPT_DEFS += -DEEPROM_ENABLE 178 OPT_DEFS += -DEEPROM_ENABLE
178 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom 179 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
179 COMMON_VPATH += $(DRIVER_PATH)/eeprom 180 COMMON_VPATH += $(DRIVER_PATH)/eeprom
180 COMMON_VPATH += $(PLATFORM_COMMON_DIR) 181 COMMON_VPATH += $(PLATFORM_COMMON_DIR)
181 ifeq ($(strip $(EEPROM_DRIVER)), custom) 182 ifeq ($(strip $(EEPROM_DRIVER)), custom)
182 # Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block 183 # Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
183 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM 184 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
184 SRC += eeprom_driver.c 185 SRC += eeprom_driver.c
185 else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling) 186 else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling)
186 # Wear-leveling EEPROM implementation 187 # Wear-leveling EEPROM implementation
187 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING 188 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
188 SRC += eeprom_driver.c eeprom_wear_leveling.c 189 SRC += eeprom_driver.c eeprom_wear_leveling.c
189 else ifeq ($(strip $(EEPROM_DRIVER)), i2c) 190 else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
190 # External I2C EEPROM implementation 191 # External I2C EEPROM implementation
191 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C 192 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
192 I2C_DRIVER_REQUIRED = yes 193 I2C_DRIVER_REQUIRED = yes
193 SRC += eeprom_driver.c eeprom_i2c.c 194 SRC += eeprom_driver.c eeprom_i2c.c
194 else ifeq ($(strip $(EEPROM_DRIVER)), spi) 195 else ifeq ($(strip $(EEPROM_DRIVER)), spi)
195 # External SPI EEPROM implementation 196 # External SPI EEPROM implementation
196 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI 197 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
197 SPI_DRIVER_REQUIRED = yes 198 SPI_DRIVER_REQUIRED = yes
198 SRC += eeprom_driver.c eeprom_spi.c 199 SRC += eeprom_driver.c eeprom_spi.c
199 else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash) 200 else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
200 # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated) 201 # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
201 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH 202 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
202 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash 203 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
203 COMMON_VPATH += $(DRIVER_PATH)/flash 204 COMMON_VPATH += $(DRIVER_PATH)/flash
204 SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c 205 SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
205 else ifeq ($(strip $(EEPROM_DRIVER)), transient) 206 else ifeq ($(strip $(EEPROM_DRIVER)), transient)
206 # Transient EEPROM implementation -- no data storage but provides runtime area for it 207 # Transient EEPROM implementation -- no data storage but provides runtime area for it
207 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT 208 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
208 SRC += eeprom_driver.c eeprom_transient.c 209 SRC += eeprom_driver.c eeprom_transient.c
209 else ifeq ($(strip $(EEPROM_DRIVER)), vendor) 210 else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
210 # Vendor-implemented EEPROM 211 # Vendor-implemented EEPROM
211 OPT_DEFS += -DEEPROM_VENDOR 212 OPT_DEFS += -DEEPROM_VENDOR
212 ifeq ($(PLATFORM),AVR) 213 ifeq ($(PLATFORM),AVR)
213 # Automatically provided by avr-libc, nothing required 214 # Automatically provided by avr-libc, nothing required
214 else ifeq ($(PLATFORM),CHIBIOS) 215 else ifeq ($(PLATFORM),CHIBIOS)
215 ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),) 216 ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
216 # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated) 217 # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
217 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH 218 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
218 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash 219 COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
219 COMMON_VPATH += $(DRIVER_PATH)/flash 220 COMMON_VPATH += $(DRIVER_PATH)/flash
220 SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c 221 SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
221 else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx AT32F415 GD32VF103),) 222 else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx AT32F415 GD32VF103),)
222 # Wear-leveling EEPROM implementation, backed by MCU flash 223 # Wear-leveling EEPROM implementation, backed by MCU flash
223 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING 224 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
224 SRC += eeprom_driver.c eeprom_wear_leveling.c 225 SRC += eeprom_driver.c eeprom_wear_leveling.c
225 WEAR_LEVELING_DRIVER ?= embedded_flash 226 WEAR_LEVELING_DRIVER ?= embedded_flash
226 else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),) 227 else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
227 # True EEPROM on STM32L0xx, L1xx 228 # True EEPROM on STM32L0xx, L1xx
228 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1 229 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
229 SRC += eeprom_driver.c eeprom_stm32_L0_L1.c 230 SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
230 else ifneq ($(filter $(MCU_SERIES),RP2040),) 231 else ifneq ($(filter $(MCU_SERIES),RP2040),)
231 # Wear-leveling EEPROM implementation, backed by RP2040 flash 232 # Wear-leveling EEPROM implementation, backed by RP2040 flash
232 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING 233 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
233 SRC += eeprom_driver.c eeprom_wear_leveling.c 234 SRC += eeprom_driver.c eeprom_wear_leveling.c
234 WEAR_LEVELING_DRIVER ?= rp2040_flash 235 WEAR_LEVELING_DRIVER ?= rp2040_flash
235 else ifneq ($(filter $(MCU_SERIES),KL2x K20x),) 236 else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
236 # Teensy EEPROM implementations 237 # Teensy EEPROM implementations
237 OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM 238 OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM
238 SRC += eeprom_kinetis_flexram.c 239 SRC += eeprom_kinetis_flexram.c
239 else 240 else
240 # Fall back to transient, i.e. non-persistent 241 # Fall back to transient, i.e. non-persistent
241 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT 242 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
242 SRC += eeprom_driver.c eeprom_transient.c 243 SRC += eeprom_driver.c eeprom_transient.c
244 endif
245 else ifeq ($(PLATFORM),TEST)
246 # Test harness "EEPROM"
247 OPT_DEFS += -DEEPROM_TEST_HARNESS
248 SRC += eeprom.c
243 endif 249 endif
244 else ifeq ($(PLATFORM),TEST)
245 # Test harness "EEPROM"
246 OPT_DEFS += -DEEPROM_TEST_HARNESS
247 SRC += eeprom.c
248 endif 250 endif
249 endif 251 endif
250endif 252endif
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 2314c72bdb..4e8bae1084 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -319,7 +319,7 @@
319 "properties": { 319 "properties": {
320 "driver": { 320 "driver": {
321 "type": "string", 321 "type": "string",
322 "enum": ["custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"] 322 "enum": ["none", "custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"]
323 }, 323 },
324 "backing_size": {"$ref": "qmk.definitions.v1#/unsigned_int"}, 324 "backing_size": {"$ref": "qmk.definitions.v1#/unsigned_int"},
325 "logical_size": {"$ref": "qmk.definitions.v1#/unsigned_int"} 325 "logical_size": {"$ref": "qmk.definitions.v1#/unsigned_int"}
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index 756b232f59..59027fb694 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -18,8 +18,6 @@
18#include "dynamic_keymap.h" 18#include "dynamic_keymap.h"
19#include "keymap_introspection.h" 19#include "keymap_introspection.h"
20#include "action.h" 20#include "action.h"
21#include "eeprom.h"
22#include "progmem.h"
23#include "send_string.h" 21#include "send_string.h"
24#include "keycodes.h" 22#include "keycodes.h"
25#include "nvm_dynamic_keymap.h" 23#include "nvm_dynamic_keymap.h"
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c
index 9aa60fc968..31bc9a6051 100644
--- a/quantum/eeconfig.c
+++ b/quantum/eeconfig.c
@@ -2,16 +2,11 @@
2#include <stdint.h> 2#include <stdint.h>
3#include <stdbool.h> 3#include <stdbool.h>
4#include "debug.h" 4#include "debug.h"
5#include "eeprom.h"
6#include "eeconfig.h" 5#include "eeconfig.h"
7#include "action_layer.h" 6#include "action_layer.h"
8#include "nvm_eeconfig.h" 7#include "nvm_eeconfig.h"
9#include "keycode_config.h" 8#include "keycode_config.h"
10 9
11#ifdef EEPROM_DRIVER
12# include "eeprom_driver.h"
13#endif // EEPROM_DRIVER
14
15#ifdef BACKLIGHT_ENABLE 10#ifdef BACKLIGHT_ENABLE
16# include "backlight.h" 11# include "backlight.h"
17#endif // BACKLIGHT_ENABLE 12#endif // BACKLIGHT_ENABLE
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 2e107a66e9..f9d76e2776 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -19,7 +19,6 @@
19 19
20#include "led_matrix.h" 20#include "led_matrix.h"
21#include "progmem.h" 21#include "progmem.h"
22#include "eeprom.h"
23#include "eeconfig.h" 22#include "eeconfig.h"
24#include "keyboard.h" 23#include "keyboard.h"
25#include "sync_timer.h" 24#include "sync_timer.h"
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index a18105c9b3..3fc9085f06 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -18,7 +18,6 @@
18 18
19#include "rgb_matrix.h" 19#include "rgb_matrix.h"
20#include "progmem.h" 20#include "progmem.h"
21#include "eeprom.h"
22#include "eeconfig.h" 21#include "eeconfig.h"
23#include "keyboard.h" 22#include "keyboard.h"
24#include "sync_timer.h" 23#include "sync_timer.h"
diff --git a/quantum/unicode/unicode.c b/quantum/unicode/unicode.c
index b0729335f0..dff1d43fb4 100644
--- a/quantum/unicode/unicode.c
+++ b/quantum/unicode/unicode.c
@@ -16,7 +16,6 @@
16 16
17#include "unicode.h" 17#include "unicode.h"
18 18
19#include "eeprom.h"
20#include "eeconfig.h" 19#include "eeconfig.h"
21#include "action.h" 20#include "action.h"
22#include "action_util.h" 21#include "action_util.h"
diff --git a/quantum/via.c b/quantum/via.c
index c746d9a608..3682b4ab2b 100644
--- a/quantum/via.c
+++ b/quantum/via.c
@@ -26,7 +26,6 @@
26 26
27#include "raw_hid.h" 27#include "raw_hid.h"
28#include "dynamic_keymap.h" 28#include "dynamic_keymap.h"
29#include "eeprom.h"
30#include "eeconfig.h" 29#include "eeconfig.h"
31#include "matrix.h" 30#include "matrix.h"
32#include "timer.h" 31#include "timer.h"