Prepare v2023.10
[platform/kernel/u-boot.git] / drivers / serial / Kconfig
1 #
2 # Serial device configuration
3 #
4
5 menuconfig SERIAL
6         bool "Serial"
7         default y
8         help
9           Enable support for serial drivers. This allows use of a serial UART
10           for displaying messages while U-Boot is running. It also brings in
11           printf() and panic() functions. This should normally be enabled
12           unless there are space reasons not to. If you just need to disable
13           the console you can adjust the stdout environment variable or use
14           SILENT_CONSOLE.
15
16 if SERIAL
17
18 config BAUDRATE
19         int "Default baudrate"
20         default 115200
21         help
22           Select a default baudrate, where "default" has a driver-specific
23           meaning of either setting the baudrate for the early debug UART
24           in the SPL stage (most drivers) or for choosing a default baudrate
25           in the absence of an environment setting (serial_mxc.c).
26
27 config REQUIRE_SERIAL_CONSOLE
28         bool "Require a serial port for console"
29         # Running without a serial console is not supported by the
30         # non-dm serial code
31         depends on DM_SERIAL
32         default y
33         help
34           Require a serial port for the console, and panic if none is found
35           during serial port initialization (default y). Set this to n on
36           boards which have no debug serial port whatsoever.
37
38 config SPECIFY_CONSOLE_INDEX
39         bool "Specify the port number used for console"
40         default y if !DM_SERIAL || (SPL && !SPL_DM_SERIAL) || \
41                 (TPL && !TPL_DM_SERIAL)
42         help
43           In various cases, we need to specify which of the UART devices that
44           a board or SoC has available are to be used for the console device
45           in U-Boot.
46
47 config SERIAL_PRESENT
48         bool "Provide a serial driver"
49         depends on DM_SERIAL
50         default y
51         help
52           In very space-constrained devices even the full UART driver is too
53           large. In this case the debug UART can still be used in some cases.
54           This option enables the full UART in U-Boot, so if is it disabled,
55           the full UART driver will be omitted, thus saving space.
56
57 config SPL_SERIAL_PRESENT
58         bool "Provide a serial driver in SPL"
59         depends on DM_SERIAL && SPL
60         default y
61         help
62           In very space-constrained devices even the full UART driver is too
63           large. In this case the debug UART can still be used in some cases.
64           This option enables the full UART in SPL, so if is it disabled,
65           the full UART driver will be omitted, thus saving space.
66
67 config TPL_SERIAL_PRESENT
68         bool "Provide a serial driver in TPL"
69         depends on DM_SERIAL && TPL
70         default y
71         help
72           In very space-constrained devices even the full UART driver is too
73           large. In this case the debug UART can still be used in some cases.
74           This option enables the full UART in TPL, so if is it disabled,
75           the full UART driver will be omitted, thus saving space.
76
77 config VPL_SERIAL_PRESENT
78         bool "Provide a serial driver in VPL"
79         depends on DM_SERIAL && VPL
80         default y
81         help
82           In very space-constrained devices even the full UART driver is too
83           large. In this case the debug UART can still be used in some cases.
84           This option enables the full UART in TPL, so if is it disabled,
85           the full UART driver will be omitted, thus saving space.
86
87 config CONS_INDEX
88         int "UART used for console"
89         depends on SPECIFY_CONSOLE_INDEX
90         range 0 6
91         default 1
92         help
93           Set this to match the UART number of the serial console.
94
95 config DM_SERIAL
96         bool "Enable Driver Model for serial drivers"
97         depends on DM
98         select SYS_MALLOC_F
99         help
100           Enable driver model for serial. This replaces
101           drivers/serial/serial.c with the serial uclass, which
102           implements serial_putc() etc. The uclass interface is
103           defined in include/serial.h.
104
105 config SERIAL_RX_BUFFER
106         bool "Enable RX buffer for serial input"
107         depends on DM_SERIAL
108         help
109           Enable RX buffer support for the serial driver. This enables
110           pasting longer strings, even when the RX FIFO of the UART is
111           not big enough (e.g. 16 bytes on the normal NS16550).
112
113 config SERIAL_RX_BUFFER_SIZE
114         int "RX buffer size"
115         depends on SERIAL_RX_BUFFER
116         default 256
117         help
118           The size of the RX buffer (needs to be power of 2)
119
120 config SERIAL_PUTS
121         bool "Enable printing strings all at once"
122         depends on DM_SERIAL
123         help
124           Some serial drivers are much more efficient when printing multiple
125           characters at once rather than printing characters individually. This
126           can be because they can load a fifo, or because individual print
127           calls have a constant overhead. With this option set, the serial
128           subsystem will try to provide serial drivers with as many characters
129           at once as possible, instead of printing characters one by one. Most
130           serial drivers do not need this config to print efficiently. If
131           unsure, say N.
132
133 config SERIAL_SEARCH_ALL
134         bool "Search for serial devices after default one failed"
135         depends on DM_SERIAL
136         help
137           The serial subsystem only searches for a single serial device
138           that was instantiated, but does not check whether it was probed
139           correctly. With this option set, we make successful probing
140           mandatory and search for fallback serial devices if the default
141           device does not work.
142
143           If unsure, say N.
144
145 config SERIAL_PROBE_ALL
146         bool "Probe all available serial devices"
147         depends on DM_SERIAL
148         help
149           The serial subsystem only probes for a single serial device,
150           but does not probe for other remaining serial devices.
151           With this option set, we make probing and searching for
152           all available devices optional.
153           Normally, U-Boot talks to one serial port at a time, but SBSA
154           compliant UART devices like PL011 require initialization
155           by firmware and to let the kernel use serial port for sending
156           and receiving the characters.
157
158           If unsure, say N.
159
160 config SPL_DM_SERIAL
161         bool "Enable Driver Model for serial drivers in SPL"
162         depends on DM_SERIAL && SPL_DM
163         select SYS_SPL_MALLOC_F
164         default y
165         help
166           Enable driver model for serial in SPL. This replaces
167           drivers/serial/serial.c with the serial uclass, which
168           implements serial_putc() etc. The uclass interface is
169           defined in include/serial.h.
170
171 config TPL_DM_SERIAL
172         bool "Enable Driver Model for serial drivers in TPL"
173         depends on DM_SERIAL && TPL_DM
174         select SYS_TPL_MALLOC_F
175         default y if TPL && DM_SERIAL
176         help
177           Enable driver model for serial in TPL. This replaces
178           drivers/serial/serial.c with the serial uclass, which
179           implements serial_putc() etc. The uclass interface is
180           defined in include/serial.h.
181
182 config VPL_DM_SERIAL
183         bool "Enable Driver Model for serial drivers in VPL"
184         depends on DM_SERIAL
185         default y if VPL && DM_SERIAL
186         help
187           Enable driver model for serial in VPL. This replaces
188           drivers/serial/serial.c with the serial uclass, which
189           implements serial_putc() etc. The uclass interface is
190           defined in include/serial.h.
191
192 config DEBUG_UART
193         bool "Enable an early debug UART for debugging"
194         help
195           The debug UART is intended for use very early in U-Boot to debug
196           problems when an ICE or other debug mechanism is not available.
197
198           To use it you should:
199           - Make sure your UART supports this interface
200           - Enable CONFIG_DEBUG_UART
201           - Enable the CONFIG for your UART to tell it to provide this interface
202                 (e.g. CONFIG_DEBUG_UART_NS16550)
203           - Define the required settings as needed (see below)
204           - Call debug_uart_init() before use
205           - Call debug_uart_putc() to output a character
206
207           Depending on your platform it may be possible to use this UART before
208           a stack is available.
209
210           If your UART does not support this interface you can probably add
211           support quite easily. Remember that you cannot use driver model and
212           it is preferred to use no stack.
213
214           You must not use this UART once driver model is working and the
215           serial drivers are up and running (done in serial_init()). Otherwise
216           the drivers may conflict and you will get strange output.
217
218 choice
219         prompt "Select which UART will provide the debug UART"
220         depends on DEBUG_UART
221         default DEBUG_SBI_CONSOLE if RISCV_SMODE
222         default DEBUG_UART_NS16550
223
224 config DEBUG_UART_ALTERA_JTAGUART
225         bool "Altera JTAG UART"
226         depends on ALTERA_JTAG_UART
227         help
228           Select this to enable a debug UART using the altera_jtag_uart driver.
229           You will need to provide parameters to make this work. The driver will
230           be available until the real driver model serial is running.
231
232 config DEBUG_UART_ALTERA_UART
233         bool "Altera UART"
234         depends on ALTERA_UART
235         help
236           Select this to enable a debug UART using the altera_uart driver.
237           You will need to provide parameters to make this work. The driver will
238           be available until the real driver model serial is running.
239
240 config DEBUG_UART_AR933X
241         bool "QCA/Atheros ar933x"
242         depends on AR933X_UART
243         help
244           Select this to enable a debug UART using the ar933x uart driver.
245           You will need to provide parameters to make this work. The
246           driver will be available until the real driver model serial is
247           running.
248
249 config DEBUG_ARC_SERIAL
250         bool "ARC UART"
251         depends on ARC_SERIAL
252         help
253           Select this to enable a debug UART using the ARC UART driver.
254           You will need to provide parameters to make this work. The
255           driver will be available until the real driver model serial is
256           running.
257
258 config DEBUG_UART_ATMEL
259         bool "Atmel USART"
260         depends on ATMEL_USART
261         help
262           Select this to enable a debug UART using the atmel usart driver. You
263           will need to provide parameters to make this work. The driver will
264           be available until the real driver-model serial is running.
265
266 config DEBUG_UART_BCM6345
267         bool "BCM6345 UART"
268         depends on BCM6345_SERIAL
269         help
270           Select this to enable a debug UART on BCM6345 SoCs. You
271           will need to provide parameters to make this work. The driver will
272           be available until the real driver model serial is running.
273
274 config DEBUG_UART_NS16550
275         bool "ns16550"
276         depends on SYS_NS16550
277         help
278           Select this to enable a debug UART using the ns16550 driver. You
279           will need to provide parameters to make this work. The driver will
280           be available until the real driver model serial is running.
281
282 config DEBUG_EFI_CONSOLE
283         bool "EFI"
284         depends on EFI_APP
285         help
286           Select this to enable a debug console which calls back to EFI to
287           output to the console. This can be useful for early debugging of
288           U-Boot when running on top of EFI (Extensive Firmware Interface).
289           This is a type of BIOS used by PCs.
290
291 config DEBUG_SBI_CONSOLE
292         bool "SBI"
293         depends on RISCV_SMODE
294         help
295           Select this to enable a debug console which calls back to SBI to
296           output to the console. This can be useful for early debugging of
297           U-Boot when running on top of SBI (Supervisor Binary Interface).
298           This implementation of the debug UART is not available while in
299           M-mode (e.g. during SPL).
300
301 config DEBUG_UART_S5P
302         bool "Samsung S5P"
303         depends on ARCH_APPLE || ARCH_EXYNOS || ARCH_S5PC1XX
304         help
305           Select this to enable a debug UART using the serial_s5p driver. You
306           will need to provide parameters to make this work. The driver will
307           be available until the real driver-model serial is running.
308
309 config DEBUG_UART_MSM_GENI
310         bool "Qualcomm snapdragon"
311         depends on ARCH_SNAPDRAGON
312         help
313           Select this to enable a debug UART using the serial_msm driver. You
314           will need to provide parameters to make this work. The driver will
315           be available until the real driver-model serial is running.
316
317 config DEBUG_UART_MESON
318         bool "Amlogic Meson"
319         depends on MESON_SERIAL
320         help
321           Select this to enable a debug UART using the serial_meson driver. You
322           will need to provide parameters to make this work. The driver will
323           be available until the real driver-model serial is running.
324
325 config DEBUG_UART_UARTLITE
326         bool "Xilinx Uartlite"
327         depends on XILINX_UARTLITE
328         help
329           Select this to enable a debug UART using the serial_uartlite driver.
330           You will need to provide parameters to make this work. The driver will
331           be available until the real driver-model serial is running.
332
333 config DEBUG_UART_ARM_DCC
334         bool "ARM DCC"
335         depends on ARM_DCC
336         help
337           Select this to enable a debug UART using the ARM JTAG DCC port.
338           The DCC port can be used for very early debugging and doesn't require
339           any additional setting like address/baudrate/clock. On systems without
340           any serial interface this is the easiest way how to get console.
341           Every ARM core has own DCC port which is the part of debug interface.
342           This port is available at least on ARMv6, ARMv7, ARMv8 and XScale
343           architectures.
344
345 config DEBUG_MVEBU_A3700_UART
346         bool "Marvell Armada 3700"
347         depends on MVEBU_A3700_UART
348         help
349           Select this to enable a debug UART using the serial_mvebu driver. You
350           will need to provide parameters to make this work. The driver will
351           be available until the real driver-model serial is running.
352
353 config DEBUG_UART_ZYNQ
354         bool "Xilinx Zynq"
355         depends on ZYNQ_SERIAL
356         help
357           Select this to enable a debug UART using the serial_zynq driver. You
358           will need to provide parameters to make this work. The driver will
359           be available until the real driver-model serial is running.
360
361 config DEBUG_UART_APBUART
362         depends on LEON3
363         bool "Gaisler APBUART"
364         help
365           Select this to enable a debug UART using the serial_leon3 driver. You
366           will need to provide parameters to make this work. The driver will
367           be available until the real driver model serial is running.
368
369 config DEBUG_UART_PL010
370         bool "pl010"
371         depends on PL01X_SERIAL
372         help
373           Select this to enable a debug UART using the pl01x driver with the
374           PL010 UART type. You will need to provide parameters to make this
375           work. The driver will be available until the real driver model
376           serial is running.
377
378 config DEBUG_UART_PL011
379         bool "pl011"
380         depends on PL01X_SERIAL || PL011_SERIAL
381         help
382           Select this to enable a debug UART using the pl01x driver with the
383           PL011 UART type. You will need to provide parameters to make this
384           work. The driver will be available until the real driver model
385           serial is running.
386
387 config DEBUG_UART_PIC32
388         bool "Microchip PIC32"
389         depends on PIC32_SERIAL
390         help
391           Select this to enable a debug UART using the serial_pic32 driver. You
392           will need to provide parameters to make this work. The driver will
393           be available until the real driver model serial is running.
394
395 config DEBUG_UART_MXC
396         bool "IMX Serial port"
397         depends on MXC_UART
398         help
399           Select this to enable a debug UART using the serial_mxc driver. You
400           will need to provide parameters to make this work. The driver will
401           be available until the real driver model serial is running.
402
403 config DEBUG_UART_SANDBOX
404         bool "sandbox"
405         depends on SANDBOX_SERIAL
406         help
407           Select this to enable the debug UART using the sandbox driver. This
408           provides basic serial output from the console without needing to
409           start up driver model. The driver will be available until the real
410           driver model serial is running.
411
412 config DEBUG_UART_SEMIHOSTING
413         bool "semihosting"
414         depends on SEMIHOSTING_SERIAL
415         help
416           Select this to enable the debug UART using the semihosting driver.
417           This provides basic serial output from the console without needing to
418           start up driver model. The driver will be available until the real
419           driver model serial is running.
420
421 config DEBUG_UART_SCIF
422         bool "Renesas SCIF UART"
423         depends on SH || ARCH_RMOBILE
424         help
425           Select this to enable a debug UART using the serial_sh driver. You
426           will need to provide parameters to make this work. The driver will
427           be available until the real driver-model serial is running.
428
429 config DEBUG_UART_SIFIVE
430         bool "SiFive UART"
431         depends on SIFIVE_SERIAL
432         help
433           Select this to enable a debug UART using the serial_sifive driver. You
434           will need to provide parameters to make this work. The driver will
435           be available until the real driver-model serial is running.
436
437 config DEBUG_UART_STM32
438         bool "STMicroelectronics STM32"
439         depends on STM32_SERIAL
440         help
441           Select this to enable a debug UART using the serial_stm32 driver
442           You will need to provide parameters to make this work.
443           The driver will be available until the real driver model
444           serial is running.
445
446 config DEBUG_UART_UNIPHIER
447         bool "UniPhier on-chip UART"
448         depends on ARCH_UNIPHIER
449         help
450           Select this to enable a debug UART using the UniPhier on-chip UART.
451           You will need to provide DEBUG_UART_BASE to make this work.  The
452           driver will be available until the real driver-model serial is
453           running.
454
455 config DEBUG_UART_OMAP
456         bool "OMAP uart"
457         depends on OMAP_SERIAL
458         help
459           Select this to enable a debug UART using the omap ns16550 driver.
460           You will need to provide parameters to make this work. The driver
461           will be available until the real driver model serial is running.
462
463 config DEBUG_UART_MTK
464         bool "MediaTek High-speed UART"
465         depends on MTK_SERIAL
466         help
467           Select this to enable a debug UART using the MediaTek High-speed
468           UART driver.
469           You will need to provide parameters to make this work. The
470           driver will be available until the real driver model serial is
471           running.
472
473 config DEBUG_UART_MT7620
474         bool "UART driver for MediaTek MT7620 and earlier SoCs"
475         depends on MT7620_SERIAL
476         help
477           Select this to enable a debug UART using the UART driver for
478           MediaTek MT7620 and earlier SoCs.
479           You will need to provide parameters to make this work. The
480           driver will be available until the real driver model serial is
481           running.
482
483 endchoice
484
485 config DEBUG_UART_BASE
486         hex "Base address of UART"
487         depends on DEBUG_UART
488         default 0 if DEBUG_SBI_CONSOLE
489         default 0 if DEBUG_UART_SANDBOX
490         default 0xff000000 if DEBUG_UART_ZYNQ && ARCH_ZYNQMP
491         default 0xe0000000 if DEBUG_UART_ZYNQ && ARCH_ZYNQ
492         help
493           This is the base address of your UART for memory-mapped UARTs.
494
495           A default should be provided by your board, but if not you will need
496           to use the correct value here.
497
498 config SPL_DEBUG_UART_BASE
499         hex "Base address of UART for SPL"
500         depends on SPL && DEBUG_UART
501         default DEBUG_UART_BASE
502         help
503           This is the base address of your UART for memory-mapped UARTs for SPL.
504
505 config TPL_DEBUG_UART_BASE
506         hex "Base address of UART for TPL"
507         depends on TPL && DEBUG_UART
508         default DEBUG_UART_BASE
509         help
510           This is the base address of your UART for memory-mapped UARTs for TPL.
511
512 config DEBUG_UART_CLOCK
513         int "UART input clock"
514         depends on DEBUG_UART
515         default 0 if DEBUG_SBI_CONSOLE
516         default 0 if DEBUG_UART_SANDBOX
517         default 0 if DEBUG_MVEBU_A3700_UART
518         default 100000000 if DEBUG_UART_ZYNQ && ARCH_ZYNQMP
519         default 50000000 if DEBUG_UART_ZYNQ && ARCH_ZYNQ
520         help
521           The UART input clock determines the speed of the internal UART
522           circuitry. The baud rate is derived from this by dividing the input
523           clock down.
524
525           A default should be provided by your board, but if not you will need
526           to use the correct value here.
527
528 config DEBUG_UART_SHIFT
529         int "UART register shift"
530         depends on DEBUG_UART
531         default 0 if DEBUG_UART
532         help
533           Some UARTs (notably ns16550) support different register layouts
534           where the registers are spaced either as bytes, words or some other
535           value. Use this value to specify the shift to use, where 0=byte
536           registers, 2=32-bit word registers, etc.
537
538 config DEBUG_UART_BOARD_INIT
539         bool "Enable board-specific debug UART init"
540         depends on DEBUG_UART
541         help
542           Some boards need to set things up before the debug UART can be used.
543           On these boards a call to debug_uart_init() is insufficient. When
544           this option is enabled, the function board_debug_uart_init() will
545           be called when debug_uart_init() is called. You can put any code
546           here that is needed to set up the UART ready for use, such as set
547           pin multiplexing or enable clocks.
548
549 config DEBUG_UART_ANNOUNCE
550         bool "Show a message when the debug UART starts up"
551         depends on DEBUG_UART
552         help
553           Enable this option to show a message when the debug UART is ready
554           for use. You will see a message like "<debug_uart> " as soon as
555           U-Boot has the UART ready for use (i.e. your code calls
556           debug_uart_init()). This can be useful just as a check that
557           everything is working.
558
559 config DEBUG_UART_SKIP_INIT
560         bool "Skip UART initialization"
561         depends on DEBUG_UART
562         help
563           Select this if the UART you want to use for debug output is already
564           initialized by the time U-Boot starts its execution.
565
566 config DEBUG_UART_NS16550_CHECK_ENABLED
567         bool "Check if UART is enabled on output"
568         depends on DEBUG_UART
569         depends on DEBUG_UART_NS16550
570         help
571           Select this if puts()/putc() might be called before the debug UART
572           has been initialized. If this is disabled, putc() might sit in a
573           tight loop if it is called before debug_uart_init() has been called.
574
575           Note that this does not work for every ns16550-compatible UART and
576           so has to be enabled carefully or you might notice lost characters.
577
578 config ALTERA_JTAG_UART
579         bool "Altera JTAG UART support"
580         depends on DM_SERIAL
581         help
582           Select this to enable an JTAG UART for Altera devices.The JTAG UART
583           core implements a method to communicate serial character streams
584           between a host PC and a Qsys system on an Altera FPGA. Please find
585           details on the "Embedded Peripherals IP User Guide" of Altera.
586
587 config ALTERA_JTAG_UART_BYPASS
588         bool "Bypass output when no connection"
589         depends on ALTERA_JTAG_UART
590         help
591           Bypass console output and keep going even if there is no JTAG
592           terminal connection with the host. The console output will resume
593           once the JTAG terminal is connected. Without the bypass, the console
594           output will wait forever until a JTAG terminal is connected. If you
595           not are sure, say Y.
596
597 config ALTERA_UART
598         bool "Altera UART support"
599         depends on DM_SERIAL
600         help
601           Select this to enable an UART for Altera devices. Please find
602           details on the "Embedded Peripherals IP User Guide" of Altera.
603
604 config AR933X_UART
605         bool "QCA/Atheros ar933x UART support"
606         depends on DM_SERIAL && SOC_AR933X
607         help
608           Select this to enable UART support for QCA/Atheros ar933x
609           devices. This driver uses driver model and requires a device
610           tree binding to operate, please refer to the document at
611           doc/device-tree-bindings/serial/qca,ar9330-uart.txt.
612
613 config ARC_SERIAL
614         bool "ARC UART support"
615         depends on DM_SERIAL
616         help
617           Select this to enable support for ARC UART now typically
618           only used in Synopsys DesignWare ARC simulators like nSIM.
619
620 config ARM_DCC
621         bool "ARM Debug Communication Channel (DCC) as UART support"
622         depends on ARM
623         help
624           Select this to enable using the ARM DCC as a form of UART.
625
626 config ATMEL_USART
627         bool "Atmel USART support"
628         help
629           Select this to enable USART support for Atmel SoCs. It can be
630           configured in the device tree, and input clock frequency can
631           be got from the clk node.
632
633 config SPL_UART_CLOCK
634         int "SPL fixed UART input clock"
635         depends on ATMEL_USART && SPL && !SPL_CLK
636         default 132096000 if ARCH_AT91
637         help
638           Provide a fixed clock value as input to the UART controller. This
639           might be needed on platforms which can't enable CONFIG_SPL_CLK
640           because of SPL image size restrictions.
641
642 config BCM283X_MU_SERIAL
643         bool "Support for BCM283x Mini-UART"
644         depends on DM_SERIAL && ARCH_BCM283X
645         default y
646         help
647           Select this to enable Mini-UART support on BCM283X family of SoCs.
648
649 config BCM283X_PL011_SERIAL
650         bool "Support for BCM283x PL011 UART"
651         depends on PL01X_SERIAL && ARCH_BCM283X
652         default y
653         help
654           Select this to enable an overriding PL011 driver for BCM283X SoCs
655           that supports automatic disable, so that it only gets used when
656           the UART is actually muxed.
657
658 config BCM6345_SERIAL
659         bool "Support for BCM6345 UART"
660         depends on DM_SERIAL
661         help
662           Select this to enable UART on BCM6345 SoCs.
663
664 config COREBOOT_SERIAL
665         bool "Coreboot UART support"
666         depends on DM_SERIAL
667         default y if SYS_COREBOOT
668         select SYS_NS16550
669         help
670           Select this to enable a ns16550-style UART where the platform data
671           comes from the coreboot 'sysinfo' tables. This allows U-Boot to have
672           a serial console on any platform without needing to change the
673           device tree, etc.
674
675 config COREBOOT_SERIAL_FROM_DBG2
676         bool "Obtain UART from ACPI tables"
677         depends on COREBOOT_SERIAL
678         default y if !SPL
679         help
680           Select this to try to find a DBG2 record in the ACPI tables, in the
681           event that coreboot does not provide information about the UART in the
682           normal sysinfo tables. This provides a useful fallback when serial
683           is not enabled in coreboot.
684
685 config CORTINA_UART
686         bool "Cortina UART support"
687         depends on DM_SERIAL
688         help
689           Select this to enable UART support for Cortina-Access UART devices
690           found on CAxxxx SoCs.
691
692 config FSL_LINFLEXUART
693         bool "Freescale Linflex UART support"
694         depends on DM_SERIAL
695         help
696           Select this to enable the Linflex serial module found on some
697           NXP SoCs like S32V234.
698
699 config FSL_LPUART
700         bool "Freescale LPUART support"
701         help
702           Select this to enable a Low Power UART for Freescale VF610 and
703           QorIQ Layerscape devices.
704
705 config LPUART
706         bool "Use the LPUART as console"
707         depends on FSL_LPUART
708
709 config MVEBU_A3700_UART
710         bool "UART support for Armada 3700"
711         help
712           Choose this option to add support for UART driver on the Marvell
713           Armada 3700 SoC. The base address is configured via DT.
714
715 config MCFUART
716         bool "Freescale ColdFire UART support"
717         help
718           Choose this option to add support for UART driver on the ColdFire
719           SoC's family. The serial communication channel provides a full-duplex
720           asynchronous/synchronous receiver and transmitter deriving an
721           operating frequency from the internal bus clock or an external clock.
722
723 config MXC_UART
724         bool "IMX serial port support"
725         depends on ARCH_MX31 || MX5 || MX6 || MX7 || IMX8M
726         help
727           If you have a machine based on a Motorola IMX CPU you
728           can enable its onboard serial port by enabling this option.
729
730 config NULLDEV_SERIAL
731         bool "Null serial device"
732         help
733           Select this to enable null serial device support. A null serial
734           device merely acts as a placeholder for a serial device and does
735           nothing for all it's operation.
736
737 config PIC32_SERIAL
738         bool "Support for Microchip PIC32 on-chip UART"
739         depends on DM_SERIAL && MACH_PIC32
740         default y
741         help
742           Support for the UART found on Microchip PIC32 SoC's.
743
744 config SYS_NS16550_SERIAL
745         bool "NS16550 UART or compatible legacy driver"
746         depends on !DM_SERIAL
747         select SYS_NS16550
748
749 config SPL_SYS_NS16550_SERIAL
750         bool "NS16550 UART or compatible legacy driver in SPL"
751         depends on SPL && !SPL_DM_SERIAL
752         default y if SYS_NS16550_SERIAL || ARCH_SUNXI || ARCH_OMAP2PLUS
753         select SYS_NS16550
754
755 config SYS_NS16550
756         bool "NS16550 UART or compatible"
757         help
758           Support NS16550 UART or compatible. This can be enabled in the
759           device tree with the correct input clock frequency. If the input
760           clock frequency is not defined in the device tree, the macro
761           CFG_SYS_NS16550_CLK defined in a legacy board header file will
762           be used. It can be a constant or a function to get clock, eg,
763           get_serial_clock().
764
765 config NS16550_DYNAMIC
766         bool "Allow NS16550 to be configured at runtime"
767         depends on SYS_NS16550
768         default y if SYS_COREBOOT || SYS_SLIMBOOTLOADER
769         help
770           Enable this option to allow device-tree control of the driver.
771
772           Normally this driver is controlled by the following options:
773
774           It is not a good practice for a driver to be statically configured,
775           since it prevents the same driver being used for different types of
776           UARTs in a system. This option avoids this problem at the cost of a
777           slightly increased code size.
778
779 config SYS_NS16550_MEM32
780         bool "If memory-mapped, 32bit access is needed for ns16550 register access"
781         depends on SYS_NS16550
782         help
783           If enabled, if memory-mapped, indicates that 32-bit access should be
784           used (instead of 8-bit) for register access.
785
786 config SYS_NS16550_PORT_MAPPED
787         bool "Port I/O is used for ns16550 register access"
788         depends on SYS_NS16550
789         help
790           If enabled, port I/O is used for ns16550 register access. If not
791           enabled, then the UART is memory-mapped.
792
793 config SYS_NS16550_REG_SIZE
794         int "ns16550 register width and endianness"
795         depends on SYS_NS16550_SERIAL || SPL_SYS_NS16550_SERIAL
796         range -4 4
797         default -4 if ARCH_OMAP2PLUS || ARCH_SUNXI
798         default 1
799         help
800           Indicates register width and also endianness. If positive, big-endian
801           access is used. If negative, little-endian is used.
802
803 config SPL_NS16550_MIN_FUNCTIONS
804         bool "Only provide NS16550_init and NS16550_putc in SPL"
805         depends on SPL_SYS_NS16550_SERIAL && PPC
806         help
807           Enable this if you desire to only have use of the NS16550_init and
808           NS16550_putc functions for the serial driver located at
809           drivers/serial/ns16550.c.  This option is useful for saving space for
810           already greatly restricted images, including but not limited to
811           NAND_SPL configurations.
812
813 config INTEL_MID_SERIAL
814         bool "Intel MID platform UART support"
815         depends on DM_SERIAL && OF_CONTROL
816         depends on INTEL_MID
817         select SYS_NS16550
818         help
819           Select this to enable a UART for Intel MID platforms.
820           This uses the ns16550 driver as a library.
821
822 config PL011_SERIAL
823         bool "ARM PL011 driver"
824         depends on !DM_SERIAL
825         help
826           Select this to enable a UART for platforms using PL011.
827
828 config PL01X_SERIAL
829         bool "ARM PL010 and PL011 driver"
830         depends on DM_SERIAL
831         help
832           Select this to enable a UART for platforms using PL010 or PL011.
833
834 config ROCKCHIP_SERIAL
835         bool "Rockchip on-chip UART support"
836         depends on DM_SERIAL
837         select SYS_NS16550
838         help
839           Select this to enable a debug UART for Rockchip devices when using
840           OF_PLATDATA (i.e. a compiled-in device tree replacemenmt).
841           This uses the ns16550 driver, converting the platdata from of-platdata
842           to the ns16550 format.
843
844 config S5P_SERIAL
845         bool "Support for Samsung S5P UART"
846         depends on ARCH_APPLE || ARCH_EXYNOS || ARCH_S5PC1XX
847         default y
848         help
849           Select this to enable Samsung S5P UART support.
850
851 config S5P4418_PL011_SERIAL
852         bool "Extended PL011 driver for S5P4418"
853         depends on DM_SERIAL && PL01X_SERIAL && ARCH_NEXELL
854         default y
855         help
856           Select this to enable support of the PL011 UARTs in the S5P4418 SOC.
857           With this driver the UART-clocks are set to the appropriate rate
858           (if not 'skip-init').
859
860 config SANDBOX_SERIAL
861         bool "Sandbox UART support"
862         depends on SANDBOX
863         imply SERIAL_PUTS
864         help
865           Select this to enable a seral UART for sandbox. This is required to
866           operate correctly, otherwise you will see no serial output from
867           sandbox. The emulated UART will display to the console and console
868           input will be fed into the UART. This allows you to interact with
869           U-Boot.
870
871           The operation of the console is controlled by the -t command-line
872           flag. In raw mode, U-Boot sees all characters from the terminal
873           before they are processed, including Ctrl-C. In cooked mode, Ctrl-C
874           is processed by the terminal, and terminates U-Boot. Valid options
875           are:
876
877              -t raw-with-sigs   Raw mode, Ctrl-C will terminate U-Boot
878              -t raw             Raw mode, Ctrl-C is processed by U-Boot
879              -t cooked          Cooked mode, Ctrl-C terminates
880
881 config SCIF_CONSOLE
882         bool "Renesas SCIF UART support"
883         depends on SH || ARCH_RMOBILE
884         help
885           Select this to enable Renesas SCIF UART. To operate serial ports
886           on systems with RCar or SH SoCs, say Y to this option. If unsure,
887           say N.
888
889 choice
890         prompt "SCIF console port"
891         depends on SCIF_CONSOLE && (!DM_SERIAL || (SPL && !SPL_DM_SERIAL))
892
893 config CONS_SCIF0
894         bool "SCIF0"
895
896 config CONS_SCIF1
897         bool "SCIF1"
898
899 config CONS_SCIF2
900         bool "SCIF2"
901
902 config CONS_SCIF4
903         bool "SCIF4"
904
905 config CONS_SCIFA0
906         bool "SCIFA0"
907
908 endchoice
909
910 config SH_SCIF_CLK_FREQ
911         int "SCIF console clock frequency"
912         depends on SCIF_CONSOLE && (!DM_SERIAL || (SPL && !SPL_DM_SERIAL))
913         default 65000000
914
915 config SEMIHOSTING_SERIAL
916         bool "Semihosting UART support"
917         depends on SEMIHOSTING && !SERIAL_RX_BUFFER
918         imply SERIAL_PUTS
919         help
920           Select this to enable a serial UART using semihosting. Special halt
921           instructions will be issued which an external debugger (such as a
922           JTAG emulator) may interpret. The debugger will display U-Boot's
923           console output on the host system.
924
925           Enable this option only if you are using a debugger which supports
926           semihosting. If you are not using a debugger, this driver will halt
927           the boot.
928
929 config UNIPHIER_SERIAL
930         bool "Support for UniPhier on-chip UART"
931         depends on ARCH_UNIPHIER
932         default y
933         help
934           If you have a UniPhier based board and want to use the on-chip
935           serial ports, say Y to this option. If unsure, say N.
936
937 config XILINX_UARTLITE
938         bool "Xilinx Uarlite support"
939         depends on DM_SERIAL
940         help
941           If you have a Xilinx based board and want to use the uartlite
942           serial ports, say Y to this option. If unsure, say N.
943
944 config MESON_SERIAL
945         bool "Support for Amlogic Meson UART"
946         depends on DM_SERIAL && ARCH_MESON
947         help
948           If you have an Amlogic Meson based board and want to use the on-chip
949           serial ports, say Y to this option. If unsure, say N.
950
951 config MSM_SERIAL
952         bool "Qualcomm on-chip UART"
953         depends on DM_SERIAL
954         help
955           Support Data Mover UART used on Qualcomm Snapdragon SoCs.
956           It should support all Qualcomm devices with UARTDM version 1.4,
957           for example APQ8016 and MSM8916.
958           Single baudrate is supported in current implementation (115200).
959
960 config MSM_GENI_SERIAL
961         bool "Qualcomm on-chip GENI UART"
962         select MISC
963         imply QCOM_GENI_SE
964         help
965           Support UART based on Generic Interface (GENI) Serial Engine (SE),
966           used on Qualcomm Snapdragon SoCs. Should support all qualcomm SOCs
967           with Qualcomm Universal Peripheral (QUP) Wrapper cores,
968           i.e. newer ones, starting from SDM845.
969           Driver works in FIFO mode.
970           Multiple baudrates supported.
971
972 config MXS_AUART_SERIAL
973         bool "MXS AUART"
974         depends on DM_SERIAL
975         help
976           Support for Freescale i.MX23 / i.MX28 AUART or Application UART IP.
977           This IP is present in the aforementioned SoCs, however this is not
978           the IP used to drive the Debug UART port, for that see PL01X_SERIAL .
979
980 config OCTEON_SERIAL_BOOTCMD
981         bool "MIPS Octeon PCI remote bootcmd input"
982         depends on ARCH_OCTEON
983         depends on DM_SERIAL
984         select SYS_IS_IN_ENV
985         select CONSOLE_MUX
986         help
987          This driver supports remote input over the PCIe bus from a host
988          to U-Boot for entering commands.  It is utilized by the host
989          commands 'oct-remote-load' and 'oct-remote-bootcmd'.
990
991 config OCTEON_SERIAL_PCIE_CONSOLE
992         bool "MIPS Octeon PCIe remote console"
993         depends on ARCH_OCTEON
994         depends on (DM_SERIAL && DM_STDIO)
995         select SYS_STDIO_DEREGISTER
996         select SYS_CONSOLE_IS_IN_ENV
997         select CONSOLE_MUX
998         help
999           This driver supports remote console over the PCIe bus when the
1000           Octeon is running in PCIe target mode. The host program
1001           'oct-remote-console' can be used to connect to this console.
1002           The console number will likely be 0 or 1.
1003
1004 config OMAP_SERIAL
1005         bool "Support for OMAP specific UART"
1006         depends on DM_SERIAL
1007         default y if (ARCH_OMAP2PLUS || ARCH_K3)
1008         select SYS_NS16550
1009         help
1010           If you have an TI based SoC and want to use the on-chip serial
1011           port, say Y to this option. If unsure say N.
1012
1013 config OWL_SERIAL
1014         bool "Actions Semi OWL UART"
1015         depends on DM_SERIAL && ARCH_OWL
1016         help
1017           If you have a Actions Semi OWL based board and want to use the on-chip
1018           serial port, say Y to this option. If unsure, say N.
1019           Single baudrate is supported in current implementation (115200).
1020
1021 config HTIF_CONSOLE
1022         bool "RISC-V HTIF console support"
1023         depends on DM_SERIAL && 64BIT
1024         help
1025           Select this to enable host transfer interface (HTIF) based serial
1026           console. The HTIF device is quite common in RISC-V emulators and
1027           RISC-V ISS so this driver allows using U-Boot on such platforms.
1028
1029 config SIFIVE_SERIAL
1030         bool "SiFive UART support"
1031         depends on DM_SERIAL
1032         help
1033           This driver supports the SiFive UART. If unsure say N.
1034
1035 config STI_ASC_SERIAL
1036         bool "STMicroelectronics on-chip UART"
1037         depends on DM_SERIAL && ARCH_STI
1038         help
1039           Select this to enable Asynchronous Serial Controller available
1040           on STiH410 SoC. This is a basic implementation,  it supports
1041           following baudrate 9600, 19200, 38400, 57600 and 115200.
1042
1043 config STM32_SERIAL
1044         bool "STMicroelectronics STM32 SoCs on-chip UART"
1045         depends on DM_SERIAL && (STM32F4 || STM32F7 || STM32H7 || ARCH_STM32MP)
1046         help
1047           If you have a machine based on a STM32 F4, F7, H7 or MP1 SOC
1048           you can enable its onboard serial ports, say Y to this option.
1049           If unsure, say N.
1050
1051 config ZYNQ_SERIAL
1052         bool "Cadence (Xilinx Zynq) UART support"
1053         depends on DM_SERIAL
1054         help
1055           This driver supports the Cadence UART. It is found e.g. in Xilinx
1056           Zynq/ZynqMP.
1057
1058 config MTK_SERIAL
1059         bool "MediaTek High-speed UART support"
1060         depends on DM_SERIAL
1061         help
1062           Select this to enable UART support for MediaTek High-speed UART
1063           devices. This driver uses driver model and requires a device
1064           tree binding to operate.
1065           The High-speed UART is compatible with the ns16550a UART and have
1066           its own high-speed registers.
1067
1068 config MT7620_SERIAL
1069         bool "UART driver for MediaTek MT7620 and earlier SoCs"
1070         depends on DM_SERIAL
1071         help
1072           Select this to enable UART support for MediaTek MT7620 and earlier
1073           SoCs. This driver uses driver model and requires a device tree
1074           binding to operate.
1075           The UART driver for MediaTek MT7620 and earlier SoCs is *NOT*
1076           compatible with the ns16550a UART.
1077
1078 config MPC8XX_CONS
1079         bool "Console driver for MPC8XX"
1080         depends on MPC8xx
1081         default y
1082
1083 config NPCM_SERIAL
1084         bool "Nuvoton NPCM UART driver"
1085         depends on DM_SERIAL
1086         help
1087           Select this to enable UART support for Nuvoton BMCs
1088           (NPCM7xx and NPCM8xx).
1089           The driver enables the onboard serial port with 8-N-1
1090           configuration.
1091
1092 config XEN_SERIAL
1093         bool "XEN serial support"
1094         depends on XEN
1095         help
1096           If built without DM support, then requires Xen
1097           to be built with CONFIG_VERBOSE_DEBUG.
1098
1099 choice
1100         prompt "Console port"
1101         default 8xx_CONS_SMC1
1102         depends on MPC8XX_CONS
1103         help
1104           Depending on board, select one serial port
1105           (CONFIG_8xx_CONS_SMC1 or CONFIG_8xx_CONS_SMC2)
1106
1107 config 8xx_CONS_SMC1
1108         bool "SMC1"
1109
1110 config 8xx_CONS_SMC2
1111         bool "SMC2"
1112
1113 endchoice
1114
1115 config SYS_SMC_RXBUFLEN
1116         int "Console Rx buffer length"
1117         depends on MPC8XX_CONS
1118         default 1
1119         help
1120           With CONFIG_SYS_SMC_RXBUFLEN it is possible to define
1121           the maximum receive buffer length for the SMC.
1122           This option is actual only for 8xx possible.
1123           If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE
1124           must be defined, to setup the maximum idle timeout for
1125           the SMC.
1126
1127 config SYS_MAXIDLE
1128         int "maximum idle timeout"
1129         depends on MPC8XX_CONS
1130         default 0
1131
1132 config SYS_BRGCLK_PRESCALE
1133         int "BRG Clock Prescale"
1134         depends on MPC8XX_CONS
1135         default 1
1136
1137 config SYS_SDSR
1138         hex "SDSR Value"
1139         depends on MPC8XX_CONS
1140         default 0x83
1141
1142 config SYS_SDMR
1143         hex "SDMR Value"
1144         depends on MPC8XX_CONS
1145         default 0
1146
1147 endif