Merge tag 'u-boot-atmel-2021.07-a' of https://source.denx.de/u-boot/custodians/u...
[platform/kernel/u-boot.git] / common / Kconfig
1 source "common/Kconfig.boot"
2
3 menu "Console"
4
5 config 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
11 config 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
20 config 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
28 config 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
37 config 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
47 config DISABLE_CONSOLE
48         bool "Add functionality to disable console completely"
49         help
50                 Disable console (in & out).
51
52 config 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
57 config 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
76 config SPL_LOGLEVEL
77         int
78         default LOGLEVEL
79
80 config TPL_LOGLEVEL
81         int
82         default LOGLEVEL
83
84 config 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
96 config 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
105 config 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
117 config 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
125 config 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
138 config 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
153 config 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
169 config 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
180 config 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
190 config 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
199 config 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
208 config 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
216 config 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
225 config 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
234 config 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
242 endmenu
243
244 menu "Logging"
245
246 config 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
255 if LOG
256
257 config 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
277 config 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
298 config 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
307 config 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
313 config 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
319 config 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
325 config 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
332 config 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
341 if SPL_LOG
342
343 config 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
364 config 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
373 endif
374
375 config 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
384 if TPL_LOG
385
386 config 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
407 config 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
416 endif
417
418 config 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
430 config 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
440 endif
441
442 endmenu
443
444 menu "Init options"
445
446 config 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
454 config 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
462 config 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
470 config 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
477 menu "Start-up hooks"
478
479 config 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
487 config 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
495 config 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
504 config 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
511 config 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
521 config 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
530 config 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
537 config 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
547 endmenu
548
549 endmenu         # Init options
550
551 menu "Security support"
552
553 config 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
561 config 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
573 if AVB_VERIFY
574
575 config 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
582 config 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
589 endif # AVB_VERIFY
590
591 config SCP03
592         bool "Build SCP03 - Secure Channel Protocol O3 - controls"
593         depends on OPTEE || SANDBOX
594         depends on TEE
595         help
596           This option allows U-Boot to enable and or provision SCP03 on an OPTEE
597           controlled Secured Element.
598
599 config SPL_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
607 config TPL_HASH
608         bool # "Support hashing API (SHA1, SHA256, etc.)"
609         help
610           This provides a way to hash data in memory using various supported
611           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
612           and the algorithms it supports are defined in common/hash.c. See
613           also CMD_HASH for command-line access.
614
615 endmenu
616
617 menu "Update support"
618
619 config UPDATE_COMMON
620         bool
621         default n
622         select DFU_WRITE_ALT
623
624 config UPDATE_TFTP
625         bool "Auto-update using fitImage via TFTP"
626         depends on FIT
627         select UPDATE_COMMON
628         help
629           This option allows performing update of NOR with data in fitImage
630           sent via TFTP boot.
631
632 config UPDATE_TFTP_CNT_MAX
633         int "The number of connection retries during auto-update"
634         default 0
635         depends on UPDATE_TFTP
636
637 config UPDATE_TFTP_MSEC_MAX
638         int "Delay in mSec to wait for the TFTP server during auto-update"
639         default 100
640         depends on UPDATE_TFTP
641
642 config UPDATE_FIT
643         bool "Firmware update using fitImage"
644         depends on FIT
645         depends on DFU
646         select UPDATE_COMMON
647         help
648           This option allows performing update of DFU-capable storage with
649           data in fitImage.
650
651 config ANDROID_AB
652         bool "Android A/B updates"
653         default n
654         help
655           If enabled, adds support for the new Android A/B update model. This
656           allows the bootloader to select which slot to boot from based on the
657           information provided by userspace via the Android boot_ctrl HAL. This
658           allows a bootloader to try a new version of the system but roll back
659           to previous version if the new one didn't boot all the way.
660
661 endmenu
662
663 menu "Blob list"
664
665 config BLOBLIST
666         bool "Support for a bloblist"
667         help
668           This enables support for a bloblist in U-Boot, which can be passed
669           from TPL to SPL to U-Boot proper (and potentially to Linux). The
670           blob list supports multiple binary blobs of data, each with a tag,
671           so that different U-Boot components can store data which can survive
672           through to the next stage of the boot.
673
674 config SPL_BLOBLIST
675         bool "Support for a bloblist in SPL"
676         depends on BLOBLIST
677         default y if SPL
678         help
679           This enables a bloblist in SPL. If this is the first part of U-Boot
680           to run, then the bloblist is set up in SPL and passed to U-Boot
681           proper. If TPL also has a bloblist, then SPL uses the one from there.
682
683 config TPL_BLOBLIST
684         bool "Support for a bloblist in TPL"
685         depends on BLOBLIST
686         default y if TPL
687         help
688           This enables a bloblist in TPL. The bloblist is set up in TPL and
689           passed to SPL and U-Boot proper.
690
691 config BLOBLIST_SIZE
692         hex "Size of bloblist"
693         depends on BLOBLIST
694         default 0x400
695         help
696           Sets the size of the bloblist in bytes. This must include all
697           overhead (alignment, bloblist header, record header). The bloblist
698           is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
699           proper), and this sane bloblist is used for subsequent stages.
700
701 config BLOBLIST_ADDR
702         hex "Address of bloblist"
703         depends on BLOBLIST
704         default 0xe000 if SANDBOX
705         help
706           Sets the address of the bloblist, set up by the first part of U-Boot
707           which runs. Subsequent U-Boot stages typically use the same address.
708
709 config BLOBLIST_SIZE_RELOC
710         hex "Size of bloblist after relocation"
711         depends on BLOBLIST
712         default BLOBLIST_SIZE
713         help
714           Sets the size of the bloblist in bytes after relocation. Since U-Boot
715           has a lot more memory available then, it is possible to use a larger
716           size than the one set up by SPL. This bloblist is set up during the
717           relocation process.
718
719 endmenu
720
721 source "common/spl/Kconfig"
722
723 config IMAGE_SIGN_INFO
724         bool
725         select SHA1
726         select SHA256
727         help
728           Enable image_sign_info helper functions.
729
730 if IMAGE_SIGN_INFO
731
732 config SPL_IMAGE_SIGN_INFO
733         bool
734         select SHA1
735         select SHA256
736         help
737           Enable image_sign_info helper functions in SPL.
738
739 endif