# nrfx I2C support

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

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

if I2C_NRFX

choice I2C_0_NRF_TYPE
	prompt "I2C Port 0 Driver type"
	# 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 and nRF53 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.
	depends on I2C_0 && (SOC_NRF52810 || \
		(!SPI_0 && !(SOC_SERIES_NRF91X && UART_0_NRF_UARTE)) || \
		(!SPI_0 && !(SOC_SERIES_NRF53X && UART_0_NRF_UARTE)))

config I2C_0_NRF_TWI
	bool "nRF TWI 0"
	depends on HAS_HW_NRF_TWI0
	select NRFX_TWI0
	help
	  Enable nRF TWI Master without EasyDMA on port 0.

config I2C_0_NRF_TWIM
	bool "nRF TWIM 0"
	depends on HAS_HW_NRF_TWIM0
	select NRFX_TWIM0
	help
	  Enable nRF TWI Master with EasyDMA on port 0.
	  This peripheral accepts transfers from RAM only,
	  if provided buffer is placed in flash, transfer will fail.

endchoice

choice I2C_1_NRF_TYPE
	prompt "I2C Port 1 Driver type"
	# 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 and nRF53 Series this limitation concerns UART peripherals
	# as well).
	depends on I2C_1 && !SPI_1 && \
		!(SOC_SERIES_NRF91X && UART_1_NRF_UARTE) && \
		!(SOC_SERIES_NRF53X && UART_1_NRF_UARTE)

config I2C_1_NRF_TWI
	bool "nRF TWI 1"
	depends on HAS_HW_NRF_TWI1
	select NRFX_TWI1
	help
	  Enable nRF TWI Master without EasyDMA on port 1.

config I2C_1_NRF_TWIM
	bool "nRF TWIM 1"
	depends on HAS_HW_NRF_TWIM1
	select NRFX_TWIM1
	help
	  Enable nRF TWI Master with EasyDMA on port 1.
	  This peripheral accepts transfers from RAM only,
	  if provided buffer is placed in flash, transfer will fail.

endchoice

choice I2C_2_NRF_TYPE
	prompt "I2C Port 2 Driver type"
	# 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 and nRF53 Series this limitation concerns UART peripherals
	# as well).
	depends on I2C_2 && !SPI_2 && \
		!(SOC_SERIES_NRF91X && UART_2_NRF_UARTE) && \
		!(SOC_SERIES_NRF53X && UART_2_NRF_UARTE)

config I2C_2_NRF_TWIM
	bool "nRF TWIM 2"
	depends on HAS_HW_NRF_TWIM2
	select NRFX_TWIM2
	help
	  Enable nRF TWI Master with EasyDMA on port 2.
	  This peripheral accepts transfers from RAM only,
	  if provided buffer is placed in flash, transfer will fail.

endchoice

choice I2C_3_NRF_TYPE
	prompt "I2C Port 3 Driver type"
	# 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 and nRF53 Series this limitation concerns UART peripherals
	# as well).
	depends on I2C_3 && !SPI_3 && \
		!(SOC_SERIES_NRF91X && UART_3_NRF_UARTE) && \
		!(SOC_SERIES_NRF53X && UART_3_NRF_UARTE)

config I2C_3_NRF_TWIM
	bool "nRF TWIM 3"
	depends on HAS_HW_NRF_TWIM3
	select NRFX_TWIM3
	help
	  Enable nRF TWI Master with EasyDMA on port 3.
	  This peripheral accepts transfers from RAM only,
	  if provided buffer is placed in flash, transfer will fail.

endchoice

endif # I2C_NRFX
