# Copyright (c) 2020 Teslabs Engineering S.L.
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_ST_STM32_FMC := st,stm32-fmc

config MEMC_STM32
	bool "STM32 Flexible Memory Controller (FMC)"
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_FMC))
	help
	  Enable STM32 Flexible Memory Controller.

DT_COMPAT_ST_STM32_FMC_SDRAM := st,stm32-fmc-sdram

config MEMC_STM32_SDRAM
	bool "STM32 FMC SDRAM controller"
	depends on MEMC_STM32
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_FMC_SDRAM))
	select USE_STM32_LL_FMC
	select USE_STM32_HAL_SDRAM
	help
	  Enable STM32 FMC SDRAM controller.

DT_COMPAT_ST_STM32_FMC_NOR_PSRAM := st,stm32-fmc-nor-psram

config MEMC_STM32_NOR_PSRAM
	bool "STM32 FMC NOR/PSRAM controller"
	depends on MEMC_STM32
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_FMC_NOR_PSRAM))
	select USE_STM32_LL_FMC
	select USE_STM32_HAL_NOR
	select USE_STM32_HAL_SRAM
	help
	  Enable STM32 FMC NOR/PSRAM controller.
