@ -177,7 +177,7 @@ ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
include $( QUANTUM_DIR) /painter/rules.mk
include $( QUANTUM_DIR) /painter/rules.mk
e n d i f
e n d i f
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash
EEPROM_DRIVER ?= vendor
EEPROM_DRIVER ?= vendor
i f e q ( $( filter $ ( EEPROM_DRIVER ) ,$ ( VALID_EEPROM_DRIVER_TYPES ) ) , )
i f e q ( $( filter $ ( EEPROM_DRIVER ) ,$ ( VALID_EEPROM_DRIVER_TYPES ) ) , )
$( call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER= " $( EEPROM_DRIVER) " is not a valid EEPROM driver)
$( call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER= " $( EEPROM_DRIVER) " is not a valid EEPROM driver)
@ -204,6 +204,12 @@ else
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
QUANTUM_LIB_SRC += spi_master.c
QUANTUM_LIB_SRC += spi_master.c
SRC += eeprom_driver.c eeprom_spi.c
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ( $( strip $( EEPROM_DRIVER) ) , legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
COMMON_VPATH += $( PLATFORM_PATH) /$( PLATFORM_KEY) /$( DRIVER_DIR) /flash
COMMON_VPATH += $( DRIVER_PATH) /flash
SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
else ifeq ( $( strip $( EEPROM_DRIVER) ) , transient)
else ifeq ( $( strip $( EEPROM_DRIVER) ) , transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
@ -214,12 +220,17 @@ else
ifeq ( $( PLATFORM) ,AVR)
ifeq ( $( PLATFORM) ,AVR)
# Automatically provided by avr-libc, nothing required
# Automatically provided by avr-libc, nothing required
else ifeq ( $( PLATFORM) ,CHIBIOS)
else ifeq ( $( PLATFORM) ,CHIBIOS)
ifneq ( $( filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8 , $( MCU_SERIES) _$( MCU_LDSCRIPT) ) ,)
ifneq ( $( filter %_STM32F072xB %_STM32F042x6, $( MCU_SERIES) _$( MCU_LDSCRIPT) ) ,)
# Emulated EEPROM
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
COMMON_VPATH += $( PLATFORM_PATH) /$( PLATFORM_KEY) /$( DRIVER_DIR) /flash
COMMON_VPATH += $( PLATFORM_PATH) /$( PLATFORM_KEY) /$( DRIVER_DIR) /flash
COMMON_VPATH += $( DRIVER_PATH) /flash
COMMON_VPATH += $( DRIVER_PATH) /flash
SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
else ifneq ( $( filter $( MCU_SERIES) ,STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx GD32VF103) ,)
# Wear-leveling EEPROM implementation, backed by MCU flash
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
SRC += eeprom_driver.c eeprom_wear_leveling.c
WEAR_LEVELING_DRIVER = embedded_flash
else ifneq ( $( filter $( MCU_SERIES) ,STM32L0xx STM32L1xx) ,)
else ifneq ( $( filter $( MCU_SERIES) ,STM32L0xx STM32L1xx) ,)
# True EEPROM on STM32L0xx, L1xx
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1