# Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig SPI_NRFX
	bool "nRF SPI nrfx drivers"
	depends on SOC_FAMILY_NRF
	help
	  Enable support for nrfx SPI drivers for nRF MCU series.
	  Peripherals with the same instance ID cannot be used together,
	  e.g. SPI_0 and I2C_0. You may need to disable I2C_0 or I2C_1.

if SPI_NRFX

# In most Nordic SoCs the SPI and TWI peripherals with the same instance
# number share certain resources and cannot be used at the same time.
# In nRF52810 there are only single instances of these peripherals and
# they are arranged in a different way so this limitation does not apply.
if SPI_0 && (!I2C_0 || SOC_NRF52810)

choice
	prompt "SPI Port 0 Driver type"

config SPI_0_NRF_SPI
	bool "nRF SPI 0"
	depends on HAS_HW_NRF_SPI0
	select NRFX_SPI
	help
	  Enable nRF SPI Master without EasyDMA on port 0.

config SPI_0_NRF_SPIM
	bool "nRF SPIM 0"
	# This driver is not available for nRF52832 because of the anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT = 1).
	depends on HAS_HW_NRF_SPIM0 && !SOC_NRF52832
	select NRFX_SPIM
	help
	  Enable nRF SPI Master with EasyDMA on port 0.

config SPI_0_NRF_SPIS
	bool "nRF SPIS 0"
	depends on HAS_HW_NRF_SPIS0
	depends on SPI_SLAVE
	select NRFX_SPIS
	help
	  Enable nRF SPI Slave with EasyDMA on port 0.
	  Due to hardware limitations the implementation supports only simple
	  buffers (consisting of one part) located in RAM.

endchoice

if SPI_0_NRF_SPI || SPI_0_NRF_SPIM || SPI_0_NRF_SPIS

config SPI_0_NRF_SCK_PIN
	int "SCK pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for SCK.

config SPI_0_NRF_MOSI_PIN
	int "MOSI pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MOSI.

config SPI_0_NRF_MISO_PIN
	int "MISO pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MISO.

config SPI_0_NRF_ORC
	hex "Over-read Character"
	range 0x00 0xff
	default 0xff
	help
	  Over-read character. Character clocked out after an over-read
	  of the transmit buffer.

endif # SPI_0_NRF_SPI || SPI_0_NRF_SPIM || SPI_0_NRF_SPIS

if SPI_0_NRF_SPIS

config SPI_0_NRF_CSN_PIN
	int "CSN pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for Chip Select.

config SPI_0_NRF_DEF
	hex "Default Character"
	range 0x00 0xff
	default 0xff
	help
	  Default character. Character clocked out when the slave was not
	  provided with buffers and is ignoring the transaction.

endif # SPI_0_NRF_SPIS

endif # SPI_0 && (!I2C_0 || SOC_NRF52810)

# Nordic TWIx1 and SPIx1 instances can not be used at the same time.
if SPI_1 && !I2C_1

choice
	prompt "SPI Port 1 Driver type"

config SPI_1_NRF_SPI
	bool "nRF SPI 1"
	depends on HAS_HW_NRF_SPI1
	select NRFX_SPI
	help
	  Enable nRF SPI Master without EasyDMA on port 1.

config SPI_1_NRF_SPIM
	bool "nRF SPIM 1"
	# This driver is not available for nRF52832 because of the anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT = 1).
	depends on HAS_HW_NRF_SPIM1 && !SOC_NRF52832
	select NRFX_SPIM
	help
	  Enable nRF SPI Master with EasyDMA on port 1.

config SPI_1_NRF_SPIS
	bool "nRF SPIS 1"
	depends on HAS_HW_NRF_SPIS1
	depends on SPI_SLAVE
	select NRFX_SPIS
	help
	  Enable nRF SPI Slave with EasyDMA on port 1.
	  Due to hardware limitations the implementation supports only simple
	  buffers (consisting of one part) located in RAM.

endchoice

if SPI_1_NRF_SPI || SPI_1_NRF_SPIM || SPI_1_NRF_SPIS

config SPI_1_NRF_SCK_PIN
	int "SCK pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for SCK.

config SPI_1_NRF_MOSI_PIN
	int "MOSI pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MOSI.

config SPI_1_NRF_MISO_PIN
	int "MISO pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MISO.

config SPI_1_NRF_ORC
	hex "Over-read Character"
	range 0x00 0xff
	default 0xff
	help
	  Over-read character. Character clocked out after an over-read
	  of the transmit buffer.

