b776c5ca1ec7be3da12a30e1af7824a37e4c26c5
[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 CYCLIC
549         bool "General-purpose cyclic execution mechanism"
550         help
551           This enables a general-purpose cyclic execution infrastructure,
552           to allow "small" (run-time wise) functions to be executed at
553           a specified frequency. Things like LED blinking or watchdog
554           triggering are examples for such tasks.
555
556 if CYCLIC
557
558 config CYCLIC_MAX_CPU_TIME_US
559         int "Sets the max allowed time for a cyclic function in us"
560         default 1000
561         help
562           The max allowed time for a cyclic function in us. If a functions
563           takes longer than this duration this function will get unregistered
564           automatically.
565
566 endif # CYCLIC
567
568 config EVENT
569         bool "General-purpose event-handling mechanism"
570         default y if SANDBOX
571         help
572           This enables sending and processing of events, to allow interested
573           parties to be alerted when something happens. This is an attempt to
574           step the flow of weak functions, hooks, functions in board_f.c
575           and board_r.c and the Kconfig options below.
576
577           See doc/develop/event.rst for more information.
578
579 if EVENT
580
581 config EVENT_DYNAMIC
582         bool "Support event registration at runtime"
583         default y if SANDBOX
584         help
585           Enable this to support adding an event spy at runtime, without adding
586           it to the EVENT_SPy() linker list. This increases code size slightly
587           but provides more flexibility for boards and subsystems that need it.
588
589 config EVENT_DEBUG
590         bool "Enable event debugging assistance"
591         default y if SANDBOX
592         help
593           Enable this get usefui features for seeing what is happening with
594           events, such as event-type names. This adds to the code size of
595           U-Boot so can be turned off for production builds.
596
597 endif # EVENT
598
599 config ARCH_EARLY_INIT_R
600         bool "Call arch-specific init soon after relocation"
601         help
602           With this option U-Boot will call arch_early_init_r() soon after
603           relocation. Driver model is running by this point, and the cache
604           is on. Note that board_early_init_r() is called first, if
605           enabled. This can be used to set up architecture-specific devices.
606
607 config ARCH_MISC_INIT
608         bool "Call arch-specific init after relocation, when console is ready"
609         help
610           With this option U-Boot will call arch_misc_init() after
611           relocation to allow miscellaneous arch-dependent initialisation
612           to be performed. This function should be defined by the board
613           and will be called after the console is set up, after relocation.
614
615 config BOARD_EARLY_INIT_F
616         bool "Call board-specific init before relocation"
617         help
618           Some boards need to perform initialisation as soon as possible
619           after boot. With this option, U-Boot calls board_early_init_f()
620           after driver model is ready in the pre-relocation init sequence.
621           Note that the normal serial console is not yet set up, but the
622           debug UART will be available if enabled.
623
624 config BOARD_EARLY_INIT_R
625         bool "Call board-specific init after relocation"
626         help
627           Some boards need to perform initialisation as directly after
628           relocation. With this option, U-Boot calls board_early_init_r()
629           in the post-relocation init sequence.
630
631 config BOARD_POSTCLK_INIT
632         bool "Call board_postclk_init"
633         help
634           Some boards need this to initialize select items, after clocks /
635           timebase and before env / serial.
636
637 config BOARD_LATE_INIT
638         bool "Execute Board late init"
639         help
640           Sometimes board require some initialization code that might
641           require once the actual init done, example saving board specific env,
642           boot-modes etc. which eventually done at late.
643
644           So this config enable the late init code with the help of board_late_init
645           function which should defined on respective boards.
646
647 config CLOCKS
648         bool "Call set_cpu_clk_info"
649         depends on ARM
650
651 config SYS_FSL_CLK
652         bool
653         depends on ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 || \
654                 (FSL_ESDHC_IMX && (ARCH_MX5 || ARCH_MX6 || ARCH_MX7))
655         default y
656         help
657           Enable to call get_clocks() in board_init_f() for platforms other
658           than PowerPC or M68k.  This is a legacy option.  If not TARGET_BRPPT2
659
660 config LAST_STAGE_INIT
661         bool "Call board-specific as last setup step"
662         help
663           Some boards need to perform initialisation immediately before control
664           is passed to the command-line interpreter (e.g. for initializations
665           that depend on later phases in the init sequence). With this option,
666           U-Boot calls last_stage_init() before the command-line interpreter is
667           started.
668
669 config MISC_INIT_R
670         bool "Execute Misc Init"
671         default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx
672         default y if ARCH_OMAP2PLUS && !AM33XX
673         help
674           Enabling this option calls 'misc_init_r' function
675
676 config SYS_MALLOC_BOOTPARAMS
677         bool "Malloc a buffer to use for bootparams"
678         help
679           In some cases rather than using a known location to store the
680           bi_boot_params portion of gd we need to allocate it from our malloc pool.
681
682 config SYS_BOOTPARAMS_LEN
683         hex "Size of the bootparam buffer to malloc in bytes"
684         depends on SYS_MALLOC_BOOTPARAMS
685         default 0x20000 if MIPS || RCAR_GEN3
686         default 0x10000
687
688 config ID_EEPROM
689         bool "Enable I2C connected system identifier EEPROM"
690         help
691           A number of different systems and vendors enable a vendor-specified
692           EEPROM that contains various identifying features.
693
694 config SYS_EEPROM_BUS_NUM
695         int "I2C bus number of the system identifier EEPROM"
696         depends on ID_EEPROM
697         default 0
698
699 choice
700         prompt "EEPROM starts with 'CCID' or 'NXID'"
701         depends on ID_EEPROM && (PPC || ARCH_LS1021A || FSL_LAYERSCAPE)
702         default SYS_I2C_EEPROM_NXID
703         help
704           Specify if the Freescale / NXP ID EEPROM starts with 'CCID' or 'NXID'
705           ASCII literal string.
706
707 config SYS_I2C_EEPROM_CCID
708         bool "EEPROM starts with 'CCID'"
709
710 config SYS_I2C_EEPROM_NXID
711         bool "EEPROM starts with 'NXID'"
712
713 endchoice
714
715 config PCI_INIT_R
716         bool "Enumerate PCI buses during init"
717         depends on PCI
718         help
719           With this option U-Boot will call pci_init() soon after relocation,
720           which will enumerate PCI buses. This is needed, for instance, in the
721           case of DM PCI-based Ethernet devices, which will not be detected
722           without having the enumeration performed earlier.
723
724 config RESET_PHY_R
725         bool "Reset ethernet PHY during init"
726         help
727           Implement reset_phy() in board code if required to reset the ethernet
728           PHY.
729
730 endmenu
731
732 endmenu         # Init options
733
734 menu "Security support"
735
736 config HASH
737         bool # "Support hashing API (SHA1, SHA256, etc.)"
738         help
739           This provides a way to hash data in memory using various supported
740           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
741           and the algorithms it supports are defined in common/hash.c. See
742           also CMD_HASH for command-line access.
743
744 config AVB_VERIFY
745         bool "Build Android Verified Boot operations"
746         depends on LIBAVB
747         depends on MMC
748         depends on PARTITION_UUIDS
749         help
750           This option enables compilation of bootloader-dependent operations,
751           used by Android Verified Boot 2.0 library (libavb). Includes:
752             * Helpers to process strings in order to build OS bootargs.
753             * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c.
754             * Helpers to alloc/init/free avb ops.
755
756 if AVB_VERIFY
757
758 config AVB_BUF_ADDR
759         hex "Define AVB buffer address"
760         default FASTBOOT_BUF_ADDR
761         help
762           AVB requires a buffer for memory transactions. This variable defines the
763           buffer address.
764
765 config AVB_BUF_SIZE
766         hex "Define AVB buffer SIZE"
767         default FASTBOOT_BUF_SIZE
768         help
769           AVB requires a buffer for memory transactions. This variable defines the
770           buffer size.
771
772 endif # AVB_VERIFY
773
774 config SCP03
775         bool "Build SCP03 - Secure Channel Protocol O3 - controls"
776         depends on OPTEE || SANDBOX
777         depends on TEE
778         help
779           This option allows U-Boot to enable and or provision SCP03 on an OPTEE
780           controlled Secured Element.
781
782 config SPL_HASH
783         bool # "Support hashing API (SHA1, SHA256, etc.)"
784         help
785           This provides a way to hash data in memory using various supported
786           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
787           and the algorithms it supports are defined in common/hash.c. See
788           also CMD_HASH for command-line access.
789
790 config TPL_HASH
791         bool # "Support hashing API (SHA1, SHA256, etc.)"
792         help
793           This provides a way to hash data in memory using various supported
794           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
795           and the algorithms it supports are defined in common/hash.c. See
796           also CMD_HASH for command-line access.
797
798 config STACKPROTECTOR
799         bool "Stack Protector buffer overflow detection"
800         help
801           Enable stack smash detection through compiler's stack-protector
802           canary logic
803
804 config SPL_STACKPROTECTOR
805         bool "Stack Protector buffer overflow detection for SPL"
806         depends on STACKPROTECTOR && SPL
807
808 config TPL_STACKPROTECTOR
809         bool "Stack Protector buffer overflow detection for TPL"
810         depends on STACKPROTECTOR && TPL
811
812 config BOARD_RNG_SEED
813         bool "Provide /chosen/rng-seed property to the linux kernel"
814         help
815           Selecting this option requires the board to define a
816           board_rng_seed() function, which should return a buffer
817           which will be used to populate the /chosen/rng-seed property
818           in the device tree for the OS being booted.
819
820           It is up to the board code (and more generally the whole
821           BSP) where and how to store (or generate) such a seed, how
822           to ensure a given seed is only used once, how to create a
823           new seed for use on subsequent boots, and whether or not the
824           kernel should account any entropy from the given seed.
825
826 endmenu
827
828 menu "Update support"
829
830 config UPDATE_COMMON
831         bool
832         select DFU_WRITE_ALT
833
834 config UPDATE_TFTP
835         bool "Auto-update using fitImage via TFTP"
836         depends on FIT
837         select UPDATE_COMMON
838         help
839           This option allows performing update of NOR with data in fitImage
840           sent via TFTP boot.
841
842 config UPDATE_TFTP_CNT_MAX
843         int "The number of connection retries during auto-update"
844         default 0
845         depends on UPDATE_TFTP
846
847 config UPDATE_TFTP_MSEC_MAX
848         int "Delay in mSec to wait for the TFTP server during auto-update"
849         default 100
850         depends on UPDATE_TFTP
851
852 config UPDATE_FIT
853         bool "Firmware update using fitImage"
854         depends on FIT
855         depends on DFU
856         select UPDATE_COMMON
857         help
858           This option allows performing update of DFU-capable storage with
859           data in fitImage.
860
861 config ANDROID_AB
862         bool "Android A/B updates"
863         help
864           If enabled, adds support for the new Android A/B update model. This
865           allows the bootloader to select which slot to boot from based on the
866           information provided by userspace via the Android boot_ctrl HAL. This
867           allows a bootloader to try a new version of the system but roll back
868           to previous version if the new one didn't boot all the way.
869
870 endmenu
871
872 menu "Blob list"
873
874 config BLOBLIST
875         bool "Support for a bloblist"
876         help
877           This enables support for a bloblist in U-Boot, which can be passed
878           from TPL to SPL to U-Boot proper (and potentially to Linux). The
879           blob list supports multiple binary blobs of data, each with a tag,
880           so that different U-Boot components can store data which can survive
881           through to the next phase of the boot.
882
883 config SPL_BLOBLIST
884         bool "Support for a bloblist in SPL"
885         depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT
886         default y if SPL
887         help
888           This enables a bloblist in SPL. If this is the first part of U-Boot
889           to run, then the bloblist is set up in SPL and passed to U-Boot
890           proper. If TPL also has a bloblist, then SPL uses the one from there.
891
892 config TPL_BLOBLIST
893         bool "Support for a bloblist in TPL"
894         depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT
895         default y if TPL
896         help
897           This enables a bloblist in TPL. The bloblist is set up in TPL and
898           passed to SPL and U-Boot proper.
899
900 config VPL_BLOBLIST
901         bool "Support for a bloblist in VPL"
902         depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT
903         default y if VPL
904         help
905           This enables a bloblist in VPL. The bloblist is set up in VPL and
906           passed to SPL and U-Boot proper.
907
908 if BLOBLIST
909
910 choice
911         prompt "Bloblist location"
912         help
913           Select the location of the bloblist, via various means.
914
915 config BLOBLIST_FIXED
916         bool "Place bloblist at a fixed address in memory"
917         help
918           Select this to used a fixed memory address for the bloblist. If the
919           bloblist exists at this address from a previous phase, it used as is.
920           If not it is created at this address in U-Boot.
921
922 config BLOBLIST_ALLOC
923         bool "Allocate bloblist"
924         help
925           Allocate the bloblist using malloc(). This avoids the need to
926           specify a fixed address on systems where this is unknown or can
927           change at runtime.
928
929 endchoice
930
931 config BLOBLIST_ADDR
932         hex "Address of bloblist"
933         default 0xc000 if SANDBOX
934         depends on BLOBLIST_FIXED
935         help
936           Sets the address of the bloblist, set up by the first part of U-Boot
937           which runs. Subsequent U-Boot phases typically use the same address.
938
939           This is not used if BLOBLIST_ALLOC is selected.
940
941 config BLOBLIST_SIZE
942         hex "Size of bloblist"
943         default 0x400
944         help
945           Sets the size of the bloblist in bytes. This must include all
946           overhead (alignment, bloblist header, record header). The bloblist
947           is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
948           proper), and this sane bloblist is used for subsequent phases.
949
950 config BLOBLIST_SIZE_RELOC
951         hex "Size of bloblist after relocation"
952         default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
953         default 0 if BLOBLIST_PASSAGE
954         help
955           Sets the size of the bloblist in bytes after relocation. Since U-Boot
956           has a lot more memory available then, it is possible to use a larger
957           size than the one set up by SPL. This bloblist is set up during the
958           relocation process.
959
960 endif # BLOBLIST
961
962 if SPL_BLOBLIST
963
964 choice
965         prompt "Bloblist location in SPL"
966         help
967           Select the location of the bloblist, via various means. Typically
968           you should use the same value for SPL as for U-Boot, since they need
969           to look in the same place. But if BLOBLIST_ALLOC is used, then a
970           fresh bloblist will be created each time, since there is no shared
971           address (between phases) for the bloblist.
972
973 config SPL_BLOBLIST_FIXED
974         bool "Place bloblist at a fixed address in memory"
975         help
976           Select this to used a fixed memory address for the bloblist. If the
977           bloblist exists at this address from a previous phase, it used as is.
978           If not it is created at this address in SPL.
979
980 config SPL_BLOBLIST_ALLOC
981         bool "Allocate bloblist"
982         help
983           Allocate the bloblist using malloc(). This avoids the need to
984           specify a fixed address on systems where this is unknown or can
985           change at runtime.
986
987 endchoice
988
989 endif # SPL_BLOBLIST
990
991 if TPL_BLOBLIST
992
993 choice
994         prompt "Bloblist location in TPL"
995         help
996           Select the location of the bloblist, via various means. Typically
997           you should use the same value for SPL as for U-Boot, since they need
998           to look in the same place. But if BLOBLIST_ALLOC is used, then a
999           fresh bloblist will be created each time, since there is no shared
1000           address (between phases) for the bloblist.
1001
1002 config TPL_BLOBLIST_FIXED
1003         bool "Place bloblist at a fixed address in memory"
1004         help
1005           Select this to used a fixed memory address for the bloblist. If the
1006           bloblist exists at this address from a previous phase, it used as is.
1007           If not it is created at this address in TPL.
1008
1009 config TPL_BLOBLIST_ALLOC
1010         bool "Allocate bloblist"
1011         help
1012           Allocate the bloblist using malloc(). This avoids the need to
1013           specify a fixed address on systems where this is unknown or can
1014           change at runtime.
1015
1016 endchoice
1017
1018 endif # TPL_BLOBLIST
1019
1020 endmenu
1021
1022 source "common/spl/Kconfig"
1023
1024 config IMAGE_SIGN_INFO
1025         bool
1026         select SHA1
1027         select SHA256
1028         help
1029           Enable image_sign_info helper functions.
1030
1031 if IMAGE_SIGN_INFO
1032
1033 config SPL_IMAGE_SIGN_INFO
1034         bool
1035         select SHA1
1036         select SHA256
1037         help
1038           Enable image_sign_info helper functions in SPL.
1039
1040 endif
1041
1042 config FDT_SIMPLEFB
1043         bool "FDT tools for simplefb support"
1044         depends on OF_LIBFDT
1045         help
1046           Enable the fdt tools to manage the simple fb nodes in device tree.
1047           These functions can be used by board to indicate to the OS
1048           the presence of the simple frame buffer with associated reserved
1049           memory