# SPI driver configuration options

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

#
# SPI Drivers
#
menuconfig SPI
	bool "SPI hardware bus support"
	help
	  Enable support for the SPI hardware bus.

if SPI

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

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

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

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


config SPI_0
	bool "SPI port 0"
	help
	  Enable SPI controller port 0.

config SPI_0_OP_MODES
	int "Port 0 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_0
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 0, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_1
	bool "SPI port 1"
	help
	  Enable SPI controller port 1.

config SPI_1_OP_MODES
	int "Port 1 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_1
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 1, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_2
	bool "SPI port 2"
	help
	  Enable SPI controller port 2.

config SPI_2_OP_MODES
	int "Port 2 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_2
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 2, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_3
	bool "SPI port 3"
	help
	  Enable SPI controller port 3.

config SPI_3_OP_MODES
	int "Port 3 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_3
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 3, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_4
	bool "SPI port 4"
	help
	  Enable SPI controller port 4.

config SPI_4_OP_MODES
	int "Port 4 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_4
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 4, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_5
	bool "SPI port 5"
	help
	  Enable SPI controller port 5.

config SPI_5_OP_MODES
	int "Port 5 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_5
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 5, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_6
	bool "SPI port 6"
	help
	  Enable SPI controller port 6.

config SPI_6_OP_MODES
	int "Port 6 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_6
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 6, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_7
	bool "SPI port 7"
	help
	  Enable SPI controller port 7.

config SPI_7_OP_MODES
	int "Port 7 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_7
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 7, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

config SPI_8
	bool "SPI port 8"
	help
	  Enable SPI controller port 8.

config SPI_8_OP_MODES
	int "Port 8 supported operation modes (master/slave/both)"
	default 1
	range 1 3
	depends on SPI_8
	help
	  This sets the supported operation modes at runtime, by the SPI
	  port 8, where:
	  1 is MASTER mode only (default)
	  2 is SLAVE mode only
	  3 is both modes are available.

source "drivers/spi/Kconfig.stm32"

source "drivers/spi/Kconfig.dw"

source "drivers/spi/Kconfig.mcux_dspi"

source "drivers/spi/Kconfig.mcux_flexcomm"

source "drivers/spi/Kconfig.mcux_lpspi"

source "drivers/spi/Kconfig.rv32m1_lpspi"

source "drivers/spi/Kconfig.sam"

source "drivers/spi/Kconfig.sam0"

source "drivers/spi/Kconfig.sifive"

source "drivers/spi/Kconfig.nrfx"

source "drivers/spi/Kconfig.cc13xx_cc26xx"

source "drivers/spi/Kconfig.litex"

source "drivers/spi/Kconfig.oc_simple"

source "drivers/spi/Kconfig.xec_qmspi"

source "drivers/spi/Kconfig.gecko"

endif # SPI