endif # SPI_1_NRF_SPI || SPI_1_NRF_SPIM || SPI_1_NRF_SPIS

if SPI_1_NRF_SPIS

config SPI_1_NRF_CSN_PIN
	int "CSN pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for Chip Select.

config SPI_1_NRF_DEF
	hex "Default Character"
	range 0x00 0xff
	default 0xff
	help
	  Default character. Character clocked out when the slave was not
	  provided with buffers and is ignoring the transaction.

endif # SPI_1_NRF_SPIS

endif # SPI_1 && !I2C_1

if SPI_2

choice
	prompt "SPI Port 2 Driver type"

config SPI_2_NRF_SPI
	bool "nRF SPI 2"
	depends on HAS_HW_NRF_SPI2
	select NRFX_SPI
	help
	  Enable nRF SPI Master without EasyDMA on port 2.

config SPI_2_NRF_SPIM
	bool "nRF SPIM 2"
	# This driver is not available for nRF52832 because of the anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT = 1).
	depends on HAS_HW_NRF_SPIM2 && !SOC_NRF52832
	select NRFX_SPIM
	help
	  Enable nRF SPI Master with EasyDMA on port 2.

config SPI_2_NRF_SPIS
	bool "nRF SPIS 2"
	depends on HAS_HW_NRF_SPIS2
	depends on SPI_SLAVE
	select NRFX_SPIS
	help
	  Enable nRF SPI Slave with EasyDMA on port 2.
	  Due to hardware limitations the implementation supports only simple
	  buffers (consisting of one part) located in RAM.

endchoice

if SPI_2_NRF_SPI || SPI_2_NRF_SPIM || SPI_2_NRF_SPIS

config SPI_2_NRF_SCK_PIN
	int "SCK pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for SCK.

config SPI_2_NRF_MOSI_PIN
	int "MOSI pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MOSI.

config SPI_2_NRF_MISO_PIN
	int "MISO pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MISO.

config SPI_2_NRF_ORC
	hex "Over-read Character"
	range 0x00 0xff
	default 0xff
	help
	  Over-read character. Character clocked out after an over-read
	  of the transmit buffer.

endif # SPI_2_NRF_SPI || SPI_2_NRF_SPIM || SPI_2_NRF_SPIS

if SPI_2_NRF_SPIS

config SPI_2_NRF_CSN_PIN
	int "CSN pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for Chip Select.

config SPI_2_NRF_DEF
	hex "Default Character"
	range 0x00 0xff
	default 0xff
	help
	  Default character. Character clocked out when the slave was not
	  provided with buffers and is ignoring the transaction.

endif # SPI_2_NRF_SPIS

endif # SPI_2

if SPI_3

config SPI_3_NRF_SPIM
	bool
	depends on HAS_HW_NRF_SPIM3
	select NRFX_SPIM
	default y

if SPI_3_NRF_SPIM

config SPI_3_NRF_SCK_PIN
	int "SCK pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for SCK

config SPI_3_NRF_MOSI_PIN
	int "MOSI pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MOSI

config SPI_3_NRF_MISO_PIN
	int "MISO pin number"
	range 0 47 if SOC_NRF52840_QIAA
	range 0 31
	help
	  GPIO pin number to use for MISO

config SPI_3_NRF_ORC
	hex "Over-read Character"
	range 0x00 0xff
	default 0xff
	help
	  Over-read character. Character clocked out after an over-read
	  of the transmit buffer.

config SPI_3_NRF_RX_DELAY
	int "MISO sampling delay"
	range 0 7
	default 0
	help
	  Number of 64 MHz clock cycles (15.625 ns) delay from the sampling
	  edge of SCK (leading or trailing, depending on the CPHA setting used)
	  until the input serial data on MISO is actually sampled.

endif # SPI_3_NRF_SPIM

endif # SPI_3

if NRFX_SPIM

config SPI_NRFX_RAM_BUFFER_SIZE
	int "Size of RAM buffer"
	default 0
	help
	  SPIM peripherals cannot transmit data directly from flash. Therefore,
	  a buffer in RAM needs to be provided for each instance of SPI driver
	  using SPIM peripheral, so that the driver can copy there a chunk of
	  data from flash and transmit it.
	  The size is specified in bytes. A size of 0 means that this feature
	  should be disabled, and the application must then take care of not
	  supplying buffers located in flash to the driver, otherwise such
	  transfers will fail.

endif # NRFX_SPIM

endif # SPI_NRFX
