# STM32 Quad SPI flash driver configuration options

# Copyright (c) 2020 Piotr Mienkowski
# Copyright (c) 2020 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_ST_STM32_QSPI_NOR := st,stm32-qspi-nor
DT_STM32_QUADSPI_HAS_DMA := $(dt_node_has_prop,quadspi,dmas)

config FLASH_STM32_QSPI
	bool "STM32 Quad SPI Flash driver"
	depends on SOC_FAMILY_STM32
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_QSPI_NOR))
	select USE_STM32_HAL_QSPI
	select USE_STM32_HAL_MDMA if SOC_SERIES_STM32H7X
	select FLASH_HAS_DRIVER_ENABLED
	select FLASH_JESD216
	select FLASH_PAGE_LAYOUT
	select FLASH_HAS_PAGE_LAYOUT
	select DMA if $(DT_STM32_QUADSPI_HAS_DMA)
	select USE_STM32_HAL_DMA if $(DT_STM32_QUADSPI_HAS_DMA)
	help
	  Enable QSPI-NOR support on the STM32 family of processors.
