1# Serial driver configuration options
2
3# Copyright (c) 2014-2015 Wind River Systems, Inc.
4# SPDX-License-Identifier: Apache-2.0
5
6menuconfig SERIAL
7	bool "Serial drivers"
8	help
9	  Enable options for serial drivers.
10
11if SERIAL
12
13comment "Capabilities"
14
15config SERIAL_HAS_DRIVER
16	bool
17	help
18	  This is an option to be enabled by individual serial driver
19	  to signal that there is a serial driver. This is being used
20	  by other drivers which are dependent on serial.
21
22config SERIAL_SUPPORT_ASYNC
23	bool
24	help
25	  This is an option to be enabled by individual serial driver
26	  to signal that the driver and hardware supports async operation.
27
28config SERIAL_SUPPORT_INTERRUPT
29	bool
30	help
31	  This is an option to be enabled by individual serial driver
32	  to signal that the driver and hardware supports interrupts.
33
34config SERIAL_INIT_PRIORITY
35	int "Serial init priority"
36	default KERNEL_INIT_PRIORITY_DEVICE
37	help
38	  Serial driver device initialization priority.
39
40module = UART
41module-str = uart
42source "subsys/logging/Kconfig.template.log_config"
43
44config SERIAL_SUPPORT_WIDE_DATA
45	bool
46	help
47	  This is an option to be enabled by individual serial driver
48	  to signal that the driver and hardware support data longer
49	  than 8-bit.
50
51config UART_USE_RUNTIME_CONFIGURE
52	bool "Runtime configuration for UART controllers"
53	default y
54	help
55	  Enable runtime configuration of UART controllers.
56	  This allows applications to call uart_configure() to
57	  configure the UART controllers at runtime, and calling
58	  uart_config_get() to retrieve configuration. If this is
59	  disabled, UART controllers rely on UART driver's
60	  initialization function to properly configure
61	  the controller.
62
63	  Say y if unsure. Disable this to reduce footprint for
64	  applications that do not require runtime UART configuration.
65
66config UART_ASYNC_API
67	bool "Asynchronous UART API"
68	depends on SERIAL_SUPPORT_ASYNC
69	help
70	  This option enables asynchronous UART API.
71
72config UART_INTERRUPT_DRIVEN
73	bool "UART Interrupt support"
74	depends on SERIAL_SUPPORT_INTERRUPT
75	help
76	  This option enables interrupt support for UART allowing console
77	  input and other UART based drivers.
78
79config UART_EXCLUSIVE_API_CALLBACKS
80	bool "Use exclusive callbacks for multiple APIs"
81	depends on UART_ASYNC_API && UART_INTERRUPT_DRIVEN
82	default y
83	help
84	  When multiple set of APIs support callbacks, enabling this
85	  option will result in only the callbacks of one set of API
86	  being active at a time. Setting a new callback to one set of
87	  API will remove callbacks to other set of APIs. For example,
88	  calling uart_callback_set() would disable the callback
89	  previously set via uart_irq_callback_set().
90
91	  Says yes unless you are absolutely sure you know what you are
92	  doing and promise not to file bug when things do not work out.
93
94config UART_LINE_CTRL
95	bool "Serial Line Control API"
96	help
97	  This enables the API for apps to control the serial line,
98	  such as baud rate, CTS and RTS.
99
100	  Implementation is up to individual driver.
101
102	  Says no if not sure.
103
104config UART_DRV_CMD
105	bool "Driver commands API"
106	help
107	  This enables the API to send extra commands to drivers.
108	  This allows drivers to expose hardware specific functions.
109
110	  Says no if not sure.
111
112config UART_WIDE_DATA
113	bool "API to support data longer than 8-bit"
114	help
115	  This enables the API to process data longer than 8-bit.
116	  This is up to the driver to implement the necessary functions
117	  to properly support this.
118
119config UART_PIPE
120	bool "Pipe UART driver"
121	select UART_INTERRUPT_DRIVEN
122	help
123	  Enable pipe UART driver. This driver allows application to communicate
124	  over UART with custom defined protocol. Driver doesn't inspect received
125	  data (as contrary to console UART driver) and all aspects of received
126	  protocol data are handled by application provided callback.
127
128config UART_ASYNC_RX_HELPER
129	bool "Helper for UART asynchronous reception"
130	help
131	  Module implements handling of reception of variable length data using
132	  Asynchronous UART API. It can be used in cases where received data processing
133	  is delayed. Module implements zero-copy approach with multiple reception
134	  buffers.
135
136config UART_ASYNC_TO_INT_DRIVEN_API
137	bool
138	select UART_ASYNC_RX_HELPER
139	help
140	  Asynchronous to Interrupt driven adaptation layer. When enabled device
141	  which implements only asynchronous API can be used with interrupt driven
142	  API implemented by the generic adaptation layer.
143
144config UART_ASYNC_TO_INT_DRIVEN_RX_TIMEOUT
145	int "Receiver timeout (in bauds)"
146	depends on UART_ASYNC_TO_INT_DRIVEN_API
147	default 100
148	help
149	  Receiver inactivity timeout. It is used to calculate timeout in microseconds.
150
151comment "Serial Drivers"
152
153# zephyr-keep-sorted-start
154rsource "Kconfig.altera"
155rsource "Kconfig.altera_jtag"
156rsource "Kconfig.apbuart"
157rsource "Kconfig.b91"
158rsource "Kconfig.bcm2711"
159rsource "Kconfig.bt"
160rsource "Kconfig.cc13xx_cc26xx"
161rsource "Kconfig.cc32xx"
162rsource "Kconfig.cdns"
163rsource "Kconfig.cmsdk_apb"
164rsource "Kconfig.efinix_sapphire"
165rsource "Kconfig.emul"
166rsource "Kconfig.ene"
167rsource "Kconfig.esp32"
168rsource "Kconfig.gd32"
169rsource "Kconfig.gecko"
170rsource "Kconfig.hostlink"
171rsource "Kconfig.ifx_cat1"
172rsource "Kconfig.imx"
173rsource "Kconfig.intel_lw"
174rsource "Kconfig.it8xxx2"
175rsource "Kconfig.leuart_gecko"
176rsource "Kconfig.litex"
177rsource "Kconfig.lpc11u6x"
178rsource "Kconfig.max32"
179rsource "Kconfig.mcux"
180rsource "Kconfig.mcux_flexcomm"
181rsource "Kconfig.mcux_iuart"
182rsource "Kconfig.mcux_lpsci"
183rsource "Kconfig.mcux_lpuart"
184rsource "Kconfig.miv"
185rsource "Kconfig.msp432p4xx"
186rsource "Kconfig.native_posix"
187rsource "Kconfig.native_tty"
188rsource "Kconfig.neorv32"
189rsource "Kconfig.npcx"
190rsource "Kconfig.nrfx"
191rsource "Kconfig.ns16550"
192rsource "Kconfig.numaker"
193rsource "Kconfig.numicro"
194rsource "Kconfig.nxp_s32"
195rsource "Kconfig.opentitan"
196rsource "Kconfig.pl011"
197rsource "Kconfig.psoc6"
198rsource "Kconfig.ql_usbserialport_s3b"
199rsource "Kconfig.rcar"
200rsource "Kconfig.renesas_ra"
201rsource "Kconfig.renesas_ra8"
202rsource "Kconfig.renesas_rz"
203rsource "Kconfig.rpi_pico"
204rsource "Kconfig.rtt"
205rsource "Kconfig.rv32m1_lpuart"
206rsource "Kconfig.rzt2m"
207rsource "Kconfig.sam0"
208rsource "Kconfig.sedi"
209rsource "Kconfig.sifive"
210rsource "Kconfig.smartbond"
211rsource "Kconfig.stellaris"
212rsource "Kconfig.stm32"
213rsource "Kconfig.sy1xx"
214rsource "Kconfig.test"
215rsource "Kconfig.uart_sam"
216rsource "Kconfig.usart_sam"
217rsource "Kconfig.xec"
218rsource "Kconfig.xen"
219rsource "Kconfig.xlnx"
220rsource "Kconfig.xmc4xxx"
221# zephyr-keep-sorted-stop
222
223source "drivers/serial/Kconfig.si32"
224
225source "drivers/serial/Kconfig.wch_usart"
226
227endif # SERIAL
228