# Kconfig - serial driver configuration options

#
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

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

if SERIAL

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.

choice
	prompt "UART IRQ Trigger Condition"
	default UART_IRQ_RISING_EDGE
	depends on UART_INTERRUPT_DRIVEN

config UART_IRQ_FALLING_EDGE
	bool "Falling Edge"
	help
	This option signifies that the UART uses falling edge interrupt.

config UART_IRQ_RISING_EDGE
	bool "Rising Edge"
	help
	This option signifies that the UART uses rising edge interrupt.

config UART_IRQ_LEVEL_HIGH
	bool "Level High"
	help
	This option signifies that the UART uses level high interrupt.

config UART_IRQ_LEVEL_LOW
	bool "Level Low"
	help
	This option signifies that the UART uses level low interrupt.

endchoice

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.

source "drivers/serial/Kconfig.ns16550"

source "drivers/serial/Kconfig.k20"

source "drivers/serial/Kconfig.stellaris"

source "drivers/serial/Kconfig.nsim"

source "drivers/serial/Kconfig.atmel_sam3"

endif
