diff options
| author | Nick Brassel <nick@tzarc.org> | 2025-04-20 05:20:00 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-19 20:20:00 +0100 |
| commit | 5c39722ab9c9c7b86f34d4ed4ca4620a47dab01b (patch) | |
| tree | 54580856cc6c7cdea1fdf69775f67c13d0d28c82 /builddefs | |
| parent | ea85ace4a90baca401e49f35365a6a8f7d3802c4 (diff) | |
Allow for disabling EEPROM subsystem entirely. (#25173)
Diffstat (limited to 'builddefs')
| -rw-r--r-- | builddefs/common_features.mk | 146 |
1 files changed, 74 insertions, 72 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 | ||
| 172 | VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash | 172 | VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash |
| 173 | EEPROM_DRIVER ?= vendor | 173 | EEPROM_DRIVER ?= vendor |
| 174 | ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),) | 174 | ifneq ($(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) |
| 176 | else | 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 |
| 250 | endif | 252 | endif |
