Merge branch '2022-09-01-assorted-Kconfig-migrations' into next
[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 SYS_EEPROM_BUS_NUM
675         int "I2C bus number of the system identifier EEPROM"
676         depends on ID_EEPROM
677         default 0
678
679 choice
680         prompt "EEPROM starts with 'CCID' or 'NXID'"
681         depends on ID_EEPROM && (PPC || ARCH_LS1021A || FSL_LAYERSCAPE)
682         default SYS_I2C_EEPROM_NXID
683         help
684           Specify if the Freescale / NXP ID EEPROM starts with 'CCID' or 'NXID'
685           ASCII literal string.
686
687 config SYS_I2C_EEPROM_CCID
688         bool "EEPROM starts with 'CCID'"
689
690 config SYS_I2C_EEPROM_NXID
691         bool "EEPROM starts with 'NXID'"
692
693 endchoice
694
695 config PCI_INIT_R
696         bool "Enumerate PCI buses during init"
697         depends on PCI
698         help
699           With this option U-Boot will call pci_init() soon after relocation,
700           which will enumerate PCI buses. This is needed, for instance, in the
701           case of DM PCI-based Ethernet devices, which will not be detected
702           without having the enumeration performed earlier.
703
704 config RESET_PHY_R
705         bool "Reset ethernet PHY during init"
706         help
707           Implement reset_phy() in board code if required to reset the ethernet
708           PHY.
709
710 endmenu
711
712 endmenu         # Init options
713
714 menu "Security support"
715
716 config HASH
717         bool # "Support hashing API (SHA1, SHA256, etc.)"
718         help
719           This provides a way to hash data in memory using various supported
720           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
721           and the algorithms it supports are defined in common/hash.c. See
722           also CMD_HASH for command-line access.
723
724 config AVB_VERIFY
725         bool "Build Android Verified Boot operations"
726         depends on LIBAVB
727         depends on MMC
728         depends on PARTITION_UUIDS
729         help
730           This option enables compilation of bootloader-dependent operations,
731           used by Android Verified Boot 2.0 library (libavb). Includes:
732             * Helpers to process strings in order to build OS bootargs.
733             * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c.
734             * Helpers to alloc/init/free avb ops.
735
736 if AVB_VERIFY
737
738 config AVB_BUF_ADDR
739         hex "Define AVB buffer address"
740         default FASTBOOT_BUF_ADDR
741         help
742           AVB requires a buffer for memory transactions. This variable defines the
743           buffer address.
744
745 config AVB_BUF_SIZE
746         hex "Define AVB buffer SIZE"
747         default FASTBOOT_BUF_SIZE
748         help
749           AVB requires a buffer for memory transactions. This variable defines the
750           buffer size.
751
752 endif # AVB_VERIFY
753
754 config SCP03
755         bool "Build SCP03 - Secure Channel Protocol O3 - controls"
756         depends on OPTEE || SANDBOX
757         depends on TEE
758         help
759           This option allows U-Boot to enable and or provision SCP03 on an OPTEE
760           controlled Secured Element.
761
762 config SPL_HASH
763         bool # "Support hashing API (SHA1, SHA256, etc.)"
764         help
765           This provides a way to hash data in memory using various supported
766           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
767           and the algorithms it supports are defined in common/hash.c. See
768           also CMD_HASH for command-line access.
769
770 config TPL_HASH
771         bool # "Support hashing API (SHA1, SHA256, etc.)"
772         help
773           This provides a way to hash data in memory using various supported
774           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
775           and the algorithms it supports are defined in common/hash.c. See
776           also CMD_HASH for command-line access.
777
778 config STACKPROTECTOR
779         bool "Stack Protector buffer overflow detection"
780         help
781           Enable stack smash detection through compiler's stack-protector
782           canary logic
783
784 config SPL_STACKPROTECTOR
785         bool "Stack Protector buffer overflow detection for SPL"
786         depends on STACKPROTECTOR && SPL
787
788 config TPL_STACKPROTECTOR
789         bool "Stack Protector buffer overflow detection for TPL"
790         depends on STACKPROTECTOR && TPL
791
792 endmenu
793
794 menu "Update support"
795
796 config UPDATE_COMMON
797         bool
798         select DFU_WRITE_ALT
799
800 config UPDATE_TFTP
801         bool "Auto-update using fitImage via TFTP"
802         depends on FIT
803         select UPDATE_COMMON
804         help
805           This option allows performing update of NOR with data in fitImage
806           sent via TFTP boot.
807
808 config UPDATE_TFTP_CNT_MAX
809         int "The number of connection retries during auto-update"
810         default 0
811         depends on UPDATE_TFTP
812
813 config UPDATE_TFTP_MSEC_MAX
814         int "Delay in mSec to wait for the TFTP server during auto-update"
815         default 100
816         depends on UPDATE_TFTP
817
818 config UPDATE_FIT
819         bool "Firmware update using fitImage"
820         depends on FIT
821         depends on DFU
822         select UPDATE_COMMON
823         help
824           This option allows performing update of DFU-capable storage with
825           data in fitImage.
826
827 config ANDROID_AB
828         bool "Android A/B updates"
829         help
830           If enabled, adds support for the new Android A/B update model. This
831           allows the bootloader to select which slot to boot from based on the
832           information provided by userspace via the Android boot_ctrl HAL. This
833           allows a bootloader to try a new version of the system but roll back
834           to previous version if the new one didn't boot all the way.
835
836 endmenu
837
838 menu "Blob list"
839
840 config BLOBLIST
841         bool "Support for a bloblist"
842         help
843           This enables support for a bloblist in U-Boot, which can be passed
844           from TPL to SPL to U-Boot proper (and potentially to Linux). The
845           blob list supports multiple binary blobs of data, each with a tag,
846           so that different U-Boot components can store data which can survive
847           through to the next phase of the boot.
848
849 config SPL_BLOBLIST
850         bool "Support for a bloblist in SPL"
851         depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT
852         default y if SPL
853         help
854           This enables a bloblist in SPL. If this is the first part of U-Boot
855           to run, then the bloblist is set up in SPL and passed to U-Boot
856           proper. If TPL also has a bloblist, then SPL uses the one from there.
857
858 config TPL_BLOBLIST
859         bool "Support for a bloblist in TPL"
860         depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT
861         default y if TPL
862         help
863           This enables a bloblist in TPL. The bloblist is set up in TPL and
864           passed to SPL and U-Boot proper.
865
866 config VPL_BLOBLIST
867         bool "Support for a bloblist in VPL"
868         depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT
869         default y if VPL
870         help
871           This enables a bloblist in VPL. The bloblist is set up in VPL and
872           passed to SPL and U-Boot proper.
873
874 if BLOBLIST
875
876 choice
877         prompt "Bloblist location"
878         help
879           Select the location of the bloblist, via various means.
880
881 config BLOBLIST_FIXED
882         bool "Place bloblist at a fixed address in memory"
883         help
884           Select this to used a fixed memory address for the bloblist. If the
885           bloblist exists at this address from a previous phase, it used as is.
886           If not it is created at this address in U-Boot.
887
888 config BLOBLIST_ALLOC
889         bool "Allocate bloblist"
890         help
891           Allocate the bloblist using malloc(). This avoids the need to
892           specify a fixed address on systems where this is unknown or can
893           change at runtime.
894
895 endchoice
896
897 config BLOBLIST_ADDR
898         hex "Address of bloblist"
899         default 0xc000 if SANDBOX
900         depends on BLOBLIST_FIXED
901         help
902           Sets the address of the bloblist, set up by the first part of U-Boot
903           which runs. Subsequent U-Boot phases typically use the same address.
904
905           This is not used if BLOBLIST_ALLOC is selected.
906
907 config BLOBLIST_SIZE
908         hex "Size of bloblist"
909         default 0x400
910         help
911           Sets the size of the bloblist in bytes. This must include all
912           overhead (alignment, bloblist header, record header). The bloblist
913           is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
914           proper), and this sane bloblist is used for subsequent phases.
915
916 config BLOBLIST_SIZE_RELOC
917         hex "Size of bloblist after relocation"
918         default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
919         default 0 if BLOBLIST_PASSAGE
920         help
921           Sets the size of the bloblist in bytes after relocation. Since U-Boot
922           has a lot more memory available then, it is possible to use a larger
923           size than the one set up by SPL. This bloblist is set up during the
924           relocation process.
925
926 endif # BLOBLIST
927
928 if SPL_BLOBLIST
929
930 choice
931         prompt "Bloblist location in SPL"
932         help
933           Select the location of the bloblist, via various means. Typically
934           you should use the same value for SPL as for U-Boot, since they need
935           to look in the same place. But if BLOBLIST_ALLOC is used, then a
936           fresh bloblist will be created each time, since there is no shared
937           address (between phases) for the bloblist.
938
939 config SPL_BLOBLIST_FIXED
940         bool "Place bloblist at a fixed address in memory"
941         help
942           Select this to used a fixed memory address for the bloblist. If the
943           bloblist exists at this address from a previous phase, it used as is.
944           If not it is created at this address in SPL.
945
946 config SPL_BLOBLIST_ALLOC
947         bool "Allocate bloblist"
948         help
949           Allocate the bloblist using malloc(). This avoids the need to
950           specify a fixed address on systems where this is unknown or can
951           change at runtime.
952
953 endchoice
954
955 endif # SPL_BLOBLIST
956
957 if TPL_BLOBLIST
958
959 choice
960         prompt "Bloblist location in TPL"
961         help
962           Select the location of the bloblist, via various means. Typically
963           you should use the same value for SPL as for U-Boot, since they need
964           to look in the same place. But if BLOBLIST_ALLOC is used, then a
965           fresh bloblist will be created each time, since there is no shared
966           address (between phases) for the bloblist.
967
968 config TPL_BLOBLIST_FIXED
969         bool "Place bloblist at a fixed address in memory"
970         help
971           Select this to used a fixed memory address for the bloblist. If the
972           bloblist exists at this address from a previous phase, it used as is.
973           If not it is created at this address in TPL.
974
975 config TPL_BLOBLIST_ALLOC
976         bool "Allocate bloblist"
977         help
978           Allocate the bloblist using malloc(). This avoids the need to
979           specify a fixed address on systems where this is unknown or can
980           change at runtime.
981
982 endchoice
983
984 endif # TPL_BLOBLIST
985
986 endmenu
987
988 source "common/spl/Kconfig"
989
990 config IMAGE_SIGN_INFO
991         bool
992         select SHA1
993         select SHA256
994         help
995           Enable image_sign_info helper functions.
996
997 if IMAGE_SIGN_INFO
998
999 config SPL_IMAGE_SIGN_INFO
1000         bool
1001         select SHA1
1002         select SHA256
1003         help
1004           Enable image_sign_info helper functions in SPL.
1005
1006 endif
1007
1008 config FDT_SIMPLEFB
1009         bool "FDT tools for simplefb support"
1010         depends on OF_LIBFDT
1011         help
1012           Enable the fdt tools to manage the simple fb nodes in device tree.
1013           These functions can be used by board to indicate to the OS
1014           the presence of the simple frame buffer with associated reserved
1015           memory