# Kconfig - serial driver configuration options

#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig SERIAL
	bool
	prompt "Serial Drivers"
	default n
	help
	Enable options for serial drivers.

if SERIAL

comment "Capabilities"

config SERIAL_HAS_DRIVER
	bool
	default n
	help
	This is an option to be enabled by individual serial driver
	to signal that there is a serial driver. This is being used
	by other drivers which are dependent on serial.

config UART_INTERRUPT_DRIVEN
	bool
	prompt "Enable UART Interrupt support"
	default n
	help
	This option enables interrupt support for UART allowing console
	input and other UART based drivers.

config UART_LINE_CTRL
	bool "Enable Serial Line Control API"
	default n
	help
	This enables the API for apps to control the serial line,
	such as baud rate, CTS and RTS.

	Implementation is up to individual driver.

	Says no if not sure.

config UART_DRV_CMD
	bool "Enable driver commands API"
	default n
	help
	This enables the API to send extra commands to drivers.
	This allows drivers to expose hardware specific functions.

	Says no if not sure.

comment "Serial Drivers"

source "drivers/serial/Kconfig.ns16550"

source "drivers/serial/Kconfig.mcux"

source "drivers/serial/Kconfig.mcux_lpuart"

source "drivers/serial/Kconfig.stellaris"

source "drivers/serial/Kconfig.nsim"

source "drivers/serial/Kconfig.atmel_sam3"

source "drivers/serial/Kconfig.usart_sam"

source "drivers/serial/Kconfig.qmsi"

source "drivers/serial/Kconfig.stm32"

source "drivers/serial/Kconfig.nrf5"

source "drivers/serial/Kconfig.altera_jtag"

source "drivers/serial/Kconfig.cc32xx"

source "drivers/serial/Kconfig.cmsdk_apb"

source "drivers/serial/Kconfig.riscv_qemu"

endif
