# Copyright (c) 2024 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0

config SPI_RENESAS_RZ_RSPI
	bool "Renesas RZ RSPI SPI"
	default y
	depends on DT_HAS_RENESAS_RZ_RSPI_ENABLED
	select USE_RZ_FSP_RSPI_SPI
	select PINCTRL
	help
	  Enable Renesas RZ RSPI SPI Driver.

if SPI_RENESAS_RZ_RSPI

config SPI_RENESAS_RZ_RSPI_INTERRUPT
	bool "RZ RSPI Interrupt Support"
	help
	  Enable Interrupt support for the RSPI.

config SPI_RENESAS_RZ_RSPI_DMAC
	bool "RZ SPI DMA Support"
	select USE_RZ_FSP_DMA
	help
	  Enable the SPI DMA mode for SPI instances

if SPI_RTIO
config SPI_RTIO_SQ_SIZE
	int "Number of available submission queue entries"
	default 8 # Sensible default that covers most common spi transactions
	help
	  When RTIO is use 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_RTIO_CQ_SIZE
	int "Number of available completion queue entries"
	default 8 # Sensible default that covers most common spi transactions

endif # SPI_RTIO

endif # SPI_RENESAS_RZ_RSPI
