# Serial driver configuration options

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

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

if SERIAL

comment "Capabilities"

config SERIAL_HAS_DRIVER
	bool
	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 SERIAL_SUPPORT_ASYNC
	bool
	help
	  This is an option to be enabled by individual serial driver
	  to signal that the driver and hardware supports async operation.

config SERIAL_SUPPORT_INTERRUPT
	bool
	help
	  This is an option to be enabled by individual serial driver
	  to signal that the driver and hardware supports interrupts.

config UART_USE_RUNTIME_CONFIGURE
	bool "Enable runtime configuration for UART controllers"
	default y
	help
	  Enable runtime configuration of UART controllers.
	  This allows applications to call uart_configure() to
	  configure the UART controllers at runtime, and calling
	  uart_config_get() to retrieve configuration. If this is
	  disabled, UART controllers rely on UART driver's
	  initialization function to properly configure
	  the controller.

	  Say y if unsure. Disable this to reduce footprint for
	  applications that do not require runtime UART configuration.

config UART_ASYNC_API
	bool "Enable new asynchronous UART API [EXPERIMENTAL]"
	depends on SERIAL_SUPPORT_ASYNC
	help
	  This option enables new asynchronous UART API.

config UART_INTERRUPT_DRIVEN
	bool "Enable UART Interrupt support"
	depends on SERIAL_SUPPORT_INTERRUPT
	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"
	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"
	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.b91"

source "drivers/serial/Kconfig.ns16550"

source "drivers/serial/Kconfig.mcux"

source "drivers/serial/Kconfig.mcux_flexcomm"

source "drivers/serial/Kconfig.mcux_iuart"

source "drivers/serial/Kconfig.mcux_lpsci"

source "drivers/serial/Kconfig.mcux_lpuart"

source "drivers/serial/Kconfig.miv"

source "drivers/serial/Kconfig.imx"

source "drivers/serial/Kconfig.stellaris"

source "drivers/serial/Kconfig.native_posix"

source "drivers/serial/Kconfig.usart_sam"

source "drivers/serial/Kconfig.uart_sam"

source "drivers/serial/Kconfig.stm32"

source "drivers/serial/Kconfig.nrfx"

source "drivers/serial/Kconfig.altera_jtag"

source "drivers/serial/Kconfig.cc13xx_cc26xx"

source "drivers/serial/Kconfig.cc32xx"

source "drivers/serial/Kconfig.cmsdk_apb"

source "drivers/serial/Kconfig.sifive"

source "drivers/serial/Kconfig.esp32"

source "drivers/serial/Kconfig.esp32c3_rom"

source "drivers/serial/Kconfig.esp32s2_rom"

source "drivers/serial/Kconfig.gecko"

source "drivers/serial/Kconfig.leuart_gecko"

source "drivers/serial/Kconfig.msp432p4xx"

source "drivers/serial/Kconfig.numicro"

source "drivers/serial/Kconfig.sam0"

source "drivers/serial/Kconfig.psoc6"

source "drivers/serial/Kconfig.pl011"

source "drivers/serial/Kconfig.rv32m1_lpuart"

source "drivers/serial/Kconfig.litex"

source "drivers/serial/Kconfig.rtt"

source "drivers/serial/Kconfig.xlnx"

source "drivers/serial/Kconfig.xmc4xxx"

source "drivers/serial/Kconfig.lpc11u6x"

source "drivers/serial/Kconfig.npcx"

source "drivers/serial/Kconfig.apbuart"

source "drivers/serial/Kconfig.rcar"

source "drivers/serial/Kconfig.xec"

source "drivers/serial/Kconfig.test"

endif # SERIAL
