# MCUXpresso SDK SPI

# Copyright (c) 2018, NXP
# SPDX-License-Identifier: Apache-2.0

config SPI_MCUX_LPSPI
	bool "MCUX SPI driver"
	default y
	depends on DT_HAS_NXP_IMX_LPSPI_ENABLED
	depends on CLOCK_CONTROL
	select PINCTRL
	select MFD if DT_HAS_NXP_LP_FLEXCOMM_ENABLED
	help
	  Enable support for mcux spi driver.

if SPI_MCUX_LPSPI
config SPI_MCUX_LPSPI_DMA
	bool "MCUX LPSPI SPI DMA Support"
	select DMA
	help
	  Enable the SPI DMA mode for SPI instances
	  that enable dma channels in their device tree node.

if SPI_RTIO
config SPI_MCUX_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.
endif # SPI_RTIO

endif # SPI_MCUX_LPSPI
