# 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 SERIAL_INIT_PRIORITY
	int "Serial init priority"
	default KERNEL_INIT_PRIORITY_DEVICE
	help
	  Serial driver device initialization priority.

module = UART
module-str = uart
source "subsys/logging/Kconfig.template.log_config"

config SERIAL_SUPPORT_WIDE_DATA
	bool
	help
	  This is an option to be enabled by individual serial driver
	  to signal that the driver and hardware support data longer
	  than 8-bit.

config UART_USE_RUNTIME_CONFIGURE
	bool "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 "Asynchronous UART API"
	depends on SERIAL_SUPPORT_ASYNC
	help
	  This option enables asynchronous UART API.

config UART_INTERRUPT_DRIVEN
	bool "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 "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 "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.

config UART_WIDE_DATA
	bool "API to support data longer than 8-bit"
	help
	  This enables the API to process data longer than 8-bit.
	  This is up to the driver to implement the necessary functions
	  to properly support this.

config UART_PIPE
	bool "Pipe UART driver"
	select UART_INTERRUPT_DRIVEN
	help
	  Enable pipe UART driver. This driver allows application to communicate
	  over UART with custom defined protocol. Driver doesn't inspect received
	  data (as contrary to console UART driver) and all aspects of received
	  protocol data are handled by application provided callback.

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.it8xxx2"

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.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.rpi_pico"

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.gd32"

source "drivers/serial/Kconfig.test"

source "drivers/serial/Kconfig.neorv32"

source "drivers/serial/Kconfig.xen"

source "drivers/serial/Kconfig.smartbond"

endif # SERIAL
