# Kconfig.fe310 - SiFive Freedom UART configuration option
#
# Copyright (c) 2017 Jean-Paul Etienne <fractalclone@gmail.com>
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig UART_SIFIVE
	bool "SiFive Freedom serial driver"
	depends on SOC_RISCV32_SIFIVE_FREEDOM
	select SERIAL_HAS_DRIVER
	select SERIAL_SUPPORT_INTERRUPT
	help
	  This option enables the SiFive Freedom serial driver.

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

menuconfig UART_SIFIVE_PORT_0
	bool "Enable SIFIVE Port 0"
	depends on UART_SIFIVE
	help
	  This tells the driver to configure the UART port at boot, depending on
	  the additional configure options below.

config UART_SIFIVE_PORT_0_IRQ_PRIORITY
	int "Port 0 Interrupt Priority"
	default 1
	depends on UART_SIFIVE_PORT_0
	help
	  Port 0 Interrupt Priority

config UART_SIFIVE_PORT_0_RXCNT_IRQ
	int "Port 0 RX Interrupt Threshold Count"
	default 0
	depends on UART_SIFIVE_PORT_0
	help
	  Port 0 RX Threshold at which the RX FIFO interrupt triggers.

config UART_SIFIVE_PORT_0_TXCNT_IRQ
	int "Port 0 TX Interrupt Threshold Count"
	default 0
	depends on UART_SIFIVE_PORT_0
	help
	  Port 0 TX Threshold at which the TX FIFO interrupt triggers.

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

menuconfig UART_SIFIVE_PORT_1
	bool "Enable SIFIVE Port 1"
	depends on UART_SIFIVE
	help
	  This tells the driver to configure the UART port at boot, depending on
	  the additional configure options below.

config UART_SIFIVE_PORT_1_IRQ_PRIORITY
	int "Port 1 Interrupt Priority"
	default 1
	depends on UART_SIFIVE_PORT_1
	help
	  Port 1 Interrupt Priority

config UART_SIFIVE_PORT_1_RXCNT_IRQ
	int "Port 0 RX Interrupt Threshold Count"
	default 0
	depends on UART_SIFIVE_PORT_1
	help
	  Port 1 RX Threshold at which the RX FIFO interrupt triggers.

config UART_SIFIVE_PORT_1_TXCNT_IRQ
	int "Port 1 TX Interrupt Threshold Count"
	default 0
	depends on UART_SIFIVE_PORT_1
	help
	  Port 1 TX Threshold at which the TX FIFO interrupt triggers.
