# MCUXpresso SDK SPI

# Copyright (c) 2016, Freescale Semiconductor, Inc.
# Copyright (c) 2017, 2021, NXP
# SPDX-License-Identifier: Apache-2.0

config SPI_MCUX_DSPI
	bool "MCUX DSPI driver"
	default y
	depends on DT_HAS_NXP_DSPI_ENABLED
	depends on CLOCK_CONTROL
	select PINCTRL
	help
	  Enable the MCUX DSPI driver.

if SPI_MCUX_DSPI

config DSPI_MCUX_EDMA
	bool "ENABLE EDMA for DSPI driver"
	depends on HAS_MCUX && DMA_MCUX_EDMA
	help
	  Enable DMA support for the MCUX DSPI driver.

if DSPI_MCUX_EDMA

config MCUX_DSPI_BUFFER_SIZE
	int "buffer size"
	default 144
	help
	  data buffer size

config MCUX_DSPI_EDMA_SHUFFLE_DATA
	bool "use the internal data process"
	default y
	help
	  TX data need pre-fix with command, user can choose not to use it

endif # DSPI_MCUX_EDMA

endif # SPI_MCUX_DSPI
