# ST Microelectronics STM32 MCUs Flash driver config

# Copyright (c) 2016 RnDity Sp. z o.o.
# Copyright (c) 2017 BayLibre, SAS
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_ST_STM32_FLASH_CONTROLLER := st,stm32-flash-controller
DT_COMPAT_ST_STM32H7_FLASH_CONTROLLER := st,stm32h7-flash-controller

config SOC_FLASH_STM32
	bool "STM32 flash driver"
	depends on SOC_FAMILY_STM32
	depends on $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_FLASH_CONTROLLER)) || \
		$(dt_compat_enabled,$(DT_COMPAT_ST_STM32H7_FLASH_CONTROLLER))
	select FLASH_HAS_DRIVER_ENABLED
	default y
	select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32F0X
	select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32F1X
	select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32F3X
	select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32L0X
	select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32L1X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32G0X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32F2X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32F4X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32F7X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32L4X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32L5X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32U5X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32WBX
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32WLX
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32G4X
	select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32H7X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32G0X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32F2X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32F4X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32F7X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32L4X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32L5X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32U5X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32WBX
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32WLX
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32G4X
	select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32H7X
	select MPU_ALLOW_FLASH_WRITE if ARM_MPU
	help
	  Enable STM32F0x, STM32F1x, STM32F2x, STM32F3x, STM32F4x, STM32F7x,
	  STM32L0x, STM32L1x, STM32L4x, STM32L5x, STM32U5x, STM32WBx, STM32WLx, STM32G0x,
	  STM32G4x or STM3H7x series flash driver.

config SOC_FLASH_STM32_V1
	bool
	select FLASH_PAGE_LAYOUT
	select FLASH_HAS_PAGE_LAYOUT
	help
	  Enable the generic backend for the STM32 flash driver.
