# Kconfig - Atmel SAM UART configuration options
#
# Copyright (c) 2017 Piotr Mienkowski
# SPDX-License-Identifier: Apache-2.0
#

menuconfig UART_SAM
	bool "Atmel SAM MCU family UART driver"
	depends on SOC_FAMILY_SAM
	select SERIAL_HAS_DRIVER
	default n
	help
	  This option enables the UARTx driver for Atmel SAM MCUs.

# ---------- Port 0 ----------

config UART_SAM_PORT_0
	bool "Enable UART0"
	depends on UART_SAM
	default n
	help
	  Enable UART0 at boot.

# ---------- Port 1 ----------

config UART_SAM_PORT_1
	bool "Enable UART1"
	depends on UART_SAM
	default n
	help
	  Enable UART1 at boot.

if UART_SAM_PORT_1

choice UART_SAME70_PORT_1_PIN_TX
	prompt "TX pin"
	depends on SOC_SERIES_SAME70

	config UART_SAM_PORT_1_PIN_TX_PA4
		bool "PA4"

	config UART_SAM_PORT_1_PIN_TX_PA6
		bool "PA6"

	config UART_SAM_PORT_1_PIN_TX_PD26
		bool "PD26"
endchoice

endif # UART_SAM_PORT_1

# ---------- Port 2 ----------

config UART_SAM_PORT_2
	bool "Enable UART2"
	depends on UART_SAM
	default n
	help
	  Enable UART2 at boot

# ---------- Port 3 ----------

config UART_SAM_PORT_3
	bool "Enable UART3"
	depends on UART_SAM
	default n
	help
	  Enable UART3 at boot

if UART_SAM_PORT_3

choice UART_SAME70_PORT_3_PIN_TX
	prompt "TX pin"
	depends on SOC_SERIES_SAME70

	config UART_SAM_PORT_3_PIN_TX_PD30
		bool "PD30"

	config UART_SAM_PORT_3_PIN_TX_PD31
		bool "PD31"
endchoice

endif # UART_SAM_PORT_3

# ---------- Port 4 ----------

config UART_SAM_PORT_4
	bool "Enable UART4"
	depends on UART_SAM
	default n
	help
	  Enable UART4 at boot

if UART_SAM_PORT_4

choice UART_SAME70_PORT_4_PIN_TX
	prompt "TX pin"
	depends on SOC_SERIES_SAME70

	config UART_SAM_PORT_4_PIN_TX_PD3
		bool "PD3"

	config UART_SAM_PORT_4_PIN_TX_PD19
		bool "PD19"
endchoice

endif # UART_SAM_PORT_4
