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