# Copyright (c) 2020 Teslabs Engineering S.L.
# Copyright (c) 2025 ZAL Zentrum für Angewandte Luftfahrtforschung GmbH
# SPDX-License-Identifier: Apache-2.0

config MEMC_STM32
	bool "STM32 Flexible Memory Controller (FMC)"
	default y
	depends on DT_HAS_ST_STM32_FMC_ENABLED || DT_HAS_ST_STM32H7_FMC_ENABLED
	select PINCTRL
	help
	  Enable STM32 Flexible Memory Controller.

if MEMC_STM32

config MEMC_STM32_SDRAM
	bool "STM32 FMC SDRAM controller"
	default y
	depends on DT_HAS_ST_STM32_FMC_SDRAM_ENABLED
	select USE_STM32_LL_FMC
	select USE_STM32_HAL_SDRAM
	help
	  Enable STM32 FMC SDRAM controller.

config MEMC_STM32_NOR_PSRAM
	bool "STM32 FMC NOR/PSRAM controller"
	default y
	depends on DT_HAS_ST_STM32_FMC_NOR_PSRAM_ENABLED
	select USE_STM32_LL_FMC
	select USE_STM32_HAL_NOR
	select USE_STM32_HAL_SRAM
	help
	  Enable STM32 FMC NOR/PSRAM controller.

endif

config MEMC_STM32_XSPI_PSRAM
	bool "STM32 XSPI PSRAM"
	default y
	depends on DT_HAS_ST_STM32_XSPI_PSRAM_ENABLED
	select USE_STM32_HAL_XSPI
	select PINCTRL
	help
	  Enable STM32 XSPI Memory Controller.

config MEMC_STM32_OSPI_PSRAM
	bool "STM32 OSPI PSRAM"
	default y
	depends on DT_HAS_ST_STM32_OSPI_PSRAM_ENABLED
	depends on SOC_SERIES_STM32U5X
	select USE_STM32_HAL_OSPI
	select USE_STM32_LL_DLYB
	select USE_STM32_HAL_DMA
	select USE_STM32_HAL_DMA_EX
	select PINCTRL
	help
	  Enable STM32 OSPI PSRAM Controller driver.
