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

menuconfig SPI_NRFX
	bool "nRF SPI nrfx drivers"
	default y
	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

config SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58
	depends on SOC_NRF52832
	bool "Allow enabling the SPIM driver despite PAN 58"
	help
	  Allow enabling the nRF SPI Master with EasyDMA, despite
	  Product Anomaly Notice 58 (SPIM: An additional byte is
	  clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1).
	  Without this override, the SPI Master is only available
	  without EasyDMA. Note that the 'SPIM' and 'SPIS' drivers
	  use EasyDMA, while the 'SPI' driver does not. Use this
	  option ONLY if you are certain that transactions with
	  RXD.MAXCNT == 1 and TXD.MAXCNT <= 1 will NOT be executed.

# In most Nordic SoCs, SPI and TWI peripherals with the same instance number
# share certain resources and therefore cannot be used at the same time
# (in nRF91 Series this limitation concerns UART peripherals as well).
# In nRF52810 though, 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 && (SOC_NRF52810 || \
             (!I2C_0 && !(SOC_SERIES_NRF91X && UART_0_NRF_UARTE)))

choice
	prompt "SPI Port 0 Driver type"

config SPI_0_NRF_SPI
	bool "nRF SPI 0"
	depends on HAS_HW_NRF_SPI0
	select NRFX_SPI0
	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 Product Anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
	# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
	depends on HAS_HW_NRF_SPIM0 && (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
	select NRFX_SPIM0
	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_SPIS0
	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_ORC
	hex "SPI Port 0 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

endif # SPI_0 && (SOC_NRF52810 || ...

# In Nordic SoCs, SPI and TWI peripherals with the same instance number
# share certain resources and therefore cannot be used at the same time
# (in nRF91 Series this limitation concerns UART peripherals as well).
if SPI_1 && !I2C_1 && !(SOC_SERIES_NRF91X && UART_1_NRF_UARTE)

choice
	prompt "SPI Port 1 Driver type"

config SPI_1_NRF_SPI
	bool "nRF SPI 1"
	depends on HAS_HW_NRF_SPI1
	select NRFX_SPI1
	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 Product Anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
	# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
	depends on HAS_HW_NRF_SPIM1 && (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
	select NRFX_SPIM1
	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_SPIS1
	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_ORC
	hex "SPI Port 1 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

endif # SPI_1 && !I2C_1 && !(SOC_SERIES_NRF91X && UART_1_NRF_UARTE)

# In Nordic SoCs, SPI and TWI peripherals with the same instance number
# share certain resources and therefore cannot be used at the same time
# (in nRF91 Series this limitation concerns UART peripherals as well).
if SPI_2 && !I2C_2 && !(SOC_SERIES_NRF91X && UART_2_NRF_UARTE)

choice
	prompt "SPI Port 2 Driver type"

config SPI_2_NRF_SPI
	bool "nRF SPI 2"
	depends on HAS_HW_NRF_SPI2
	select NRFX_SPI2
	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 Product Anomaly 58
	# (SPIM: An additional byte is clocked out when RXD.MAXCNT == 1 and TXD.MAXCNT <= 1)
	# Allow the 'EasyDMA' driver only if this automatic safety-disable is overridden
	depends on HAS_HW_NRF_SPIM2 && (!SOC_NRF52832 || SOC_NRF52832_ALLOW_SPIM_DESPITE_PAN_58)
	select NRFX_SPIM2
	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_SPIS2
	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_ORC
	hex "SPI Port 2 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

endif # SPI_2 && !I2C_2 && !(SOC_SERIES_NRF91X && UART_2_NRF_UARTE)

# In Nordic SoCs, SPI and TWI peripherals with the same instance number
# share certain resources and therefore cannot be used at the same time
# (in nRF91 Series this limitation concerns UART peripherals as well).
if SPI_3 && !I2C_3 && !(SOC_SERIES_NRF91X && UART_3_NRF_UARTE)

choice
	prompt "SPI Port 3 Driver type"

config SPI_3_NRF_SPIM
	bool "nRF SPIM 3"
	depends on HAS_HW_NRF_SPIM3
	select NRFX_SPIM3
	help
	  Enable nRF SPI Master with EasyDMA on port 3.

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

endchoice

if SPI_3_NRF_SPIM || SPI_3_NRF_SPIS

config SPI_3_NRF_ORC
	hex "SPI Port 3 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_3_NRF_SPIM || SPI_3_NRF_SPIS

config SPI_3_NRF_RX_DELAY
	int "SPIM3 MISO sampling delay"
	depends on SPI_3_NRF_SPIM && SOC_NRF52840
	range 0 7
	default 2
	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 && !I2C_3 && !(SOC_SERIES_NRF91X && UART_3_NRF_UARTE)

if NRFX_SPIM

config SPI_NRFX_RAM_BUFFER_SIZE
	int "Size of RAM buffers for SPIM peripherals"
	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.

choice
	prompt "nRF SPIM MISO pin pull configuration"
	default SPI_NRFX_SPIM_MISO_PULL_DOWN

config SPI_NRFX_SPIM_MISO_NO_PULL
	bool "no pull"
	help
	  Disable MISO pin pull.

config SPI_NRFX_SPIM_MISO_PULL_DOWN
	bool "pull down"
	help
	  Enable MISO pin pull down.

config SPI_NRFX_SPIM_MISO_PULL_UP
	bool "pull up"
	help
	  Enable MISO pin pull up.

endchoice

endif # NRFX_SPIM

if NRFX_SPI

choice
	prompt "nRF SPI MISO pin pull configuration"
	default SPI_NRFX_SPI_MISO_PULL_DOWN

config SPI_NRFX_SPI_MISO_NO_PULL
	bool "no pull"
	help
	  Disable MISO pin pull.

config SPI_NRFX_SPI_MISO_PULL_DOWN
	bool "pull down"
	help
	  Enable MISO pin pull down.

config SPI_NRFX_SPI_MISO_PULL_UP
	bool "pull up"
	help
	  Enable MISO pin pull up.

endchoice

endif # NRFX_SPI

endif # SPI_NRFX
