# Copyright (c) 2024 Analog Devices, Inc.
# SPDX-License-Identifier: Apache-2.0

config SPI_MAX32
	bool "MAX32 MCU SPI controller driver"
	default y
	depends on DT_HAS_ADI_MAX32_SPI_ENABLED
	select PINCTRL
	help
	  Enable SPI support on the MAX32 family of processors.

if SPI_MAX32

config SPI_MAX32_INTERRUPT
	bool "MAX32 MCU SPI Interrupt Support"
	help
	  Enable interrupt support for MAX32 MCU SPI driver.

config SPI_MAX32_DMA
	bool "MAX32 MCU SPI DMA Support"
	select DMA
	select CACHE_MANAGEMENT if CPU_HAS_DCACHE
	help
	  Enable DMA support for MAX32 MCU SPI driver.

config SPI_MAX32_RTIO
	bool "MAX32 SPI RTIO Support"
	default y if SPI_RTIO
	depends on !SPI_ASYNC
	select SPI_MAX32_INTERRUPT

if SPI_MAX32_RTIO
config SPI_MAX32_RTIO_SQ_SIZE
	int "Number of available submission queue entries"
	default 8 # Sensible default that covers most common spi transactions
	help
	  When RTIO is used with SPI, each driver holds a context with which blocking
	  API calls use to perform SPI transactions. This queue needs to be as deep
	  as the longest set of spi_buf_sets used, where normal SPI operations are
	  used (equal length buffers). It may need to be slightly deeper where the
	  spi buffer sets for transmit/receive are not always matched equally in
	  length as these are transformed into normal transceives.

config SPI_MAX32_RTIO_CQ_SIZE
	int "Number of available completion queue entries"
	default 8 # Sensible default that covers most common spi transactions

endif # SPI_MAX32_RTIO

endif # SPI_MAX32
