Merge branch '2022-08-20-assorted-updates'
[platform/kernel/u-boot.git] / common / Kconfig
1 menu "Console"
2
3 config MENU
4         bool
5         help
6           This is the library functionality to provide a text-based menu of
7           choices for the user to make choices with.
8
9 config CONSOLE_RECORD
10         bool "Console recording"
11         help
12           This provides a way to record console output (and provide console
13           input) through circular buffers. This is mostly useful for testing.
14           Console output is recorded even when the console is silent.
15           To enable console recording, call console_record_reset_enable()
16           from your code.
17
18 config CONSOLE_RECORD_INIT_F
19         bool "Enable console recording during pre-relocation init"
20         depends on CONSOLE_RECORD && SYS_MALLOC_F
21         default y
22         help
23           This option enables console recording during pre-relocation init.
24           CONFIG_SYS_MALLOC_F must be enabled to use this feature.
25
26 config CONSOLE_RECORD_OUT_SIZE
27         hex "Output buffer size"
28         depends on CONSOLE_RECORD
29         default 0x400 if CONSOLE_RECORD
30         help
31           Set the size of the console output buffer. When this fills up, no
32           more data will be recorded until some is removed. The buffer is
33           allocated immediately after the malloc() region is ready.
34
35 config CONSOLE_RECORD_OUT_SIZE_F
36         hex "Output buffer size before relocation"
37         depends on CONSOLE_RECORD
38         default 0x400 if CONSOLE_RECORD
39         help
40           Set the size of the console output buffer before relocation. When
41           this fills up, no more data will be recorded until some is removed.
42           The buffer is allocated immediately after the early malloc() region is
43           ready.
44
45 config CONSOLE_RECORD_IN_SIZE
46         hex "Input buffer size"
47         depends on CONSOLE_RECORD
48         default 0x100 if CONSOLE_RECORD
49         help
50           Set the size of the console input buffer. When this contains data,
51           tstc() and getc() will use this in preference to real device input.
52           The buffer is allocated immediately after the malloc() region is
53           ready.
54
55 config DISABLE_CONSOLE
56         bool "Add functionality to disable console completely"
57         help
58                 Disable console (in & out).
59
60 config IDENT_STRING
61         string "Board specific string to be added to uboot version string"
62         help
63           This options adds the board specific name to u-boot version.
64
65 config LOGLEVEL
66         int "loglevel"
67         default 4
68         range 0 10
69         help
70           All Messages with a loglevel smaller than the console loglevel will
71           be compiled in. The loglevels are defined as follows:
72
73             0 - emergency
74             1 - alert
75             2 - critical
76             3 - error
77             4 - warning
78             5 - note
79             6 - info
80             7 - debug
81             8 - debug content
82             9 - debug hardware I/O
83
84 config SPL_LOGLEVEL
85         int
86         depends on SPL
87         default LOGLEVEL
88
89 config TPL_LOGLEVEL
90         int
91         depends on TPL
92         default LOGLEVEL
93
94 config VPL_LOGLEVEL
95         int "loglevel for VPL"
96         depends on VPL
97         default LOGLEVEL
98         help
99           All Messages with a loglevel smaller than the console loglevel will
100           be compiled in to VPL. See LOGLEVEL for a list of available log
101           levels. Setting this to a value above 4 may increase the code size
102           significantly.
103
104 config SILENT_CONSOLE
105         bool "Support a silent console"
106         help
107           This option allows the console to be silenced, meaning that no
108           output will appear on the console devices. This is controlled by
109           setting the environment variable 'silent' to a non-empty value.
110           Note this also silences the console when booting Linux.
111
112           When the console is set up, the variable is checked, and the
113           GD_FLG_SILENT flag is set. Changing the environment variable later
114           will update the flag.
115
116 config SILENT_U_BOOT_ONLY
117         bool "Only silence the U-Boot console"
118         depends on SILENT_CONSOLE
119         help
120           Normally when the U-Boot console is silenced, Linux's console is
121           also silenced (assuming the board boots into Linux). This option
122           allows the linux console to operate normally, even if U-Boot's
123           is silenced.
124
125 config SILENT_CONSOLE_UPDATE_ON_SET
126         bool "Changes to the 'silent' environment variable update immediately"
127         depends on SILENT_CONSOLE
128         default y if SILENT_CONSOLE
129         help
130           When the 'silent' environment variable is changed, update the
131           console silence flag immediately. This allows 'setenv' to be used
132           to silence or un-silence the console.
133
134           The effect is that any change to the variable will affect the
135           GD_FLG_SILENT flag.
136
137 config SILENT_CONSOLE_UPDATE_ON_RELOC
138         bool "Allow flags to take effect on relocation"
139         depends on SILENT_CONSOLE
140         help
141           In some cases the environment is not available until relocation
142           (e.g. NAND). This option makes the value of the 'silent'
143           environment variable take effect at relocation.
144
145 config PRE_CONSOLE_BUFFER
146         bool "Buffer characters before the console is available"
147         help
148           Prior to the console being initialised (i.e. serial UART
149           initialised etc) all console output is silently discarded.
150           Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
151           buffer any console messages prior to the console being
152           initialised to a buffer. The buffer is a circular buffer, so
153           if it overflows, earlier output is discarded.
154
155           Note that this is not currently supported in SPL. It would be
156           useful to be able to share the pre-console buffer with SPL.
157
158 config PRE_CON_BUF_SZ
159         int "Sets the size of the pre-console buffer"
160         depends on PRE_CONSOLE_BUFFER
161         default 4096
162         help
163           The size of the pre-console buffer affects how much console output
164           can be held before it overflows and starts discarding earlier
165           output. Normally there is very little output at this early stage,
166           unless debugging is enabled, so allow enough for ~10 lines of
167           text.
168
169           This is a useful feature if you are using a video console and
170           want to see the full boot output on the console. Without this
171           option only the post-relocation output will be displayed.
172
173 config PRE_CON_BUF_ADDR
174         hex "Address of the pre-console buffer"
175         depends on PRE_CONSOLE_BUFFER
176         default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I
177         default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I
178         default 0x0f000000 if ROCKCHIP_RK3288
179         default 0x0f200000 if ROCKCHIP_RK3399
180         help
181           This sets the start address of the pre-console buffer. This must
182           be in available memory and is accessed before relocation and
183           possibly before DRAM is set up. Therefore choose an address
184           carefully.
185
186           We should consider removing this option and allocating the memory
187           in board_init_f_init_reserve() instead.
188
189 config CONSOLE_MUX
190         bool "Enable console multiplexing"
191         default y if DM_VIDEO || VIDEO || LCD
192         help
193           This allows multiple devices to be used for each console 'file'.
194           For example, stdout can be set to go to serial and video.
195           Similarly, stdin can be set to come from serial and keyboard.
196           Input can be provided from either source. Console multiplexing
197           adds a small amount of size to U-Boot.  Changes to the environment
198           variables stdout, stdin and stderr will take effect immediately.
199
200 config SYS_CONSOLE_IS_IN_ENV
201         bool "Select console devices from the environment"
202         default y if CONSOLE_MUX
203         help
204           This allows multiple input/output devices to be set at boot time.
205           For example, if stdout is set to "serial,vidconsole" then output
206           will be sent to both the serial and video devices on boot. The
207           environment variables can be updated after boot to change the
208           input/output devices.
209
210 config SYS_CONSOLE_OVERWRITE_ROUTINE
211         bool "Allow board control over console overwriting"
212         help
213           If this is enabled, and the board-specific function
214           overwrite_console() returns 1, the stdin, stderr and stdout are
215           switched to the serial port, else the settings in the environment
216           are used. If this is not enabled, the console will not be switched
217           to serial.
218
219 config SYS_CONSOLE_ENV_OVERWRITE
220         bool "Update environment variables during console init"
221         help
222           The console environment variables (stdout, stdin, stderr) can be
223           used to determine the correct console devices on start-up. This
224           option writes the console devices to these variables on console
225           start-up (after relocation). This causes the environment to be
226           updated to match the console devices actually chosen.
227
228 config SYS_CONSOLE_INFO_QUIET
229         bool "Don't display the console devices on boot"
230         help
231           Normally U-Boot displays the current settings for stdout, stdin
232           and stderr on boot when the post-relocation console is set up.
233           Enable this option to suppress this output. It can be obtained by
234           calling stdio_print_current_devices() from board code.
235
236 config SYS_STDIO_DEREGISTER
237         bool "Allow deregistering stdio devices"
238         default y if USB_KEYBOARD
239         help
240           Generally there is no need to deregister stdio devices since they
241           are never deactivated. But if a stdio device is used which can be
242           removed (for example a USB keyboard) then this option can be
243           enabled to ensure this is handled correctly.
244
245 config SPL_SYS_STDIO_DEREGISTER
246         bool "Allow deregistering stdio devices in SPL"
247         help
248           Generally there is no need to deregister stdio devices since they
249           are never deactivated. But if a stdio device is used which can be
250           removed (for example a USB keyboard) then this option can be
251           enabled to ensure this is handled correctly. This is very rarely
252           needed in SPL.
253
254 config SYS_DEVICE_NULLDEV
255         bool "Enable a null device for stdio"
256         default y if SPLASH_SCREEN || SYS_STDIO_DEREGISTER
257         help
258           Enable creation of a "nulldev" stdio device. This allows silent
259           operation of the console by setting stdout to "nulldev". Enable
260           this to use a serial console under board control.
261
262 endmenu
263
264 menu "Logging"
265
266 config LOG
267         bool "Enable logging support"
268         depends on DM
269         help
270           This enables support for logging of status and debug messages. These
271           can be displayed on the console, recorded in a memory buffer, or
272           discarded if not needed. Logging supports various categories and
273           levels of severity.
274
275 if LOG
276
277 config LOG_MAX_LEVEL
278         int "Maximum log level to record"
279         default 6
280         range 0 9
281         help
282           This selects the maximum log level that will be recorded. Any value
283           higher than this will be ignored. If possible log statements below
284           this level will be discarded at build time. Levels:
285
286             0 - emergency
287             1 - alert
288             2 - critical
289             3 - error
290             4 - warning
291             5 - note
292             6 - info
293             7 - debug
294             8 - debug content
295             9 - debug hardware I/O
296
297 config LOG_DEFAULT_LEVEL
298         int "Default logging level to display"
299         default LOG_MAX_LEVEL
300         range 0 LOG_MAX_LEVEL
301         help
302           This is the default logging level set when U-Boot starts. It can
303           be adjusted later using the 'log level' command. Note that setting
304           this to a value above LOG_MAX_LEVEL will be ineffective, since the
305           higher levels are not compiled in to U-Boot.
306
307             0 - emergency
308             1 - alert
309             2 - critical
310             3 - error
311             4 - warning
312             5 - note
313             6 - info
314             7 - debug
315             8 - debug content
316             9 - debug hardware I/O
317
318 config LOG_CONSOLE
319         bool "Allow log output to the console"
320         default y
321         help
322           Enables a log driver which writes log records to the console.
323           Generally the console is the serial port or LCD display. Only the
324           log message is shown - other details like level, category, file and
325           line number are omitted.
326
327 config LOGF_FILE
328         bool "Show source file name in log messages by default"
329         help
330           Show the source file name in log messages by default. This value
331           can be overridden using the 'log format' command.
332
333 config LOGF_LINE
334         bool "Show source line number in log messages by default"
335         help
336           Show the source line number in log messages by default. This value
337           can be overridden using the 'log format' command.
338
339 config LOGF_FUNC
340         bool "Show function name in log messages by default"
341         help
342           Show the function name in log messages by default. This value can
343           be overridden using the 'log format' command.
344
345 config LOGF_FUNC_PAD
346         int "Number of characters to use for function"
347         default 20
348         help
349           Sets the field width to use when showing the function. Set this to
350           a larger value if you have lots of long function names, and want
351           things to line up.
352
353 config LOG_SYSLOG
354         bool "Log output to syslog server"
355         depends on NET
356         help
357           Enables a log driver which broadcasts log records via UDP port 514
358           to syslog servers.
359
360 config SPL_LOG
361         bool "Enable logging support in SPL"
362         depends on LOG && SPL
363         help
364           This enables support for logging of status and debug messages. These
365           can be displayed on the console, recorded in a memory buffer, or
366           discarded if not needed. Logging supports various categories and
367           levels of severity.
368
369 if SPL_LOG
370
371 config SPL_LOG_MAX_LEVEL
372         int "Maximum log level to record in SPL"
373         depends on SPL_LOG
374         default 3
375         range 0 9
376         help
377           This selects the maximum log level that will be recorded. Any value
378           higher than this will be ignored. If possible log statements below
379           this level will be discarded at build time. Levels:
380
381             0 - emergency
382             1 - alert
383             2 - critical
384             3 - error
385             4 - warning
386             5 - note
387             6 - info
388             7 - debug
389             8 - debug content
390             9 - debug hardware I/O
391
392 config SPL_LOG_CONSOLE
393         bool "Allow log output to the console in SPL"
394         default y
395         help
396           Enables a log driver which writes log records to the console.
397           Generally the console is the serial port or LCD display. Only the
398           log message is shown - other details like level, category, file and
399           line number are omitted.
400
401 endif
402
403 config TPL_LOG
404         bool "Enable logging support in TPL"
405         depends on LOG && TPL
406         help
407           This enables support for logging of status and debug messages. These
408           can be displayed on the console, recorded in a memory buffer, or
409           discarded if not needed. Logging supports various categories and
410           levels of severity.
411
412 if TPL_LOG
413
414 config TPL_LOG_MAX_LEVEL
415         int "Maximum log level to record in TPL"
416         depends on TPL_LOG
417         default 3
418         range 0 9
419         help
420           This selects the maximum log level that will be recorded. Any value
421           higher than this will be ignored. If possible log statements below
422           this level will be discarded at build time. Levels:
423
424             0 - emergency
425             1 - alert
426             2 - critical
427             3 - error
428             4 - warning
429             5 - note
430             6 - info
431             7 - debug
432             8 - debug content
433             9 - debug hardware I/O
434
435 config TPL_LOG_CONSOLE
436         bool "Allow log output to the console in TPL"
437         default y
438         help
439           Enables a log driver which writes log records to the console.
440           Generally the console is the serial port or LCD display. Only the
441           log message is shown - other details like level, category, file and
442           line number are omitted.
443
444 endif
445
446 config VPL_LOG
447         bool "Enable logging support in VPL"
448         depends on LOG && VPL
449         help
450           This enables support for logging of status and debug messages. These
451           can be displayed on the console, recorded in a memory buffer, or
452           discarded if not needed. Logging supports various categories and
453           levels of severity.
454
455 if VPL_LOG
456
457 config VPL_LOG_MAX_LEVEL
458         int "Maximum log level to record in VPL"
459         default 3
460         help
461           This selects the maximum log level that will be recorded. Any value
462           higher than this will be ignored. If possible log statements below
463           this level will be discarded at build time. Levels:
464
465             0 - emergency
466             1 - alert
467             2 - critical
468             3 - error
469             4 - warning
470             5 - note
471             6 - info
472             7 - debug
473             8 - debug content
474             9 - debug hardware I/O
475
476 config VPL_LOG_CONSOLE
477         bool "Allow log output to the console in VPL"
478         default y
479         help
480           Enables a log driver which writes log records to the console.
481           Generally the console is the serial port or LCD display. Only the
482           log message is shown - other details like level, category, file and
483           line number are omitted.
484
485 endif
486
487 config LOG_ERROR_RETURN
488         bool "Log all functions which return an error"
489         help
490           When an error is returned in U-Boot it is sometimes difficult to
491           figure out the root cause. For example, reading from SPI flash may
492           fail due to a problem in the SPI controller or due to the flash part
493           not returning the expected information. This option changes
494           log_ret() to log any errors it sees. With this option disabled,
495           log_ret() is a nop.
496
497           You can add log_ret() to all functions which return an error code.
498
499 config LOG_TEST
500         bool "Provide a test for logging"
501         depends on UNIT_TEST
502         default y if SANDBOX
503         help
504           This enables a 'log test' command to test logging. It is normally
505           executed from a pytest and simply outputs logging information
506           in various different ways to test that the logging system works
507           correctly with various settings.
508
509 endif
510
511 endmenu
512
513 menu "Init options"
514
515 config BOARD_TYPES
516         bool "Call get_board_type() to get and display the board type"
517         help
518           If this option is enabled, checkboard() will call get_board_type()
519           to get a string containing the board type and this will be
520           displayed immediately after the model is shown on the console
521           early in boot.
522
523 config DISPLAY_CPUINFO
524         bool "Display information about the CPU during start up"
525         default y if ARC|| ARM || NIOS2 || X86 || XTENSA || M68K
526         help
527           Display information about the CPU that U-Boot is running on
528           when U-Boot starts up. The function print_cpuinfo() is called
529           to do this.
530
531 config DISPLAY_BOARDINFO
532         bool "Display information about the board during early start up"
533         default y if ARC || ARM || M68K || MIPS || PPC || SANDBOX || XTENSA
534         help
535           Display information about the board that U-Boot is running on
536           when U-Boot starts up. The board function checkboard() is called
537           to do this.
538
539 config DISPLAY_BOARDINFO_LATE
540         bool "Display information about the board during late start up"
541         help
542           Display information about the board that U-Boot is running on after
543           the relocation phase. The board function checkboard() is called to do
544           this.
545
546 menu "Start-up hooks"
547
548 config EVENT
549         bool "General-purpose event-handling mechanism"
550         default y if SANDBOX
551         help
552           This enables sending and processing of events, to allow interested
553           parties to be alerted when something happens. This is an attempt to
554           step the flow of weak functions, hooks, functions in board_f.c
555           and board_r.c and the Kconfig options below.
556
557           See doc/develop/event.rst for more information.
558
559 if EVENT
560
561 config EVENT_DYNAMIC
562         bool "Support event registration at runtime"
563         default y if SANDBOX
564         help
565           Enable this to support adding an event spy at runtime, without adding
566           it to the EVENT_SPy() linker list. This increases code size slightly
567           but provides more flexibility for boards and subsystems that need it.
568
569 config EVENT_DEBUG
570         bool "Enable event debugging assistance"
571         default y if SANDBOX
572         help
573           Enable this get usefui features for seeing what is happening with
574           events, such as event-type names. This adds to the code size of
575           U-Boot so can be turned off for production builds.
576
577 endif # EVENT
578
579 config ARCH_EARLY_INIT_R
580         bool "Call arch-specific init soon after relocation"
581         help
582           With this option U-Boot will call arch_early_init_r() soon after
583           relocation. Driver model is running by this point, and the cache
584           is on. Note that board_early_init_r() is called first, if
585           enabled. This can be used to set up architecture-specific devices.
586
587 config ARCH_MISC_INIT
588         bool "Call arch-specific init after relocation, when console is ready"
589         help
590           With this option U-Boot will call arch_misc_init() after
591           relocation to allow miscellaneous arch-dependent initialisation
592           to be performed. This function should be defined by the board
593           and will be called after the console is set up, after relocation.
594
595 config BOARD_EARLY_INIT_F
596         bool "Call board-specific init before relocation"
597         help
598           Some boards need to perform initialisation as soon as possible
599           after boot. With this option, U-Boot calls board_early_init_f()
600           after driver model is ready in the pre-relocation init sequence.
601           Note that the normal serial console is not yet set up, but the
602           debug UART will be available if enabled.
603
604 config BOARD_EARLY_INIT_R
605         bool "Call board-specific init after relocation"
606         help
607           Some boards need to perform initialisation as directly after
608           relocation. With this option, U-Boot calls board_early_init_r()
609           in the post-relocation init sequence.
610
611 config BOARD_POSTCLK_INIT
612         bool "Call board_postclk_init"
613         help
614           Some boards need this to initialize select items, after clocks /
615           timebase and before env / serial.
616
617 config BOARD_LATE_INIT
618         bool "Execute Board late init"
619         help
620           Sometimes board require some initialization code that might
621           require once the actual init done, example saving board specific env,
622           boot-modes etc. which eventually done at late.
623
624           So this config enable the late init code with the help of board_late_init
625           function which should defined on respective boards.
626
627 config CLOCKS
628         bool "Call set_cpu_clk_info"
629         depends on ARM
630
631 config SYS_FSL_CLK
632         bool
633         depends on ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 || \
634                 (FSL_ESDHC_IMX && (ARCH_MX5 || ARCH_MX6 || ARCH_MX7))
635         default y
636         help
637           Enable to call get_clocks() in board_init_f() for platforms other
638           than PowerPC or M68k.  This is a legacy option.  If not TARGET_BRPPT2
639
640 config LAST_STAGE_INIT
641         bool "Call board-specific as last setup step"
642         help
643           Some boards need to perform initialisation immediately before control
644           is passed to the command-line interpreter (e.g. for initializations
645           that depend on later phases in the init sequence). With this option,
646           U-Boot calls last_stage_init() before the command-line interpreter is
647           started.
648
649 config MISC_INIT_R
650         bool "Execute Misc Init"
651         default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx
652         default y if ARCH_OMAP2PLUS && !AM33XX
653         help
654           Enabling this option calls 'misc_init_r' function
655
656 config SYS_MALLOC_BOOTPARAMS
657         bool "Malloc a buffer to use for bootparams"
658         help
659           In some cases rather than using a known location to store the
660           bi_boot_params portion of gd we need to allocate it from our malloc pool.
661
662 config SYS_BOOTPARAMS_LEN
663         hex "Size of the bootparam buffer to malloc in bytes"
664         depends on SYS_MALLOC_BOOTPARAMS
665         default 0x20000 if MIPS || RCAR_GEN3
666         default 0x10000
667
668 config ID_EEPROM
669         bool "Enable I2C connected system identifier EEPROM"
670         help
671           A number of different systems and vendors enable a vendor-specified
672           EEPROM that contains various identifying features.
673
674 config PCI_INIT_R
675         bool "Enumerate PCI buses during init"
676         depends on PCI
677         help
678           With this option U-Boot will call pci_init() soon after relocation,
679           which will enumerate PCI buses. This is needed, for instance, in the
680           case of DM PCI-based Ethernet devices, which will not be detected
681           without having the enumeration performed earlier.
682
683 config RESET_PHY_R
684         bool "Reset ethernet PHY during init"
685         help
686           Implement reset_phy() in board code if required to reset the ethernet
687           PHY.
688
689 endmenu
690
691 endmenu         # Init options
692
693 menu "Security support"
694
695 config HASH
696         bool # "Support hashing API (SHA1, SHA256, etc.)"
697         help
698           This provides a way to hash data in memory using various supported
699           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
700           and the algorithms it supports are defined in common/hash.c. See
701           also CMD_HASH for command-line access.
702
703 config AVB_VERIFY
704         bool "Build Android Verified Boot operations"
705         depends on LIBAVB
706         depends on MMC
707         depends on PARTITION_UUIDS
708         help
709           This option enables compilation of bootloader-dependent operations,
710           used by Android Verified Boot 2.0 library (libavb). Includes:
711             * Helpers to process strings in order to build OS bootargs.
712             * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c.
713             * Helpers to alloc/init/free avb ops.
714
715 if AVB_VERIFY
716
717 config AVB_BUF_ADDR
718         hex "Define AVB buffer address"
719         default FASTBOOT_BUF_ADDR
720         help
721           AVB requires a buffer for memory transactions. This variable defines the
722           buffer address.
723
724 config AVB_BUF_SIZE
725         hex "Define AVB buffer SIZE"
726         default FASTBOOT_BUF_SIZE
727         help
728           AVB requires a buffer for memory transactions. This variable defines the
729           buffer size.
730
731 endif # AVB_VERIFY
732
733 config SCP03
734         bool "Build SCP03 - Secure Channel Protocol O3 - controls"
735         depends on OPTEE || SANDBOX
736         depends on TEE
737         help
738           This option allows U-Boot to enable and or provision SCP03 on an OPTEE
739           controlled Secured Element.
740
741 config SPL_HASH
742         bool # "Support hashing API (SHA1, SHA256, etc.)"
743         help
744           This provides a way to hash data in memory using various supported
745           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
746           and the algorithms it supports are defined in common/hash.c. See
747           also CMD_HASH for command-line access.
748
749 config TPL_HASH
750         bool # "Support hashing API (SHA1, SHA256, etc.)"
751         help
752           This provides a way to hash data in memory using various supported
753           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
754           and the algorithms it supports are defined in common/hash.c. See
755           also CMD_HASH for command-line access.
756
757 config STACKPROTECTOR
758         bool "Stack Protector buffer overflow detection"
759         help
760           Enable stack smash detection through compiler's stack-protector
761           canary logic
762
763 config SPL_STACKPROTECTOR
764         bool "Stack Protector buffer overflow detection for SPL"
765         depends on STACKPROTECTOR && SPL
766
767 config TPL_STACKPROTECTOR
768         bool "Stack Protector buffer overflow detection for TPL"
769         depends on STACKPROTECTOR && TPL
770
771 endmenu
772
773 menu "Update support"
774
775 config UPDATE_COMMON
776         bool
777         select DFU_WRITE_ALT
778
779 config UPDATE_TFTP
780         bool "Auto-update using fitImage via TFTP"
781         depends on FIT
782         select UPDATE_COMMON
783         help
784           This option allows performing update of NOR with data in fitImage
785           sent via TFTP boot.
786
787 config UPDATE_TFTP_CNT_MAX
788         int "The number of connection retries during auto-update"
789         default 0
790         depends on UPDATE_TFTP
791
792 config UPDATE_TFTP_MSEC_MAX
793         int "Delay in mSec to wait for the TFTP server during auto-update"
794         default 100
795         depends on UPDATE_TFTP
796
797 config UPDATE_FIT
798         bool "Firmware update using fitImage"
799         depends on FIT
800         depends on DFU
801         select UPDATE_COMMON
802         help
803           This option allows performing update of DFU-capable storage with
804           data in fitImage.
805
806 config ANDROID_AB
807         bool "Android A/B updates"
808         help
809           If enabled, adds support for the new Android A/B update model. This
810           allows the bootloader to select which slot to boot from based on the
811           information provided by userspace via the Android boot_ctrl HAL. This
812           allows a bootloader to try a new version of the system but roll back
813           to previous version if the new one didn't boot all the way.
814
815 endmenu
816
817 menu "Blob list"
818
819 config BLOBLIST
820         bool "Support for a bloblist"
821         help
822           This enables support for a bloblist in U-Boot, which can be passed
823           from TPL to SPL to U-Boot proper (and potentially to Linux). The
824           blob list supports multiple binary blobs of data, each with a tag,
825           so that different U-Boot components can store data which can survive
826           through to the next phase of the boot.
827
828 config SPL_BLOBLIST
829         bool "Support for a bloblist in SPL"
830         depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT
831         default y if SPL
832         help
833           This enables a bloblist in SPL. If this is the first part of U-Boot
834           to run, then the bloblist is set up in SPL and passed to U-Boot
835           proper. If TPL also has a bloblist, then SPL uses the one from there.
836
837 config TPL_BLOBLIST
838         bool "Support for a bloblist in TPL"
839         depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT
840         default y if TPL
841         help
842           This enables a bloblist in TPL. The bloblist is set up in TPL and
843           passed to SPL and U-Boot proper.
844
845 config VPL_BLOBLIST
846         bool "Support for a bloblist in VPL"
847         depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT
848         default y if VPL
849         help
850           This enables a bloblist in VPL. The bloblist is set up in VPL and
851           passed to SPL and U-Boot proper.
852
853 if BLOBLIST
854
855 choice
856         prompt "Bloblist location"
857         help
858           Select the location of the bloblist, via various means.
859
860 config BLOBLIST_FIXED
861         bool "Place bloblist at a fixed address in memory"
862         help
863           Select this to used a fixed memory address for the bloblist. If the
864           bloblist exists at this address from a previous phase, it used as is.
865           If not it is created at this address in U-Boot.
866
867 config BLOBLIST_ALLOC
868         bool "Allocate bloblist"
869         help
870           Allocate the bloblist using malloc(). This avoids the need to
871           specify a fixed address on systems where this is unknown or can
872           change at runtime.
873
874 endchoice
875
876 config BLOBLIST_ADDR
877         hex "Address of bloblist"
878         default 0xc000 if SANDBOX
879         depends on BLOBLIST_FIXED
880         help
881           Sets the address of the bloblist, set up by the first part of U-Boot
882           which runs. Subsequent U-Boot phases typically use the same address.
883
884           This is not used if BLOBLIST_ALLOC is selected.
885
886 config BLOBLIST_SIZE
887         hex "Size of bloblist"
888         default 0x400
889         help
890           Sets the size of the bloblist in bytes. This must include all
891           overhead (alignment, bloblist header, record header). The bloblist
892           is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
893           proper), and this sane bloblist is used for subsequent phases.
894
895 config BLOBLIST_SIZE_RELOC
896         hex "Size of bloblist after relocation"
897         default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
898         default 0 if BLOBLIST_PASSAGE
899         help
900           Sets the size of the bloblist in bytes after relocation. Since U-Boot
901           has a lot more memory available then, it is possible to use a larger
902           size than the one set up by SPL. This bloblist is set up during the
903           relocation process.
904
905 endif # BLOBLIST
906
907 if SPL_BLOBLIST
908
909 choice
910         prompt "Bloblist location in SPL"
911         help
912           Select the location of the bloblist, via various means. Typically
913           you should use the same value for SPL as for U-Boot, since they need
914           to look in the same place. But if BLOBLIST_ALLOC is used, then a
915           fresh bloblist will be created each time, since there is no shared
916           address (between phases) for the bloblist.
917
918 config SPL_BLOBLIST_FIXED
919         bool "Place bloblist at a fixed address in memory"
920         help
921           Select this to used a fixed memory address for the bloblist. If the
922           bloblist exists at this address from a previous phase, it used as is.
923           If not it is created at this address in SPL.
924
925 config SPL_BLOBLIST_ALLOC
926         bool "Allocate bloblist"
927         help
928           Allocate the bloblist using malloc(). This avoids the need to
929           specify a fixed address on systems where this is unknown or can
930           change at runtime.
931
932 endchoice
933
934 endif # SPL_BLOBLIST
935
936 if TPL_BLOBLIST
937
938 choice
939         prompt "Bloblist location in TPL"
940         help
941           Select the location of the bloblist, via various means. Typically
942           you should use the same value for SPL as for U-Boot, since they need
943           to look in the same place. But if BLOBLIST_ALLOC is used, then a
944           fresh bloblist will be created each time, since there is no shared
945           address (between phases) for the bloblist.
946
947 config TPL_BLOBLIST_FIXED
948         bool "Place bloblist at a fixed address in memory"
949         help
950           Select this to used a fixed memory address for the bloblist. If the
951           bloblist exists at this address from a previous phase, it used as is.
952           If not it is created at this address in TPL.
953
954 config TPL_BLOBLIST_ALLOC
955         bool "Allocate bloblist"
956         help
957           Allocate the bloblist using malloc(). This avoids the need to
958           specify a fixed address on systems where this is unknown or can
959           change at runtime.
960
961 endchoice
962
963 endif # TPL_BLOBLIST
964
965 endmenu
966
967 source "common/spl/Kconfig"
968
969 config IMAGE_SIGN_INFO
970         bool
971         select SHA1
972         select SHA256
973         help
974           Enable image_sign_info helper functions.
975
976 if IMAGE_SIGN_INFO
977
978 config SPL_IMAGE_SIGN_INFO
979         bool
980         select SHA1
981         select SHA256
982         help
983           Enable image_sign_info helper functions in SPL.
984
985 endif
986
987 config FDT_SIMPLEFB
988         bool "FDT tools for simplefb support"
989         depends on OF_LIBFDT
990         help
991           Enable the fdt tools to manage the simple fb nodes in device tree.
992           These functions can be used by board to indicate to the OS
993           the presence of the simple frame buffer with associated reserved
994           memory