# STM32 Quad SPI flash driver configuration options

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

DT_STM32_QUADSPI_HAS_DMA := $(dt_nodelabel_has_prop,quadspi,dmas)

config FLASH_STM32_QSPI
	bool "STM32 Quad SPI Flash driver"
	default y
	depends on DT_HAS_ST_STM32_QSPI_NOR_ENABLED
	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.
