81e88ea77c170a4c0ee96ae4559f473ed4134530
[oweals/u-boot.git] / common / Kconfig
1 menu "Boot timing"
2
3 config BOOTSTAGE
4         bool "Boot timing and reporting"
5         help
6           Enable recording of boot time while booting. To use it, insert
7           calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
8           bootstage.h. Only a single entry is recorded for each ID. You can
9           give the entry a name with bootstage_mark_name(). You can also
10           record elapsed time in a particular stage using bootstage_start()
11           before starting and bootstage_accum() when finished. Bootstage will
12           add up all the accumulated time and report it.
13
14           Normally, IDs are defined in bootstage.h but a small number of
15           additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
16           as the ID.
17
18           Calls to show_boot_progress() will also result in log entries but
19           these will not have names.
20
21 config SPL_BOOTSTAGE
22         bool "Boot timing and reported in SPL"
23         depends on BOOTSTAGE
24         help
25           Enable recording of boot time in SPL. To make this visible to U-Boot
26           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
27           information when SPL finishes and load it when U-Boot proper starts
28           up.
29
30 config BOOTSTAGE_REPORT
31         bool "Display a detailed boot timing report before booting the OS"
32         depends on BOOTSTAGE
33         help
34           Enable output of a boot time report just before the OS is booted.
35           This shows how long it took U-Boot to go through each stage of the
36           boot process. The report looks something like this:
37
38                 Timer summary in microseconds:
39                        Mark    Elapsed  Stage
40                           0          0  reset
41                   3,575,678  3,575,678  board_init_f start
42                   3,575,695         17  arch_cpu_init A9
43                   3,575,777         82  arch_cpu_init done
44                   3,659,598     83,821  board_init_r start
45                   3,910,375    250,777  main_loop
46                  29,916,167 26,005,792  bootm_start
47                  30,361,327    445,160  start_kernel
48
49 config BOOTSTAGE_RECORD_COUNT
50         int "Number of boot stage records to store"
51         default 30
52         help
53           This is the size of the bootstage record list and is the maximum
54           number of bootstage records that can be recorded.
55
56 config SPL_BOOTSTAGE_RECORD_COUNT
57         int "Number of boot stage records to store for SPL"
58         default 5
59         help
60           This is the size of the bootstage record list and is the maximum
61           number of bootstage records that can be recorded.
62
63 config BOOTSTAGE_FDT
64         bool "Store boot timing information in the OS device tree"
65         depends on BOOTSTAGE
66         help
67           Stash the bootstage information in the FDT. A root 'bootstage'
68           node is created with each bootstage id as a child. Each child
69           has a 'name' property and either 'mark' containing the
70           mark time in microseconds, or 'accum' containing the
71           accumulated time for that bootstage id in microseconds.
72           For example:
73
74                 bootstage {
75                         154 {
76                                 name = "board_init_f";
77                                 mark = <3575678>;
78                         };
79                         170 {
80                                 name = "lcd";
81                                 accum = <33482>;
82                         };
83                 };
84
85           Code in the Linux kernel can find this in /proc/devicetree.
86
87 config BOOTSTAGE_STASH
88         bool "Stash the boot timing information in memory before booting OS"
89         depends on BOOTSTAGE
90         help
91           Some OSes do not support device tree. Bootstage can instead write
92           the boot timing information in a binary format at a given address.
93           This happens through a call to bootstage_stash(), typically in
94           the CPU's cleanup_before_linux() function. You can use the
95           'bootstage stash' and 'bootstage unstash' commands to do this on
96           the command line.
97
98 config BOOTSTAGE_STASH_ADDR
99         hex "Address to stash boot timing information"
100         default 0
101         help
102           Provide an address which will not be overwritten by the OS when it
103           starts, so that it can read this information when ready.
104
105 config BOOTSTAGE_STASH_SIZE
106         hex "Size of boot timing stash region"
107         default 0x1000
108         help
109           This should be large enough to hold the bootstage stash. A value of
110           4096 (4KiB) is normally plenty.
111
112 endmenu
113
114 menu "Boot media"
115
116 config NOR_BOOT
117         bool "Support for booting from NOR flash"
118         depends on NOR
119         help
120           Enabling this will make a U-Boot binary that is capable of being
121           booted via NOR.  In this case we will enable certain pinmux early
122           as the ROM only partially sets up pinmux.  We also default to using
123           NOR for environment.
124
125 config NAND_BOOT
126         bool "Support for booting from NAND flash"
127         default n
128         help
129           Enabling this will make a U-Boot binary that is capable of being
130           booted via NAND flash. This is not a must, some SoCs need this,
131           some not.
132
133 config ONENAND_BOOT
134         bool "Support for booting from ONENAND"
135         default n
136         help
137           Enabling this will make a U-Boot binary that is capable of being
138           booted via ONENAND. This is not a must, some SoCs need this,
139           some not.
140
141 config QSPI_BOOT
142         bool "Support for booting from QSPI flash"
143         default n
144         help
145           Enabling this will make a U-Boot binary that is capable of being
146           booted via QSPI flash. This is not a must, some SoCs need this,
147           some not.
148
149 config SATA_BOOT
150         bool "Support for booting from SATA"
151         default n
152         help
153           Enabling this will make a U-Boot binary that is capable of being
154           booted via SATA. This is not a must, some SoCs need this,
155           some not.
156
157 config SD_BOOT
158         bool "Support for booting from SD/EMMC"
159         default n
160         help
161           Enabling this will make a U-Boot binary that is capable of being
162           booted via SD/EMMC. This is not a must, some SoCs need this,
163           some not.
164
165 config SPI_BOOT
166         bool "Support for booting from SPI flash"
167         default n
168         help
169           Enabling this will make a U-Boot binary that is capable of being
170           booted via SPI flash. This is not a must, some SoCs need this,
171           some not.
172
173 endmenu
174
175 config BOOTDELAY
176         int "delay in seconds before automatically booting"
177         default 2
178         depends on AUTOBOOT
179         help
180           Delay before automatically running bootcmd;
181           set to 0 to autoboot with no delay, but you can stop it by key input.
182           set to -1 to disable autoboot.
183           set to -2 to autoboot with no delay and not check for abort
184
185           If this value is >= 0 then it is also used for the default delay
186           before starting the default entry in bootmenu. If it is < 0 then
187           a default value of 10s is used.
188
189           See doc/README.autoboot for details.
190
191 config USE_BOOTARGS
192         bool "Enable boot arguments"
193         help
194           Provide boot arguments to bootm command. Boot arguments are specified
195           in CONFIG_BOOTARGS option. Enable this option to be able to specify
196           CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
197           will be undefined and won't take any space in U-Boot image.
198
199 config BOOTARGS
200         string "Boot arguments"
201         depends on USE_BOOTARGS
202         help
203           This can be used to pass arguments to the bootm command. The value of
204           CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
205           this value will also override the "chosen" node in FDT blob.
206
207 config USE_BOOTCOMMAND
208         bool "Enable a default value for bootcmd"
209         help
210           Provide a default value for the bootcmd entry in the environment.  If
211           autoboot is enabled this is what will be run automatically.  Enable
212           this option to be able to specify CONFIG_BOOTCOMMAND as a string.  If
213           this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
214           won't take any space in U-Boot image.
215
216 config BOOTCOMMAND
217         string "bootcmd value"
218         depends on USE_BOOTCOMMAND
219         default "run distro_bootcmd" if DISTRO_DEFAULTS
220         help
221           This is the string of commands that will be used as bootcmd and if
222           AUTOBOOT is set, automatically run.
223
224 menu "Console"
225
226 config MENU
227         bool
228         help
229           This is the library functionality to provide a text-based menu of
230           choices for the user to make choices with.
231
232 config CONSOLE_RECORD
233         bool "Console recording"
234         help
235           This provides a way to record console output (and provide console
236           input) through circular buffers. This is mostly useful for testing.
237           Console output is recorded even when the console is silent.
238           To enable console recording, call console_record_reset_enable()
239           from your code.
240
241 config CONSOLE_RECORD_OUT_SIZE
242         hex "Output buffer size"
243         depends on CONSOLE_RECORD
244         default 0x400 if CONSOLE_RECORD
245         help
246           Set the size of the console output buffer. When this fills up, no
247           more data will be recorded until some is removed. The buffer is
248           allocated immediately after the malloc() region is ready.
249
250 config CONSOLE_RECORD_IN_SIZE
251         hex "Input buffer size"
252         depends on CONSOLE_RECORD
253         default 0x100 if CONSOLE_RECORD
254         help
255           Set the size of the console input buffer. When this contains data,
256           tstc() and getc() will use this in preference to real device input.
257           The buffer is allocated immediately after the malloc() region is
258           ready.
259
260 config IDENT_STRING
261         string "Board specific string to be added to uboot version string"
262         help
263           This options adds the board specific name to u-boot version.
264
265 config LOGLEVEL
266         int "loglevel"
267         default 4
268         range 0 8
269         help
270           All Messages with a loglevel smaller than the console loglevel will
271           be compiled in. The loglevels are defined as follows:
272
273           0 (KERN_EMERG)          system is unusable
274           1 (KERN_ALERT)          action must be taken immediately
275           2 (KERN_CRIT)           critical conditions
276           3 (KERN_ERR)            error conditions
277           4 (KERN_WARNING)        warning conditions
278           5 (KERN_NOTICE)         normal but significant condition
279           6 (KERN_INFO)           informational
280           7 (KERN_DEBUG)          debug-level messages
281
282 config SPL_LOGLEVEL
283         int
284         default LOGLEVEL
285
286 config SILENT_CONSOLE
287         bool "Support a silent console"
288         help
289           This option allows the console to be silenced, meaning that no
290           output will appear on the console devices. This is controlled by
291           setting the environment vaariable 'silent' to a non-empty value.
292           Note this also silences the console when booting Linux.
293
294           When the console is set up, the variable is checked, and the
295           GD_FLG_SILENT flag is set. Changing the environment variable later
296           will update the flag.
297
298 config SILENT_U_BOOT_ONLY
299         bool "Only silence the U-Boot console"
300         depends on SILENT_CONSOLE
301         help
302           Normally when the U-Boot console is silenced, Linux's console is
303           also silenced (assuming the board boots into Linux). This option
304           allows the linux console to operate normally, even if U-Boot's
305           is silenced.
306
307 config SILENT_CONSOLE_UPDATE_ON_SET
308         bool "Changes to the 'silent' environment variable update immediately"
309         depends on SILENT_CONSOLE
310         default y if SILENT_CONSOLE
311         help
312           When the 'silent' environment variable is changed, update the
313           console silence flag immediately. This allows 'setenv' to be used
314           to silence or un-silence the console.
315
316           The effect is that any change to the variable will affect the
317           GD_FLG_SILENT flag.
318
319 config SILENT_CONSOLE_UPDATE_ON_RELOC
320         bool "Allow flags to take effect on relocation"
321         depends on SILENT_CONSOLE
322         help
323           In some cases the environment is not available until relocation
324           (e.g. NAND). This option makes the value of the 'silent'
325           environment variable take effect at relocation.
326
327 config PRE_CONSOLE_BUFFER
328         bool "Buffer characters before the console is available"
329         help
330           Prior to the console being initialised (i.e. serial UART
331           initialised etc) all console output is silently discarded.
332           Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
333           buffer any console messages prior to the console being
334           initialised to a buffer. The buffer is a circular buffer, so
335           if it overflows, earlier output is discarded.
336
337           Note that this is not currently supported in SPL. It would be
338           useful to be able to share the pre-console buffer with SPL.
339
340 config PRE_CON_BUF_SZ
341         int "Sets the size of the pre-console buffer"
342         depends on PRE_CONSOLE_BUFFER
343         default 4096
344         help
345           The size of the pre-console buffer affects how much console output
346           can be held before it overflows and starts discarding earlier
347           output. Normally there is very little output at this early stage,
348           unless debugging is enabled, so allow enough for ~10 lines of
349           text.
350
351           This is a useful feature if you are using a video console and
352           want to see the full boot output on the console. Without this
353           option only the post-relocation output will be displayed.
354
355 config PRE_CON_BUF_ADDR
356         hex "Address of the pre-console buffer"
357         depends on PRE_CONSOLE_BUFFER
358         default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I
359         default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I
360         help
361           This sets the start address of the pre-console buffer. This must
362           be in available memory and is accessed before relocation and
363           possibly before DRAM is set up. Therefore choose an address
364           carefully.
365
366           We should consider removing this option and allocating the memory
367           in board_init_f_init_reserve() instead.
368
369 config CONSOLE_MUX
370         bool "Enable console multiplexing"
371         default y if DM_VIDEO || VIDEO || LCD
372         help
373           This allows multiple devices to be used for each console 'file'.
374           For example, stdout can be set to go to serial and video.
375           Similarly, stdin can be set to come from serial and keyboard.
376           Input can be provided from either source. Console multiplexing
377           adds a small amount of size to U-Boot.  Changes to the environment
378           variables stdout, stdin and stderr will take effect immediately.
379
380 config SYS_CONSOLE_IS_IN_ENV
381         bool "Select console devices from the environment"
382         default y if CONSOLE_MUX
383         help
384           This allows multiple input/output devices to be set at boot time.
385           For example, if stdout is set to "serial,video" then output will
386           be sent to both the serial and video devices on boot. The
387           environment variables can be updated after boot to change the
388           input/output devices.
389
390 config SYS_CONSOLE_OVERWRITE_ROUTINE
391         bool "Allow board control over console overwriting"
392         help
393           If this is enabled, and the board-specific function
394           overwrite_console() returns 1, the stdin, stderr and stdout are
395           switched to the serial port, else the settings in the environment
396           are used. If this is not enabled, the console will not be switched
397           to serial.
398
399 config SYS_CONSOLE_ENV_OVERWRITE
400         bool "Update environment variables during console init"
401         help
402           The console environment variables (stdout, stdin, stderr) can be
403           used to determine the correct console devices on start-up. This
404           option writes the console devices to these variables on console
405           start-up (after relocation). This causes the environment to be
406           updated to match the console devices actually chosen.
407
408 config SYS_CONSOLE_INFO_QUIET
409         bool "Don't display the console devices on boot"
410         help
411           Normally U-Boot displays the current settings for stdout, stdin
412           and stderr on boot when the post-relocation console is set up.
413           Enable this option to supress this output. It can be obtained by
414           calling stdio_print_current_devices() from board code.
415
416 config SYS_STDIO_DEREGISTER
417         bool "Allow deregistering stdio devices"
418         default y if USB_KEYBOARD
419         help
420           Generally there is no need to deregister stdio devices since they
421           are never deactivated. But if a stdio device is used which can be
422           removed (for example a USB keyboard) then this option can be
423           enabled to ensure this is handled correctly.
424
425 endmenu
426
427 menu "Logging"
428
429 config LOG
430         bool "Enable logging support"
431         select DM
432         help
433           This enables support for logging of status and debug messages. These
434           can be displayed on the console, recorded in a memory buffer, or
435           discarded if not needed. Logging supports various categories and
436           levels of severity.
437
438 config SPL_LOG
439         bool "Enable logging support in SPL"
440         help
441           This enables support for logging of status and debug messages. These
442           can be displayed on the console, recorded in a memory buffer, or
443           discarded if not needed. Logging supports various categories and
444           levels of severity.
445
446 config LOG_MAX_LEVEL
447         int "Maximum log level to record"
448         depends on LOG
449         default 5
450         help
451           This selects the maximum log level that will be recorded. Any value
452           higher than this will be ignored. If possible log statements below
453           this level will be discarded at build time. Levels:
454
455             0 - panic
456             1 - critical
457             2 - error
458             3 - warning
459             4 - note
460             5 - info
461             6 - detail
462             7 - debug
463
464 config SPL_LOG_MAX_LEVEL
465         int "Maximum log level to record in SPL"
466         depends on SPL_LOG
467         default 3
468         help
469           This selects the maximum log level that will be recorded. Any value
470           higher than this will be ignored. If possible log statements below
471           this level will be discarded at build time. Levels:
472
473             0 - panic
474             1 - critical
475             2 - error
476             3 - warning
477             4 - note
478             5 - info
479             6 - detail
480             7 - debug
481
482 config LOG_CONSOLE
483         bool "Allow log output to the console"
484         depends on LOG
485         default y
486         help
487           Enables a log driver which writes log records to the console.
488           Generally the console is the serial port or LCD display. Only the
489           log message is shown - other details like level, category, file and
490           line number are omitted.
491
492 config LOG_SPL_CONSOLE
493         bool "Allow log output to the console in SPL"
494         depends on LOG_SPL
495         default y
496         help
497           Enables a log driver which writes log records to the console.
498           Generally the console is the serial port or LCD display. Only the
499           log message is shown - other details like level, category, file and
500           line number are omitted.
501
502 config LOG_TEST
503         bool "Provide a test for logging"
504         depends on LOG
505         default y if SANDBOX
506         help
507           This enables a 'log test' command to test logging. It is normally
508           executed from a pytest and simply outputs logging information
509           in various different ways to test that the logging system works
510           correctly with varoius settings.
511
512 config LOG_ERROR_RETURN
513         bool "Log all functions which return an error"
514         depends on LOG
515         help
516           When an error is returned in U-Boot it is sometimes difficult to
517           figure out the root cause. For eaxmple, reading from SPI flash may
518           fail due to a problem in the SPI controller or due to the flash part
519           not returning the expected information. This option changes
520           log_ret() to log any errors it sees. With this option disabled,
521           log_ret() is a nop.
522
523           You can add log_ret() to all functions which return an error code.
524
525 endmenu
526
527 config SUPPORT_RAW_INITRD
528         bool "Enable raw initrd images"
529         help
530           Note, defining the SUPPORT_RAW_INITRD allows user to supply
531           kernel with raw initrd images. The syntax is slightly different, the
532           address of the initrd must be augmented by it's size, in the following
533           format: "<initrd address>:<initrd size>".
534
535 config DEFAULT_FDT_FILE
536         string "Default fdt file"
537         help
538           This option is used to set the default fdt file to boot OS.
539
540 config VERSION_VARIABLE
541         bool "add U-Boot environment variable vers"
542         default n
543         help
544           If this variable is defined, an environment variable
545           named "ver" is created by U-Boot showing the U-Boot
546           version as printed by the "version" command.
547           Any change to this variable will be reverted at the
548           next reset.
549
550 config BOARD_LATE_INIT
551         bool
552         help
553           Sometimes board require some initialization code that might
554           require once the actual init done, example saving board specific env,
555           boot-modes etc. which eventually done at late.
556
557           So this config enable the late init code with the help of board_late_init
558           function which should defined on respective boards.
559
560 config DISPLAY_CPUINFO
561         bool "Display information about the CPU during start up"
562         default y if ARM || NIOS2 || X86 || XTENSA || M68K
563         help
564           Display information about the CPU that U-Boot is running on
565           when U-Boot starts up. The function print_cpuinfo() is called
566           to do this.
567
568 config DISPLAY_BOARDINFO
569         bool "Display information about the board during early start up"
570         default y if ARM || M68K || MIPS || PPC || SANDBOX || XTENSA
571         help
572           Display information about the board that U-Boot is running on
573           when U-Boot starts up. The board function checkboard() is called
574           to do this.
575
576 config DISPLAY_BOARDINFO_LATE
577         bool "Display information about the board during late start up"
578         help
579           Display information about the board that U-Boot is running on after
580           the relocation phase. The board function checkboard() is called to do
581           this.
582
583 menu "Start-up hooks"
584
585 config ARCH_EARLY_INIT_R
586         bool "Call arch-specific init soon after relocation"
587         help
588           With this option U-Boot will call arch_early_init_r() soon after
589           relocation. Driver model is running by this point, and the cache
590           is on. Note that board_early_init_r() is called first, if
591           enabled. This can be used to set up architecture-specific devices.
592
593 config ARCH_MISC_INIT
594         bool "Call arch-specific init after relocation, when console is ready"
595         help
596           With this option U-Boot will call arch_misc_init() after
597           relocation to allow miscellaneous arch-dependent initialisation
598           to be performed. This function should be defined by the board
599           and will be called after the console is set up, after relocaiton.
600
601 config BOARD_EARLY_INIT_F
602         bool "Call board-specific init before relocation"
603         help
604           Some boards need to perform initialisation as soon as possible
605           after boot. With this option, U-Boot calls board_early_init_f()
606           after driver model is ready in the pre-relocation init sequence.
607           Note that the normal serial console is not yet set up, but the
608           debug UART will be available if enabled.
609
610 config BOARD_EARLY_INIT_R
611         bool "Call board-specific init after relocation"
612         help
613           Some boards need to perform initialisation as directly after
614           relocation. With this option, U-Boot calls board_early_init_r()
615           in the post-relocation init sequence.
616
617 config LAST_STAGE_INIT
618         bool "Call board-specific as last setup step"
619         help
620           Some boards need to perform initialisation immediately before control
621           is passed to the command-line interpreter (e.g. for initializations
622           that depend on later phases in the init sequence). With this option,
623           U-Boot calls last_stage_init() before the command-line interpreter is
624           started.
625
626 endmenu
627
628 menu "Security support"
629
630 config HASH
631         bool # "Support hashing API (SHA1, SHA256, etc.)"
632         help
633           This provides a way to hash data in memory using various supported
634           algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
635           and the algorithms it supports are defined in common/hash.c. See
636           also CMD_HASH for command-line access.
637
638 endmenu
639
640 menu "Update support"
641
642 config UPDATE_TFTP
643         bool "Auto-update using fitImage via TFTP"
644         depends on FIT
645         help
646           This option allows performing update of NOR with data in fitImage
647           sent via TFTP boot.
648
649 config UPDATE_TFTP_CNT_MAX
650         int "The number of connection retries during auto-update"
651         default 0
652         depends on UPDATE_TFTP
653
654 config UPDATE_TFTP_MSEC_MAX
655         int "Delay in mSec to wait for the TFTP server during auto-update"
656         default 100
657         depends on UPDATE_TFTP
658
659 endmenu
660
661 source "common/spl/Kconfig"