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