# Kconfig - SPI driver configuration options

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

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

config SPI_QMSI
	bool "QMSI driver for SPI controller"
	depends on SPI && QMSI
	default n
	help
	  SPI driver implementation using QMSI library. QMSI is the
	  Quark Microcontroller Software Interface, providing a common
	  interface to the Quark family of microcontrollers.

config SPI_QMSI_SS
	bool "QMSI driver for SPI controller on Sensor Subsystem"
	depends on SPI && QMSI
	default n
	help
	  SPI driver implementation using QMSI library. This instance is
	  for the Sensor Subsystem.

config SPI_INTEL
	bool
	prompt "Intel SPI controller driver"
	depends on SPI && CPU_MINUTEIA
	default n
	help
	  Enable support for Intel's SPI controllers. Such controller
	  was formerly found on XScale chips. It can be found nowadays
	  on CEXXXX Intel media controller and Quark CPU (2 of them).


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

config SYS_LOG_SPI_LEVEL
	int
	prompt "SPI Driver Log level"
	depends on SYS_LOG && SPI
	default 0
	range 0 4
	help
	  Sets log level for SPI drivers.
	  Levels are:
	  0 OFF, do not write
	  1 ERROR, only write SYS_LOG_ERR
	  2 WARNING, write SYS_LOG_WRN in addition to previous level
	  3 INFO, write SYS_LOG_INF in addition to previous levels
	  4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config SPI_CS_GPIO
	bool "SPI port CS pin is controlled via a GPIO port"
	select GPIO
	default n

config	SPI_0
	bool
	prompt "SPI port 0"
	default n
	help
	  Enable SPI controller port 0.

config SPI_0_NAME
	string
	prompt "SPI port 0 device name"
	depends on SPI_0
	default "SPI_0"

config SPI_0_IRQ_PRI
	int
	prompt "Port 0 interrupt priority"
	depends on SPI_0

config SPI_0_DEFAULT_CFG
	hex "Port 0 default configuration"
	depends on SPI_0
	default 0x80

config SPI_0_DEFAULT_BAUD_RATE
	int "Port 0 default baud rate"
	depends on SPI_0
	default 500000

config SPI_0_CS_GPIO_PORT
	string
	prompt "The GPIO port which is used to control CS"
	depends on SPI_0 && SPI_CS_GPIO
	default "GPIO_0"

config SPI_0_CS_GPIO_PIN
	int "The GPIO PIN which is used to act as a CS pin"
	depends on SPI_0 && SPI_CS_GPIO
	default 0

config SPI_1
	bool
	prompt "SPI port 1"
	default n
	help
	  Enable SPI controller port 1.

config SPI_1_NAME
	string
	prompt "SPI port 1 device name"
	depends on SPI_1
	default "SPI_1"

config SPI_1_IRQ_PRI
	int
	prompt "Port 0 interrupt priority"
	depends on SPI_1

config SPI_1_DEFAULT_CFG
	hex "Port 1 default configuration"
	depends on SPI_1
	default 0x80

config SPI_1_DEFAULT_BAUD_RATE
	int "Port 1 default baud rate"
	depends on SPI_1
	default 500000

config SPI_1_CS_GPIO_PORT
	string
	prompt "The GPIO port which is used to control CS"
	depends on SPI_1 && SPI_CS_GPIO
	default "GPIO_0"

config SPI_1_CS_GPIO_PIN
	int "The GPIO PIN which is used to act as a CS pin"
	depends on SPI_1 && SPI_CS_GPIO
	default 0

config SPI_2
	bool
	prompt "SPI port 2"
	default n
	help
	  Enable SPI controller port 2.

config SPI_2_NAME
	string
	prompt "SPI port 2 device name"
	depends on SPI_2
	default "SPI_2"

config SPI_2_IRQ_PRI
	int
	prompt "Port 2 interrupt priority"
	depends on SPI_2

config SPI_2_DEFAULT_CFG
	hex "Port 2 default configuration"
	depends on SPI_2
	default 0x80

config SPI_2_DEFAULT_BAUD_RATE
	int "Port 2 default baud rate"
	depends on SPI_2
	default 500000

config SPI_2_CS_GPIO_PORT
	string
	prompt "The GPIO port which is used to control CS"
	depends on SPI_2 && SPI_CS_GPIO
	default "GPIO_0"

config SPI_2_CS_GPIO_PIN
	int "The GPIO PIN which is used to act as a CS pin"
	depends on SPI_2 && SPI_CS_GPIO
	default 0

config SPI_SS_INIT_PRIORITY
	int "Init priority"
	depends on SPI_QMSI_SS
	default 70
	help
	  Device driver initialization priority.

config SPI_SS_CS_GPIO
	bool "SPI port CS pin is controlled via a GPIO port"
	select GPIO
	depends on SPI_QMSI_SS
	default n

config	SPI_SS_0
	bool
	prompt "SPI SS port 0"
	depends on SPI_QMS_SS
	default n
	help
	  Enable SPI controller port 0.

config SPI_SS_0_NAME
	string
	prompt "SPI SS port 0 device name"
	depends on SPI_SS_0
	default "SPI_SS_0"

config SPI_SS_0_IRQ_PRI
	int
	prompt "Port 0 interrupt priority"
	depends on SPI_SS_0

config SPI_SS_0_CS_GPIO_PORT
	string
	prompt "The GPIO port which is used to control CS"
	depends on SPI_SS_0 && SPI_SS_CS_GPIO
	default "GPIO_0"

config SPI_SS_0_CS_GPIO_PIN
	int "The GPIO PIN which is used to act as a CS pin"
	depends on SPI_SS_0 && SPI_SS_CS_GPIO
	default 0

config SPI_SS_1
	bool
	prompt "SPI SS port 1"
	depends on SPI_QMSI_SS
	default n
	help
	  Enable SPI controller port 1.

config SPI_SS_1_NAME
	string
	prompt "SPI port 1 device name"
	depends on SPI_SS_1
	default "SPI_SS_1"

config SPI_SS_1_IRQ_PRI
	int
	prompt "Port 0 interrupt priority"
	depends on SPI_SS_1

config SPI_SS_1_CS_GPIO_PORT
	string
	prompt "The GPIO port which is used to control CS"
	depends on SPI_SS_1 && SPI_SS_CS_GPIO
	default "GPIO_0"

config SPI_SS_1_CS_GPIO_PIN
	int "The GPIO PIN which is used to act as a CS pin"
	depends on SPI_SS_1 && SPI_SS_CS_GPIO
	default 0

source "drivers/spi/Kconfig.dw"

source "drivers/spi/Kconfig.mcux_dspi"

source "drivers/spi/Kconfig.nrf5"

endif # SPI
