# 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 SPI driver"
	depends on HAS_MCUX && CLOCK_CONTROL
	select PINCTRL
	help
	  Enable support for mcux spi driver.

if SPI_MCUX_DSPI

config DSPI_MCUX_EDMA
	bool "ENABLE EDMA for DSPI driver"
	depends on HAS_MCUX && HAS_MCUX_EDMA
	help
	  Enable 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
