xref: /openbmc/u-boot/drivers/serial/Kconfig (revision 9b23c73d)
1#
2# Serial device configuration
3#
4
5menu "Serial drivers"
6
7config BAUDRATE
8	int "Default baudrate"
9	default 115200
10	help
11	  Select a default baudrate, where "default" has a driver-specific
12	  meaning of either setting the baudrate for the early debug UART
13	  in the SPL stage (most drivers) or for choosing a default baudrate
14	  in the absence of an environment setting (serial_mxc.c).
15
16config REQUIRE_SERIAL_CONSOLE
17	bool "Require a serial port for console"
18	# Running without a serial console is not supported by the
19	# non-dm serial code
20	depends on DM_SERIAL
21	default y
22	help
23	  Require a serial port for the console, and panic if none is found
24	  during serial port initialization (default y). Set this to n on
25	  boards which have no debug serial port whatsoever.
26
27config SPECIFY_CONSOLE_INDEX
28	bool "Specify the port number used for console"
29	default y if !DM_SERIAL || (SPL && !SPL_DM_SERIAL) || \
30		(TPL && !TPL_DM_SERIAL)
31	help
32	  In various cases, we need to specify which of the UART devices that
33	  a board or SoC has available are to be used for the console device
34	  in U-Boot.
35
36config SERIAL_PRESENT
37	bool "Provide a serial driver"
38	depends on DM_SERIAL
39	default y
40	help
41	  In very space-constrained devices even the full UART driver is too
42	  large. In this case the debug UART can still be used in some cases.
43	  This option enables the full UART in U-Boot, so if is it disabled,
44	  the full UART driver will be omitted, thus saving space.
45
46config SPL_SERIAL_PRESENT
47	bool "Provide a serial driver in SPL"
48	depends on DM_SERIAL
49	default y
50	help
51	  In very space-constrained devices even the full UART driver is too
52	  large. In this case the debug UART can still be used in some cases.
53	  This option enables the full UART in SPL, so if is it disabled,
54	  the full UART driver will be omitted, thus saving space.
55
56# Logic to allow us to use the imply keyword to set what the default port
57# should be.  The default is otherwise 1.
58config CONS_INDEX_0
59	bool
60
61config CONS_INDEX_2
62	bool
63
64config CONS_INDEX_3
65	bool
66
67config CONS_INDEX_4
68	bool
69
70config CONS_INDEX_5
71	bool
72
73config CONS_INDEX_6
74	bool
75
76config CONS_INDEX
77	int "UART used for console"
78	depends on SPECIFY_CONSOLE_INDEX
79	range 0 6
80	default 0 if CONS_INDEX_0
81	default 2 if CONS_INDEX_2
82	default 3 if CONS_INDEX_3
83	default 4 if CONS_INDEX_4
84	default 5 if CONS_INDEX_5
85	default 6 if CONS_INDEX_6
86	default 1
87	help
88	  Set this to match the UART number of the serial console.
89
90config DM_SERIAL
91	bool "Enable Driver Model for serial drivers"
92	depends on DM
93	help
94	  Enable driver model for serial. This replaces
95	  drivers/serial/serial.c with the serial uclass, which
96	  implements serial_putc() etc. The uclass interface is
97	  defined in include/serial.h.
98
99config SERIAL_RX_BUFFER
100	bool "Enable RX buffer for serial input"
101	depends on DM_SERIAL
102	help
103	  Enable RX buffer support for the serial driver. This enables
104	  pasting longer strings, even when the RX FIFO of the UART is
105	  not big enough (e.g. 16 bytes on the normal NS16550).
106
107config SERIAL_RX_BUFFER_SIZE
108	int "RX buffer size"
109	depends on SERIAL_RX_BUFFER
110	default 256
111	help
112	  The size of the RX buffer (needs to be power of 2)
113
114config SERIAL_SEARCH_ALL
115	bool "Search for serial devices after default one failed"
116	depends on DM_SERIAL
117	help
118	  The serial subsystem only searches for a single serial device
119	  that was instantiated, but does not check whether it was probed
120	  correctly. With this option set, we make successful probing
121	  mandatory and search for fallback serial devices if the default
122	  device does not work.
123
124	  If unsure, say N.
125
126config SPL_DM_SERIAL
127	bool "Enable Driver Model for serial drivers in SPL"
128	depends on DM_SERIAL && SPL_DM
129	default y
130	help
131	  Enable driver model for serial in SPL. This replaces
132	  drivers/serial/serial.c with the serial uclass, which
133	  implements serial_putc() etc. The uclass interface is
134	  defined in include/serial.h.
135
136config TPL_DM_SERIAL
137	bool "Enable Driver Model for serial drivers in TPL"
138	depends on DM_SERIAL
139	default y if TPL && DM_SERIAL
140	help
141	  Enable driver model for serial in TPL. This replaces
142	  drivers/serial/serial.c with the serial uclass, which
143	  implements serial_putc() etc. The uclass interface is
144	  defined in include/serial.h.
145
146config DEBUG_UART
147	bool "Enable an early debug UART for debugging"
148	help
149	  The debug UART is intended for use very early in U-Boot to debug
150	  problems when an ICE or other debug mechanism is not available.
151
152	  To use it you should:
153	  - Make sure your UART supports this interface
154	  - Enable CONFIG_DEBUG_UART
155	  - Enable the CONFIG for your UART to tell it to provide this interface
156	        (e.g. CONFIG_DEBUG_UART_NS16550)
157	  - Define the required settings as needed (see below)
158	  - Call debug_uart_init() before use
159	  - Call debug_uart_putc() to output a character
160
161	  Depending on your platform it may be possible to use this UART before
162	  a stack is available.
163
164	  If your UART does not support this interface you can probably add
165	  support quite easily. Remember that you cannot use driver model and
166	  it is preferred to use no stack.
167
168	  You must not use this UART once driver model is working and the
169	  serial drivers are up and running (done in serial_init()). Otherwise
170	  the drivers may conflict and you will get strange output.
171
172choice
173	prompt "Select which UART will provide the debug UART"
174	depends on DEBUG_UART
175	default DEBUG_UART_NS16550
176
177config DEBUG_UART_ALTERA_JTAGUART
178	bool "Altera JTAG UART"
179	help
180	  Select this to enable a debug UART using the altera_jtag_uart driver.
181	  You will need to provide parameters to make this work. The driver will
182	  be available until the real driver model serial is running.
183
184config DEBUG_UART_ALTERA_UART
185	bool "Altera UART"
186	help
187	  Select this to enable a debug UART using the altera_uart driver.
188	  You will need to provide parameters to make this work. The driver will
189	  be available until the real driver model serial is running.
190
191config DEBUG_UART_AR933X
192	bool "QCA/Atheros ar933x"
193	depends on AR933X_UART
194	help
195	  Select this to enable a debug UART using the ar933x uart driver.
196	  You will need to provide parameters to make this work. The
197	  driver will be available until the real driver model serial is
198	  running.
199
200config DEBUG_UART_ATMEL
201	bool "Atmel USART"
202	help
203	  Select this to enable a debug UART using the atmel usart driver. You
204	  will need to provide parameters to make this work. The driver will
205	  be available until the real driver-model serial is running.
206
207config DEBUG_UART_BCM6345
208	bool "BCM6345 UART"
209	depends on BCM6345_SERIAL
210	help
211	  Select this to enable a debug UART on BCM6345 SoCs. You
212	  will need to provide parameters to make this work. The driver will
213	  be available until the real driver model serial is running.
214
215config DEBUG_UART_NS16550
216	bool "ns16550"
217	help
218	  Select this to enable a debug UART using the ns16550 driver. You
219	  will need to provide parameters to make this work. The driver will
220	  be available until the real driver model serial is running.
221
222config DEBUG_EFI_CONSOLE
223	bool "EFI"
224	depends on EFI_APP
225	help
226	  Select this to enable a debug console which calls back to EFI to
227	  output to the console. This can be useful for early debugging of
228	  U-Boot when running on top of EFI (Extensive Firmware Interface).
229	  This is a type of BIOS used by PCs.
230
231config DEBUG_UART_S5P
232	bool "Samsung S5P"
233	help
234	  Select this to enable a debug UART using the serial_s5p driver. You
235	  will need to provide parameters to make this work. The driver will
236	  be available until the real driver-model serial is running.
237
238config DEBUG_UART_MESON
239	bool "Amlogic Meson"
240	depends on MESON_SERIAL
241	help
242	  Select this to enable a debug UART using the serial_meson driver. You
243	  will need to provide parameters to make this work. The driver will
244	  be available until the real driver-model serial is running.
245
246config DEBUG_UART_UARTLITE
247	bool "Xilinx Uartlite"
248	help
249	  Select this to enable a debug UART using the serial_uartlite 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_ARM_DCC
254	bool "ARM DCC"
255	help
256	  Select this to enable a debug UART using the ARM JTAG DCC port.
257	  The DCC port can be used for very early debugging and doesn't require
258	  any additional setting like address/baudrate/clock. On systems without
259	  any serial interface this is the easiest way how to get console.
260	  Every ARM core has own DCC port which is the part of debug interface.
261	  This port is available at least on ARMv6, ARMv7, ARMv8 and XScale
262	  architectures.
263
264config DEBUG_MVEBU_A3700_UART
265	bool "Marvell Armada 3700"
266	help
267	  Select this to enable a debug UART using the serial_mvebu driver. You
268	  will need to provide parameters to make this work. The driver will
269	  be available until the real driver-model serial is running.
270
271config DEBUG_UART_ZYNQ
272	bool "Xilinx Zynq"
273	help
274	  Select this to enable a debug UART using the serial_zynq driver. You
275	  will need to provide parameters to make this work. The driver will
276	  be available until the real driver-model serial is running.
277
278config DEBUG_UART_APBUART
279	depends on LEON3
280	bool "Gaisler APBUART"
281	help
282	  Select this to enable a debug UART using the serial_leon3 driver. You
283	  will need to provide parameters to make this work. The driver will
284	  be available until the real driver model serial is running.
285
286config DEBUG_UART_PL010
287	bool "pl010"
288	help
289	  Select this to enable a debug UART using the pl01x driver with the
290	  PL010 UART type. You will need to provide parameters to make this
291	  work. The driver will be available until the real driver model
292	  serial is running.
293
294config DEBUG_UART_PL011
295	bool "pl011"
296	help
297	  Select this to enable a debug UART using the pl01x driver with the
298	  PL011 UART type. You will need to provide parameters to make this
299	  work. The driver will be available until the real driver model
300	  serial is running.
301
302config DEBUG_UART_PIC32
303	bool "Microchip PIC32"
304	depends on PIC32_SERIAL
305	help
306	  Select this to enable a debug UART using the serial_pic32 driver. You
307	  will need to provide parameters to make this work. The driver will
308	  be available until the real driver model serial is running.
309
310config DEBUG_UART_MXC
311	bool "IMX Serial port"
312	depends on MXC_UART
313	help
314	  Select this to enable a debug UART using the serial_mxc driver. You
315	  will need to provide parameters to make this work. The driver will
316	  be available until the real driver model serial is running.
317
318config DEBUG_UART_UNIPHIER
319	bool "UniPhier on-chip UART"
320	depends on ARCH_UNIPHIER
321	help
322	  Select this to enable a debug UART using the UniPhier on-chip UART.
323	  You will need to provide DEBUG_UART_BASE to make this work.  The
324	  driver will be available until the real driver-model serial is
325	  running.
326
327config DEBUG_UART_OMAP
328	bool "OMAP uart"
329	help
330	  Select this to enable a debug UART using the omap ns16550 driver.
331	  You will need to provide parameters to make this work. The driver
332	  will be available until the real driver model serial is running.
333
334endchoice
335
336config DEBUG_UART_BASE
337	hex "Base address of UART"
338	depends on DEBUG_UART
339	help
340	  This is the base address of your UART for memory-mapped UARTs.
341
342	  A default should be provided by your board, but if not you will need
343	  to use the correct value here.
344
345config DEBUG_UART_CLOCK
346	int "UART input clock"
347	depends on DEBUG_UART
348	help
349	  The UART input clock determines the speed of the internal UART
350	  circuitry. The baud rate is derived from this by dividing the input
351	  clock down.
352
353	  A default should be provided by your board, but if not you will need
354	  to use the correct value here.
355
356config DEBUG_UART_SHIFT
357	int "UART register shift"
358	depends on DEBUG_UART
359	default 0 if DEBUG_UART
360	help
361	  Some UARTs (notably ns16550) support different register layouts
362	  where the registers are spaced either as bytes, words or some other
363	  value. Use this value to specify the shift to use, where 0=byte
364	  registers, 2=32-bit word registers, etc.
365
366config DEBUG_UART_BOARD_INIT
367	bool "Enable board-specific debug UART init"
368	depends on DEBUG_UART
369	help
370	  Some boards need to set things up before the debug UART can be used.
371	  On these boards a call to debug_uart_init() is insufficient. When
372	  this option is enabled, the function board_debug_uart_init() will
373	  be called when debug_uart_init() is called. You can put any code
374	  here that is needed to set up the UART ready for use, such as set
375	  pin multiplexing or enable clocks.
376
377config DEBUG_UART_ANNOUNCE
378	bool "Show a message when the debug UART starts up"
379	depends on DEBUG_UART
380	help
381	  Enable this option to show a message when the debug UART is ready
382	  for use. You will see a message like "<debug_uart> " as soon as
383	  U-Boot has the UART ready for use (i.e. your code calls
384	  debug_uart_init()). This can be useful just as a check that
385	  everything is working.
386
387config DEBUG_UART_SKIP_INIT
388	bool "Skip UART initialization"
389	help
390	  Select this if the UART you want to use for debug output is already
391	  initialized by the time U-Boot starts its execution.
392
393config ALTERA_JTAG_UART
394	bool "Altera JTAG UART support"
395	depends on DM_SERIAL
396	help
397	  Select this to enable an JTAG UART for Altera devices.The JTAG UART
398	  core implements a method to communicate serial character streams
399	  between a host PC and a Qsys system on an Altera FPGA. Please find
400	  details on the "Embedded Peripherals IP User Guide" of Altera.
401
402config ALTERA_JTAG_UART_BYPASS
403	bool "Bypass output when no connection"
404	depends on ALTERA_JTAG_UART
405	help
406	  Bypass console output and keep going even if there is no JTAG
407	  terminal connection with the host. The console output will resume
408	  once the JTAG terminal is connected. Without the bypass, the console
409	  output will wait forever until a JTAG terminal is connected. If you
410	  not are sure, say Y.
411
412config ALTERA_UART
413	bool "Altera UART support"
414	depends on DM_SERIAL
415	help
416	  Select this to enable an UART for Altera devices. Please find
417	  details on the "Embedded Peripherals IP User Guide" of Altera.
418
419config AR933X_UART
420	bool "QCA/Atheros ar933x UART support"
421	depends on DM_SERIAL && SOC_AR933X
422	help
423	  Select this to enable UART support for QCA/Atheros ar933x
424	  devices. This driver uses driver model and requires a device
425	  tree binding to operate, please refer to the document at
426	  doc/device-tree-bindings/serial/qca,ar9330-uart.txt.
427
428config ATMEL_USART
429	bool "Atmel USART support"
430	help
431	  Select this to enable USART support for Atmel SoCs. It can be
432	  configured in the device tree, and input clock frequency can
433	  be got from the clk node.
434
435config BCM283X_MU_SERIAL
436	bool "Support for BCM283x Mini-UART"
437	depends on DM_SERIAL && ARCH_BCM283X
438	default y
439	help
440	  Select this to enable Mini-UART support on BCM283X family of SoCs.
441
442config BCM283X_PL011_SERIAL
443	bool "Support for BCM283x PL011 UART"
444	depends on PL01X_SERIAL && ARCH_BCM283X
445	default y
446	help
447	  Select this to enable an overriding PL011 driver for BCM283X SoCs
448	  that supports automatic disable, so that it only gets used when
449	  the UART is actually muxed.
450
451config BCM6345_SERIAL
452	bool "Support for BCM6345 UART"
453	depends on DM_SERIAL && ARCH_BMIPS
454	help
455	  Select this to enable UART on BCM6345 SoCs.
456
457config FSL_LINFLEXUART
458	bool "Freescale Linflex UART support"
459	depends on DM_SERIAL
460	help
461	  Select this to enable the Linflex serial module found on some
462	  NXP SoCs like S32V234.
463
464config FSL_LPUART
465	bool "Freescale LPUART support"
466	help
467	  Select this to enable a Low Power UART for Freescale VF610 and
468	  QorIQ Layerscape devices.
469
470config MVEBU_A3700_UART
471	bool "UART support for Armada 3700"
472	default n
473	help
474	  Choose this option to add support for UART driver on the Marvell
475	  Armada 3700 SoC. The base address is configured via DT.
476
477config MXC_UART
478	bool "IMX serial port support"
479	depends on MX5 || MX6
480	help
481	  If you have a machine based on a Motorola IMX CPU you
482	  can enable its onboard serial port by enabling this option.
483
484config NULLDEV_SERIAL
485	bool "Null serial device"
486	help
487	  Select this to enable null serial device support. A null serial
488	  device merely acts as a placeholder for a serial device and does
489	  nothing for all it's operation.
490
491config PIC32_SERIAL
492	bool "Support for Microchip PIC32 on-chip UART"
493	depends on DM_SERIAL && MACH_PIC32
494	default y
495	help
496	  Support for the UART found on Microchip PIC32 SoC's.
497
498config SYS_NS16550
499	bool "NS16550 UART or compatible"
500	help
501	  Support NS16550 UART or compatible. This can be enabled in the
502	  device tree with the correct input clock frequency. If the input
503	  clock frequency is not defined in the device tree, the macro
504	  CONFIG_SYS_NS16550_CLK defined in a legacy board header file will
505	  be used. It can be a constant or a function to get clock, eg,
506	  get_serial_clock().
507
508config INTEL_MID_SERIAL
509	bool "Intel MID platform UART support"
510	depends on DM_SERIAL && OF_CONTROL
511	depends on INTEL_MID
512	select SYS_NS16550
513	help
514	  Select this to enable a UART for Intel MID platforms.
515	  This uses the ns16550 driver as a library.
516
517config PL010_SERIAL
518	bool "ARM PL010 driver"
519	depends on !DM_SERIAL
520	help
521	  Select this to enable a UART for platforms using PL010.
522
523config PL011_SERIAL
524	bool "ARM PL011 driver"
525	depends on !DM_SERIAL
526	help
527	  Select this to enable a UART for platforms using PL011.
528
529config PL01X_SERIAL
530	bool "ARM PL010 and PL011 driver"
531	depends on DM_SERIAL
532	help
533	  Select this to enable a UART for platforms using PL010 or PL011.
534
535config ROCKCHIP_SERIAL
536	bool "Rockchip on-chip UART support"
537	depends on DM_SERIAL && SPL_OF_PLATDATA
538	help
539	  Select this to enable a debug UART for Rockchip devices when using
540	  CONFIG_SPL_OF_PLATDATA (i.e. a compiled-in device tree replacemenmt).
541	  This uses the ns16550 driver, converting the platdata from of-platdata
542	  to the ns16550 format.
543
544config SANDBOX_SERIAL
545	bool "Sandbox UART support"
546	depends on SANDBOX
547	help
548	  Select this to enable a seral UART for sandbox. This is required to
549	  operate correctly, otherwise you will see no serial output from
550	  sandbox. The emulated UART will display to the console and console
551	  input will be fed into the UART. This allows you to interact with
552	  U-Boot.
553
554	  The operation of the console is controlled by the -t command-line
555	  flag. In raw mode, U-Boot sees all characters from the terminal
556	  before they are processed, including Ctrl-C. In cooked mode, Ctrl-C
557	  is processed by the terminal, and terminates U-Boot. Valid options
558	  are:
559
560	     -t raw-with-sigs	Raw mode, Ctrl-C will terminate U-Boot
561	     -t raw		Raw mode, Ctrl-C is processed by U-Boot
562	     -t cooked		Cooked mode, Ctrl-C terminates
563
564config SCIF_CONSOLE
565	bool "Renesas SCIF UART support"
566	depends on SH || ARCH_RMOBILE
567	help
568	  Select this to enable Renesas SCIF UART. To operate serial ports
569	  on systems with RCar or SH SoCs, say Y to this option. If unsure,
570	  say N.
571
572config UNIPHIER_SERIAL
573	bool "Support for UniPhier on-chip UART"
574	depends on ARCH_UNIPHIER
575	default y
576	help
577	  If you have a UniPhier based board and want to use the on-chip
578	  serial ports, say Y to this option. If unsure, say N.
579
580config XILINX_UARTLITE
581	bool "Xilinx Uarlite support"
582	depends on DM_SERIAL && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP || 4xx)
583	help
584	  If you have a Xilinx based board and want to use the uartlite
585	  serial ports, say Y to this option. If unsure, say N.
586
587config MESON_SERIAL
588	bool "Support for Amlogic Meson UART"
589	depends on DM_SERIAL && ARCH_MESON
590	help
591	  If you have an Amlogic Meson based board and want to use the on-chip
592	  serial ports, say Y to this option. If unsure, say N.
593
594config MSM_SERIAL
595	bool "Qualcomm on-chip UART"
596	depends on DM_SERIAL
597	help
598	  Support Data Mover UART used on Qualcomm Snapdragon SoCs.
599	  It should support all Qualcomm devices with UARTDM version 1.4,
600	  for example APQ8016 and MSM8916.
601	  Single baudrate is supported in current implementation (115200).
602
603config PXA_SERIAL
604	bool "PXA serial port support"
605	help
606	  If you have a machine based on a Marvell XScale PXA2xx CPU you
607	  can enable its onboard serial ports by enabling this option.
608
609config STI_ASC_SERIAL
610	bool "STMicroelectronics on-chip UART"
611	depends on DM_SERIAL && ARCH_STI
612	help
613	  Select this to enable Asynchronous Serial Controller available
614	  on STiH410 SoC. This is a basic implementation,  it supports
615	  following baudrate 9600, 19200, 38400, 57600 and 115200.
616
617config STM32_SERIAL
618	bool "STMicroelectronics STM32 SoCs on-chip UART"
619	depends on DM_SERIAL && (STM32F4 || STM32F7 || STM32H7 || ARCH_STM32MP)
620	help
621	  If you have a machine based on a STM32 F4, F7, H7 or MP1 SOC
622	  you can enable its onboard serial ports, say Y to this option.
623	  If unsure, say N.
624
625config ZYNQ_SERIAL
626	bool "Cadence (Xilinx Zynq) UART support"
627	depends on DM_SERIAL && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_ZYNQMP_R5)
628	help
629	  This driver supports the Cadence UART. It is found e.g. in Xilinx
630	  Zynq/ZynqMP.
631
632config MPC8XX_CONS
633	bool "Console driver for MPC8XX"
634	depends on MPC8xx
635	default y
636
637choice
638	prompt "Console port"
639	default 8xx_CONS_SMC1
640	depends on MPC8XX_CONS
641	help
642	  Depending on board, select one serial port
643	  (CONFIG_8xx_CONS_SMC1 or CONFIG_8xx_CONS_SMC2)
644
645config 8xx_CONS_SMC1
646	bool "SMC1"
647
648config 8xx_CONS_SMC2
649	bool "SMC2"
650
651endchoice
652
653config SYS_SMC_RXBUFLEN
654	int "Console Rx buffer length"
655	depends on MPC8XX_CONS
656	default 1
657	help
658	  With CONFIG_SYS_SMC_RXBUFLEN it is possible to define
659	  the maximum receive buffer length for the SMC.
660	  This option is actual only for 8xx possible.
661	  If using CONFIG_SYS_SMC_RXBUFLEN also CONFIG_SYS_MAXIDLE
662	  must be defined, to setup the maximum idle timeout for
663	  the SMC.
664
665config SYS_MAXIDLE
666	int "maximum idle timeout"
667	depends on MPC8XX_CONS
668	default 0
669
670config SYS_BRGCLK_PRESCALE
671	int "BRG Clock Prescale"
672	depends on MPC8XX_CONS
673	default 1
674
675config SYS_SDSR
676	hex "SDSR Value"
677	depends on MPC8XX_CONS
678	default 0x83
679
680config SYS_SDMR
681	hex "SDMR Value"
682	depends on MPC8XX_CONS
683	default 0
684
685endmenu
686