# STM32 Octo SPI flash driver configuration options

# Copyright (c) 2022 STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

DT_STM32_OCTOSPI_HAS_DMA := $(dt_compat_any_has_prop,$(DT_COMPAT_ST_STM32_OSPI),dmas)

config FLASH_STM32_OSPI
	bool "STM32 Octo SPI Flash driver"
	default y
	depends on DT_HAS_ST_STM32_OSPI_NOR_ENABLED
	select USE_STM32_HAL_OSPI if !SOC_SERIES_STM32H5X
	select USE_STM32_HAL_XSPI if SOC_SERIES_STM32H5X
	select USE_STM32_LL_DLYB if (SOC_SERIES_STM32H5X || SOC_SERIES_STM32U5X)
	select USE_STM32_HAL_MDMA if SOC_SERIES_STM32H7X
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_JESD216
	select FLASH_HAS_PAGE_LAYOUT
	select FLASH_HAS_EXPLICIT_ERASE
	select PINCTRL
	select DMA if $(DT_STM32_OCTOSPI_HAS_DMA)
	select USE_STM32_HAL_DMA if $(DT_STM32_OCTOSPI_HAS_DMA)
	select USE_STM32_HAL_DMA_EX if SOC_SERIES_STM32U5X && \
					$(DT_STM32_OCTOSPI_HAS_DMA)
	help
	  Enable OSPI-NOR support on the STM32 family of processors.
