# SPI driver configuration options

# Copyright (c) 2015-2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

#
# SPI Drivers
#
menuconfig SPI
	bool "Serial Peripheral Interface (SPI) bus drivers"
	help
	  Enable support for the SPI hardware bus.

if SPI

config SPI_SHELL
	bool "SPI Shell"
	depends on SHELL
	help
	  Enable SPI Shell.

	  The currently SPI shell supports simple SPI write/read (transceive)
	  operation.

config SPI_ASYNC
	bool "Asynchronous call support"
	depends on MULTITHREADING
	select POLL
	help
	  This option enables the asynchronous API calls.

config SPI_RTIO
	bool "RTIO support [EXPERIMENTAL]"
	select EXPERIMENTAL
	select RTIO
	select RTIO_WORKQ
	help
	  This option enables the RTIO API calls. RTIO support is
	  experimental as the API itself is unstable.

if SPI_RTIO

config SPI_RTIO_FALLBACK_MSGS
	int "Number of available spi_buf structs for the default handler to use"
	default 4
	help
		When RTIO is used with a driver that does not yet implement the submit API
		natively the submissions are converted back to struct spi_buf values that
		are given to spi_transfer. This requires some number of msgs be available to convert
		the submissions into on the stack. MISRA rules dictate we must know this in
		advance.

		In all likelihood 4 is going to work for everyone, but in case you do end up with
		an issue where you are using RTIO, your driver does not implement submit natively,
		and get an error relating to not enough spi msgs this is the Kconfig to manipulate.

endif # SPI_RTIO

config SPI_SLAVE
	bool "Slave support [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  Enables Driver SPI slave operations. Slave support depends
	  on the driver and the hardware it runs on.

config SPI_EXTENDED_MODES
	bool "Extended modes [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  Enables extended operations in the SPI API. Currently, this
	  enables the possibility to select the line mode (single/dual/
	  quad/octal), though none of these mode are really supported as
	  it would require more features exposed into the SPI buffer.

config SPI_INIT_PRIORITY
	int "Init priority"
	default KERNEL_INIT_PRIORITY_DEVICE
	help
	  Device driver initialization priority.

config SPI_COMPLETION_TIMEOUT_TOLERANCE
	int "Completion timeout tolerance (ms)"
	default 200
	help
	  The tolerance value in ms for the SPI completion timeout logic.

config SPI_STATS
	bool "SPI device statistics"
	depends on STATS
	help
	  Enable SPI device statistics.

config SPI_SHELL_MAX_DEVICE_SLOTS
	int "Number of empty device slots in the SPI shell"
	depends on SPI_SHELL
	default 16
	help
	  The number of empty device slots in the SPI shell. Increase it, if you
	  are using many SPI devices and see "ERROR: not enough space" error
	  messages when using SPI shell.

module = SPI
module-str = spi
source "subsys/logging/Kconfig.template.log_config"

# zephyr-keep-sorted-start
source "drivers/spi/Kconfig.ambiq"
source "drivers/spi/Kconfig.andes_atcspi200"
source "drivers/spi/Kconfig.b91"
source "drivers/spi/Kconfig.bitbang"
source "drivers/spi/Kconfig.cc13xx_cc26xx"
source "drivers/spi/Kconfig.cc23x0"
source "drivers/spi/Kconfig.cdns"
source "drivers/spi/Kconfig.dw"
source "drivers/spi/Kconfig.egis_et171"
source "drivers/spi/Kconfig.esp32"
source "drivers/spi/Kconfig.gd32"
source "drivers/spi/Kconfig.grlib_spimctrl"
source "drivers/spi/Kconfig.ifx_cat1"
source "drivers/spi/Kconfig.it51xxx"
source "drivers/spi/Kconfig.it8xxx2"
source "drivers/spi/Kconfig.litex"
source "drivers/spi/Kconfig.max32"
source "drivers/spi/Kconfig.mchp_mss"
source "drivers/spi/Kconfig.mchp_mss_qspi"
source "drivers/spi/Kconfig.mcux_dspi"
source "drivers/spi/Kconfig.mcux_ecspi"
source "drivers/spi/Kconfig.mcux_flexcomm"
source "drivers/spi/Kconfig.mcux_flexio"
source "drivers/spi/Kconfig.mec5"
source "drivers/spi/Kconfig.npcx"
source "drivers/spi/Kconfig.nrfx"
source "drivers/spi/Kconfig.numaker"
source "drivers/spi/Kconfig.nxp_s32"
source "drivers/spi/Kconfig.oc_simple"
source "drivers/spi/Kconfig.omap"
source "drivers/spi/Kconfig.opentitan"
source "drivers/spi/Kconfig.pl022"
source "drivers/spi/Kconfig.psoc6"
source "drivers/spi/Kconfig.pw"
source "drivers/spi/Kconfig.renesas_ra"
source "drivers/spi/Kconfig.renesas_ra8"
source "drivers/spi/Kconfig.renesas_rx"
source "drivers/spi/Kconfig.renesas_rz"
source "drivers/spi/Kconfig.rpi_pico"
source "drivers/spi/Kconfig.rv32m1_lpspi"
source "drivers/spi/Kconfig.sam"
source "drivers/spi/Kconfig.sam0"
source "drivers/spi/Kconfig.sc18is606"
source "drivers/spi/Kconfig.sedi"
source "drivers/spi/Kconfig.sifive"
source "drivers/spi/Kconfig.silabs_eusart"
source "drivers/spi/Kconfig.silabs_siwx91x_gspi"
source "drivers/spi/Kconfig.silabs_usart"
source "drivers/spi/Kconfig.smartbond"
source "drivers/spi/Kconfig.spi_emul"
source "drivers/spi/Kconfig.stm32"
source "drivers/spi/Kconfig.test"
source "drivers/spi/Kconfig.wch"
source "drivers/spi/Kconfig.xec_qmspi"
source "drivers/spi/Kconfig.xlnx"
source "drivers/spi/Kconfig.xmc4xxx"
source "drivers/spi/spi_nxp_lpspi/Kconfig"
# zephyr-keep-sorted-stop

endif # SPI
