1source "common/Kconfig.boot"
2
3menu "Console"
4
5config MENU
6	bool
7	help
8	  This is the library functionality to provide a text-based menu of
9	  choices for the user to make choices with.
10
11config CONSOLE_RECORD
12	bool "Console recording"
13	help
14	  This provides a way to record console output (and provide console
15	  input) through circular buffers. This is mostly useful for testing.
16	  Console output is recorded even when the console is silent.
17	  To enable console recording, call console_record_reset_enable()
18	  from your code.
19
20config CONSOLE_RECORD_INIT_F
21	bool "Enable console recording during pre-relocation init"
22	depends on CONSOLE_RECORD && SYS_MALLOC_F
23	default y
24	help
25	  This option enables console recording during pre-relocation init.
26	  CONFIG_SYS_MALLOC_F must be enabled to use this feature.
27
28config CONSOLE_RECORD_OUT_SIZE
29	hex "Output buffer size"
30	depends on CONSOLE_RECORD
31	default 0x400 if CONSOLE_RECORD
32	help
33	  Set the size of the console output buffer. When this fills up, no
34	  more data will be recorded until some is removed. The buffer is
35	  allocated immediately after the malloc() region is ready.
36
37config CONSOLE_RECORD_IN_SIZE
38	hex "Input buffer size"
39	depends on CONSOLE_RECORD
40	default 0x100 if CONSOLE_RECORD
41	help
42	  Set the size of the console input buffer. When this contains data,
43	  tstc() and getc() will use this in preference to real device input.
44	  The buffer is allocated immediately after the malloc() region is
45	  ready.
46
47config DISABLE_CONSOLE
48	bool "Add functionality to disable console completely"
49	help
50		Disable console (in & out).
51
52config IDENT_STRING
53	string "Board specific string to be added to uboot version string"
54	help
55	  This options adds the board specific name to u-boot version.
56
57config LOGLEVEL
58	int "loglevel"
59	default 4
60	range 0 10
61	help
62	  All Messages with a loglevel smaller than the console loglevel will
63	  be compiled in. The loglevels are defined as follows:
64
65	    0 - emergency
66	    1 - alert
67	    2 - critical
68	    3 - error
69	    4 - warning
70	    5 - note
71	    6 - info
72	    7 - debug
73	    8 - debug content
74	    9 - debug hardware I/O
75
76config SPL_LOGLEVEL
77	int
78	default LOGLEVEL
79
80config TPL_LOGLEVEL
81	int
82	default LOGLEVEL
83
84config SILENT_CONSOLE
85	bool "Support a silent console"
86	help
87	  This option allows the console to be silenced, meaning that no
88	  output will appear on the console devices. This is controlled by
89	  setting the environment variable 'silent' to a non-empty value.
90	  Note this also silences the console when booting Linux.
91
92	  When the console is set up, the variable is checked, and the
93	  GD_FLG_SILENT flag is set. Changing the environment variable later
94	  will update the flag.
95
96config SILENT_U_BOOT_ONLY
97	bool "Only silence the U-Boot console"
98	depends on SILENT_CONSOLE
99	help
100	  Normally when the U-Boot console is silenced, Linux's console is
101	  also silenced (assuming the board boots into Linux). This option
102	  allows the linux console to operate normally, even if U-Boot's
103	  is silenced.
104
105config SILENT_CONSOLE_UPDATE_ON_SET
106	bool "Changes to the 'silent' environment variable update immediately"
107	depends on SILENT_CONSOLE
108	default y if SILENT_CONSOLE
109	help
110	  When the 'silent' environment variable is changed, update the
111	  console silence flag immediately. This allows 'setenv' to be used
112	  to silence or un-silence the console.
113
114	  The effect is that any change to the variable will affect the
115	  GD_FLG_SILENT flag.
116
117config SILENT_CONSOLE_UPDATE_ON_RELOC
118	bool "Allow flags to take effect on relocation"
119	depends on SILENT_CONSOLE
120	help
121	  In some cases the environment is not available until relocation
122	  (e.g. NAND). This option makes the value of the 'silent'
123	  environment variable take effect at relocation.
124
125config PRE_CONSOLE_BUFFER
126	bool "Buffer characters before the console is available"
127	help
128	  Prior to the console being initialised (i.e. serial UART
129	  initialised etc) all console output is silently discarded.
130	  Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
131	  buffer any console messages prior to the console being
132	  initialised to a buffer. The buffer is a circular buffer, so
133	  if it overflows, earlier output is discarded.
134
135	  Note that this is not currently supported in SPL. It would be
136	  useful to be able to share the pre-console buffer with SPL.
137
138config PRE_CON_BUF_SZ
139	int "Sets the size of the pre-console buffer"
140	depends on PRE_CONSOLE_BUFFER
141	default 4096
142	help
143	  The size of the pre-console buffer affects how much console output
144	  can be held before it overflows and starts discarding earlier
145	  output. Normally there is very little output at this early stage,
146	  unless debugging is enabled, so allow enough for ~10 lines of
147	  text.
148
149	  This is a useful feature if you are using a video console and
150	  want to see the full boot output on the console. Without this
151	  option only the post-relocation output will be displayed.
152
153config PRE_CON_BUF_ADDR
154	hex "Address of the pre-console buffer"
155	depends on PRE_CONSOLE_BUFFER
156	default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I
157	default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I
158	default 0x0f000000 if ROCKCHIP_RK3288
159	default 0x0f200000 if ROCKCHIP_RK3399
160	help
161	  This sets the start address of the pre-console buffer. This must
162	  be in available memory and is accessed before relocation and
163	  possibly before DRAM is set up. Therefore choose an address
164	  carefully.
165
166	  We should consider removing this option and allocating the memory
167	  in board_init_f_init_reserve() instead.
168
169config CONSOLE_MUX
170	bool "Enable console multiplexing"
171	default y if DM_VIDEO || VIDEO || LCD
172	help
173	  This allows multiple devices to be used for each console 'file'.
174	  For example, stdout can be set to go to serial and video.
175	  Similarly, stdin can be set to come from serial and keyboard.
176	  Input can be provided from either source. Console multiplexing
177	  adds a small amount of size to U-Boot.  Changes to the environment
178	  variables stdout, stdin and stderr will take effect immediately.
179
180config SYS_CONSOLE_IS_IN_ENV
181	bool "Select console devices from the environment"
182	default y if CONSOLE_MUX
183	help
184	  This allows multiple input/output devices to be set at boot time.
185	  For example, if stdout is set to "serial,video" then output will
186	  be sent to both the serial and video devices on boot. The
187	  environment variables can be updated after boot to change the
188	  input/output devices.
189
190config SYS_CONSOLE_OVERWRITE_ROUTINE
191	bool "Allow board control over console overwriting"
192	help
193	  If this is enabled, and the board-specific function
194	  overwrite_console() returns 1, the stdin, stderr and stdout are
195	  switched to the serial port, else the settings in the environment
196	  are used. If this is not enabled, the console will not be switched
197	  to serial.
198
199config SYS_CONSOLE_ENV_OVERWRITE
200	bool "Update environment variables during console init"
201	help
202	  The console environment variables (stdout, stdin, stderr) can be
203	  used to determine the correct console devices on start-up. This
204	  option writes the console devices to these variables on console
205	  start-up (after relocation). This causes the environment to be
206	  updated to match the console devices actually chosen.
207
208config SYS_CONSOLE_INFO_QUIET
209	bool "Don't display the console devices on boot"
210	help
211	  Normally U-Boot displays the current settings for stdout, stdin
212	  and stderr on boot when the post-relocation console is set up.
213	  Enable this option to suppress this output. It can be obtained by
214	  calling stdio_print_current_devices() from board code.
215
216config SYS_STDIO_DEREGISTER
217	bool "Allow deregistering stdio devices"
218	default y if USB_KEYBOARD
219	help
220	  Generally there is no need to deregister stdio devices since they
221	  are never deactivated. But if a stdio device is used which can be
222	  removed (for example a USB keyboard) then this option can be
223	  enabled to ensure this is handled correctly.
224
225config SPL_SYS_STDIO_DEREGISTER
226	bool "Allow deregistering stdio devices in SPL"
227	help
228	  Generally there is no need to deregister stdio devices since they
229	  are never deactivated. But if a stdio device is used which can be
230	  removed (for example a USB keyboard) then this option can be
231	  enabled to ensure this is handled correctly. This is very rarely
232	  needed in SPL.
233
234config SYS_DEVICE_NULLDEV
235	bool "Enable a null device for stdio"
236	default y if SPLASH_SCREEN || SYS_STDIO_DEREGISTER
237	help
238	  Enable creation of a "nulldev" stdio device. This allows silent
239	  operation of the console by setting stdout to "nulldev". Enable
240	  this to use a serial console under board control.
241
242endmenu
243
244menu "Logging"
245
246config LOG
247	bool "Enable logging support"
248	depends on DM
249	help
250	  This enables support for logging of status and debug messages. These
251	  can be displayed on the console, recorded in a memory buffer, or
252	  discarded if not needed. Logging supports various categories and
253	  levels of severity.
254
255if LOG
256
257config LOG_MAX_LEVEL
258	int "Maximum log level to record"
259	default 6
260	range 0 9
261	help
262	  This selects the maximum log level that will be recorded. Any value
263	  higher than this will be ignored. If possible log statements below
264	  this level will be discarded at build time. Levels:
265
266	    0 - emergency
267	    1 - alert
268	    2 - critical
269	    3 - error
270	    4 - warning
271	    5 - note
272	    6 - info
273	    7 - debug
274	    8 - debug content
275	    9 - debug hardware I/O
276
277config LOG_DEFAULT_LEVEL
278	int "Default logging level to display"
279	default LOG_MAX_LEVEL
280	range 0 LOG_MAX_LEVEL
281	help
282	  This is the default logging level set when U-Boot starts. It can
283	  be adjusted later using the 'log level' command. Note that setting
284	  this to a value above LOG_MAX_LEVEL will be ineffective, since the
285	  higher levels are not compiled in to U-Boot.
286
287	    0 - emergency
288	    1 - alert
289	    2 - critical
290	    3 - error
291	    4 - warning
292	    5 - note
293	    6 - info
294	    7 - debug
295	    8 - debug content
296	    9 - debug hardware I/O
297
298config LOG_CONSOLE
299	bool "Allow log output to the console"
300	default y
301	help
302	  Enables a log driver which writes log records to the console.
303	  Generally the console is the serial port or LCD display. Only the
304	  log message is shown - other details like level, category, file and
305	  line number are omitted.
306
307config LOGF_FILE
308	bool "Show source file name in log messages by default"
309	help
310	  Show the source file name in log messages by default. This value
311	  can be overridden using the 'log format' command.
312
313config LOGF_LINE
314	bool "Show source line number in log messages by default"
315	help
316	  Show the source line number in log messages by default. This value
317	  can be overridden using the 'log format' command.
318
319config LOGF_FUNC
320	bool "Show function name in log messages by default"
321	help
322	  Show the function name in log messages by default. This value can
323	  be overridden using the 'log format' command.
324
325config LOG_SYSLOG
326	bool "Log output to syslog server"
327	depends on NET
328	help
329	  Enables a log driver which broadcasts log records via UDP port 514
330	  to syslog servers.
331
332config SPL_LOG
333	bool "Enable logging support in SPL"
334	depends on LOG
335	help
336	  This enables support for logging of status and debug messages. These
337	  can be displayed on the console, recorded in a memory buffer, or
338	  discarded if not needed. Logging supports various categories and
339	  levels of severity.
340
341if SPL_LOG
342
343config SPL_LOG_MAX_LEVEL
344	int "Maximum log level to record in SPL"
345	depends on SPL_LOG
346	default 3
347	range 0 9
348	help
349	  This selects the maximum log level that will be recorded. Any value
350	  higher than this will be ignored. If possible log statements below
351	  this level will be discarded at build time. Levels:
352
353	    0 - emergency
354	    1 - alert
355	    2 - critical
356	    3 - error
357	    4 - warning
358	    5 - note
359	    6 - info
360	    7 - debug
361	    8 - debug content
362	    9 - debug hardware I/O
363
364config SPL_LOG_CONSOLE
365	bool "Allow log output to the console in SPL"
366	default y
367	help
368	  Enables a log driver which writes log records to the console.
369	  Generally the console is the serial port or LCD display. Only the
370	  log message is shown - other details like level, category, file and
371	  line number are omitted.
372
373endif
374
375config TPL_LOG
376	bool "Enable logging support in TPL"
377	depends on LOG
378	help
379	  This enables support for logging of status and debug messages. These
380	  can be displayed on the console, recorded in a memory buffer, or
381	  discarded if not needed. Logging supports various categories and
382	  levels of severity.
383
384if TPL_LOG
385
386config TPL_LOG_MAX_LEVEL
387	int "Maximum log level to record in TPL"
388	depends on TPL_LOG
389	default 3
390	range 0 9
391	help
392	  This selects the maximum log level that will be recorded. Any value
393	  higher than this will be ignored. If possible log statements below
394	  this level will be discarded at build time. Levels:
395
396	    0 - emergency
397	    1 - alert
398	    2 - critical
399	    3 - error
400	    4 - warning
401	    5 - note
402	    6 - info
403	    7 - debug
404	    8 - debug content
405	    9 - debug hardware I/O
406
407config TPL_LOG_CONSOLE
408	bool "Allow log output to the console in TPL"
409	default y
410	help
411	  Enables a log driver which writes log records to the console.
412	  Generally the console is the serial port or LCD display. Only the
413	  log message is shown - other details like level, category, file and
414	  line number are omitted.
415
416endif
417
418config LOG_ERROR_RETURN
419	bool "Log all functions which return an error"
420	help
421	  When an error is returned in U-Boot it is sometimes difficult to
422	  figure out the root cause. For example, reading from SPI flash may
423	  fail due to a problem in the SPI controller or due to the flash part
424	  not returning the expected information. This option changes
425	  log_ret() to log any errors it sees. With this option disabled,
426	  log_ret() is a nop.
427
428	  You can add log_ret() to all functions which return an error code.
429
430config LOG_TEST
431	bool "Provide a test for logging"
432	depends on UNIT_TEST
433	default y if SANDBOX
434	help
435	  This enables a 'log test' command to test logging. It is normally
436	  executed from a pytest and simply outputs logging information
437	  in various different ways to test that the logging system works
438	  correctly with various settings.
439
440endif
441
442endmenu
443
444menu "Init options"
445
446config BOARD_TYPES
447	bool "Call get_board_type() to get and display the board type"
448	help
449	  If this option is enabled, checkboard() will call get_board_type()
450	  to get a string containing the board type and this will be
451	  displayed immediately after the model is shown on the console
452	  early in boot.
453
454config DISPLAY_CPUINFO
455	bool "Display information about the CPU during start up"
456	default y if ARC|| ARM || NIOS2 || X86 || XTENSA || M68K
457	help
458	  Display information about the CPU that U-Boot is running on
459	  when U-Boot starts up. The function print_cpuinfo() is called
460	  to do this.
461
462config DISPLAY_BOARDINFO
463	bool "Display information about the board during early start up"
464	default y if ARC || ARM || M68K || MIPS || PPC || SANDBOX || XTENSA
465	help
466	  Display information about the board that U-Boot is running on
467	  when U-Boot starts up. The board function checkboard() is called
468	  to do this.
469
470config DISPLAY_BOARDINFO_LATE
471	bool "Display information about the board during late start up"
472	help
473	  Display information about the board that U-Boot is running on after
474	  the relocation phase. The board function checkboard() is called to do
475	  this.
476
477menu "Start-up hooks"
478
479config ARCH_EARLY_INIT_R
480	bool "Call arch-specific init soon after relocation"
481	help
482	  With this option U-Boot will call arch_early_init_r() soon after
483	  relocation. Driver model is running by this point, and the cache
484	  is on. Note that board_early_init_r() is called first, if
485	  enabled. This can be used to set up architecture-specific devices.
486
487config ARCH_MISC_INIT
488	bool "Call arch-specific init after relocation, when console is ready"
489	help
490	  With this option U-Boot will call arch_misc_init() after
491	  relocation to allow miscellaneous arch-dependent initialisation
492	  to be performed. This function should be defined by the board
493	  and will be called after the console is set up, after relocation.
494
495config BOARD_EARLY_INIT_F
496	bool "Call board-specific init before relocation"
497	help
498	  Some boards need to perform initialisation as soon as possible
499	  after boot. With this option, U-Boot calls board_early_init_f()
500	  after driver model is ready in the pre-relocation init sequence.
501	  Note that the normal serial console is not yet set up, but the
502	  debug UART will be available if enabled.
503
504config BOARD_EARLY_INIT_R
505	bool "Call board-specific init after relocation"
506	help
507	  Some boards need to perform initialisation as directly after
508	  relocation. With this option, U-Boot calls board_early_init_r()
509	  in the post-relocation init sequence.
510
511config BOARD_LATE_INIT
512	bool "Execute Board late init"
513	help
514	  Sometimes board require some initialization code that might
515	  require once the actual init done, example saving board specific env,
516	  boot-modes etc. which eventually done at late.
517
518	  So this config enable the late init code with the help of board_late_init
519	  function which should defined on respective boards.
520
521config LAST_STAGE_INIT
522	bool "Call board-specific as last setup step"
523	help
524	  Some boards need to perform initialisation immediately before control
525	  is passed to the command-line interpreter (e.g. for initializations
526	  that depend on later phases in the init sequence). With this option,
527	  U-Boot calls last_stage_init() before the command-line interpreter is
528	  started.
529
530config MISC_INIT_R
531	bool "Execute Misc Init"
532	default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx
533	default y if ARCH_OMAP2PLUS && !AM33XX
534	help
535	  Enabling this option calls 'misc_init_r' function
536
537config PCI_INIT_R
538	bool "Enumerate PCI buses during init"
539	depends on PCI
540	default y if !DM_PCI
541	help
542	  With this option U-Boot will call pci_init() soon after relocation,
543	  which will enumerate PCI buses. This is needed, for instance, in the
544	  case of DM PCI-based Ethernet devices, which will not be detected
545	  without having the enumeration performed earlier.
546
547endmenu
548
549endmenu		# Init options
550
551menu "Security support"
552
553config HASH
554	bool # "Support hashing API (SHA1, SHA256, etc.)"
555	help
556	  This provides a way to hash data in memory using various supported
557	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
558	  and the algorithms it supports are defined in common/hash.c. See
559	  also CMD_HASH for command-line access.
560
561config AVB_VERIFY
562	bool "Build Android Verified Boot operations"
563	depends on LIBAVB
564	depends on MMC
565	depends on PARTITION_UUIDS
566	help
567	  This option enables compilation of bootloader-dependent operations,
568	  used by Android Verified Boot 2.0 library (libavb). Includes:
569	    * Helpers to process strings in order to build OS bootargs.
570	    * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c.
571	    * Helpers to alloc/init/free avb ops.
572
573if AVB_VERIFY
574
575config AVB_BUF_ADDR
576	hex "Define AVB buffer address"
577	default FASTBOOT_BUF_ADDR
578	help
579	  AVB requires a buffer for memory transactions. This variable defines the
580	  buffer address.
581
582config AVB_BUF_SIZE
583	hex "Define AVB buffer SIZE"
584	default FASTBOOT_BUF_SIZE
585	help
586	  AVB requires a buffer for memory transactions. This variable defines the
587	  buffer size.
588
589endif # AVB_VERIFY
590
591config SPL_HASH
592	bool # "Support hashing API (SHA1, SHA256, etc.)"
593	help
594	  This provides a way to hash data in memory using various supported
595	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
596	  and the algorithms it supports are defined in common/hash.c. See
597	  also CMD_HASH for command-line access.
598
599config TPL_HASH
600	bool # "Support hashing API (SHA1, SHA256, etc.)"
601	help
602	  This provides a way to hash data in memory using various supported
603	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
604	  and the algorithms it supports are defined in common/hash.c. See
605	  also CMD_HASH for command-line access.
606
607endmenu
608
609menu "Update support"
610
611config UPDATE_COMMON
612	bool
613	default n
614	select DFU_WRITE_ALT
615
616config UPDATE_TFTP
617	bool "Auto-update using fitImage via TFTP"
618	depends on FIT
619	select UPDATE_COMMON
620	help
621	  This option allows performing update of NOR with data in fitImage
622	  sent via TFTP boot.
623
624config UPDATE_TFTP_CNT_MAX
625	int "The number of connection retries during auto-update"
626	default 0
627	depends on UPDATE_TFTP
628
629config UPDATE_TFTP_MSEC_MAX
630	int "Delay in mSec to wait for the TFTP server during auto-update"
631	default 100
632	depends on UPDATE_TFTP
633
634config UPDATE_FIT
635	bool "Firmware update using fitImage"
636	depends on FIT
637	depends on DFU
638	select UPDATE_COMMON
639	help
640	  This option allows performing update of DFU-capable storage with
641	  data in fitImage.
642
643config ANDROID_AB
644	bool "Android A/B updates"
645	default n
646	help
647	  If enabled, adds support for the new Android A/B update model. This
648	  allows the bootloader to select which slot to boot from based on the
649	  information provided by userspace via the Android boot_ctrl HAL. This
650	  allows a bootloader to try a new version of the system but roll back
651	  to previous version if the new one didn't boot all the way.
652
653endmenu
654
655menu "Blob list"
656
657config BLOBLIST
658	bool "Support for a bloblist"
659	help
660	  This enables support for a bloblist in U-Boot, which can be passed
661	  from TPL to SPL to U-Boot proper (and potentially to Linux). The
662	  blob list supports multiple binary blobs of data, each with a tag,
663	  so that different U-Boot components can store data which can survive
664	  through to the next stage of the boot.
665
666config SPL_BLOBLIST
667	bool "Support for a bloblist in SPL"
668	depends on BLOBLIST
669	default y if SPL
670	help
671	  This enables a bloblist in SPL. If this is the first part of U-Boot
672	  to run, then the bloblist is set up in SPL and passed to U-Boot
673	  proper. If TPL also has a bloblist, then SPL uses the one from there.
674
675config TPL_BLOBLIST
676	bool "Support for a bloblist in TPL"
677	depends on BLOBLIST
678	default y if TPL
679	help
680	  This enables a bloblist in TPL. The bloblist is set up in TPL and
681	  passed to SPL and U-Boot proper.
682
683config BLOBLIST_SIZE
684	hex "Size of bloblist"
685	depends on BLOBLIST
686	default 0x400
687	help
688	  Sets the size of the bloblist in bytes. This must include all
689	  overhead (alignment, bloblist header, record header). The bloblist
690	  is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
691	  proper), and this sane bloblist is used for subsequent stages.
692
693config BLOBLIST_ADDR
694	hex "Address of bloblist"
695	depends on BLOBLIST
696	default 0xe000 if SANDBOX
697	help
698	  Sets the address of the bloblist, set up by the first part of U-Boot
699	  which runs. Subsequent U-Boot stages typically use the same address.
700
701config BLOBLIST_SIZE_RELOC
702	hex "Size of bloblist after relocation"
703	depends on BLOBLIST
704	default BLOBLIST_SIZE
705	help
706	  Sets the size of the bloblist in bytes after relocation. Since U-Boot
707	  has a lot more memory available then, it is possible to use a larger
708	  size than the one set up by SPL. This bloblist is set up during the
709	  relocation process.
710
711endmenu
712
713source "common/spl/Kconfig"
714
715config IMAGE_SIGN_INFO
716	bool
717	select SHA1
718	select SHA256
719	help
720	  Enable image_sign_info helper functions.
721
722if IMAGE_SIGN_INFO
723
724config SPL_IMAGE_SIGN_INFO
725	bool
726	select SHA1
727	select SHA256
728	help
729	  Enable image_sign_info helper functions in SPL.
730
731endif
732