Merge tag 'v2021.10-rc4' into next
[platform/kernel/u-boot.git] / common / Kconfig.boot
1 menu "Boot options"
2
3 menu "Boot images"
4
5 config ANDROID_BOOT_IMAGE
6         bool "Enable support for Android Boot Images"
7         default y if FASTBOOT
8         help
9           This enables support for booting images which use the Android
10           image format header.
11
12 config FIT
13         bool "Support Flattened Image Tree"
14         select HASH
15         select MD5
16         select SHA1
17         imply SHA256
18         help
19           This option allows you to boot the new uImage structure,
20           Flattened Image Tree.  FIT is formally a FDT, which can include
21           images of various types (kernel, FDT blob, ramdisk, etc.)
22           in a single blob.  To boot this new uImage structure,
23           pass the address of the blob to the "bootm" command.
24           FIT is very flexible, supporting compression, multiple images,
25           multiple configurations, verification through hashing and also
26           verified boot (secure boot using RSA).
27
28 if FIT
29
30 config FIT_EXTERNAL_OFFSET
31         hex "FIT external data offset"
32         default 0x0
33         help
34           This specifies a data offset in fit image.
35           The offset is from data payload offset to the beginning of
36           fit image header. When specifies a offset, specific data
37           could be put in the hole between data payload and fit image
38           header, such as CSF data on i.MX platform.
39
40 config FIT_FULL_CHECK
41         bool "Do a full check of the FIT before using it"
42         default y
43         help
44           Enable this do a full check of the FIT to make sure it is valid. This
45           helps to protect against carefully crafted FITs which take advantage
46           of bugs or omissions in the code. This includes a bad structure,
47           multiple root nodes and the like.
48
49 config FIT_SIGNATURE
50         bool "Enable signature verification of FIT uImages"
51         depends on DM
52         select HASH
53         imply RSA
54         imply RSA_VERIFY
55         select IMAGE_SIGN_INFO
56         select FIT_FULL_CHECK
57         help
58           This option enables signature verification of FIT uImages,
59           using a hash signed and verified using RSA. If
60           CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
61           hashing is available using hardware, then the RSA library will use
62           it. See doc/uImage.FIT/signature.txt for more details.
63
64           WARNING: When relying on signed FIT images with a required signature
65           check the legacy image format is disabled by default, so that
66           unsigned images cannot be loaded. If a board needs the legacy image
67           format support in this case, enable it using
68           CONFIG_LEGACY_IMAGE_FORMAT.
69
70 config FIT_SIGNATURE_MAX_SIZE
71         hex "Max size of signed FIT structures"
72         depends on FIT_SIGNATURE
73         default 0x10000000
74         help
75           This option sets a max size in bytes for verified FIT uImages.
76           A sane value of 256MB protects corrupted DTB structures from overlapping
77           device memory. Assure this size does not extend past expected storage
78           space.
79
80 config FIT_RSASSA_PSS
81         bool "Support rsassa-pss signature scheme of FIT image contents"
82         depends on FIT_SIGNATURE
83         help
84           Enable this to support the pss padding algorithm as described
85           in the rfc8017 (https://tools.ietf.org/html/rfc8017).
86
87 config FIT_CIPHER
88         bool "Enable ciphering data in a FIT uImages"
89         depends on DM
90         select AES
91         help
92           Enable the feature of data ciphering/unciphering in the tool mkimage
93           and in the u-boot support of the FIT image.
94
95 config FIT_VERBOSE
96         bool "Show verbose messages when FIT images fail"
97         help
98           Generally a system will have valid FIT images so debug messages
99           are a waste of code space. If you are debugging your images then
100           you can enable this option to get more verbose information about
101           failures.
102
103 config FIT_BEST_MATCH
104         bool "Select the best match for the kernel device tree"
105         help
106           When no configuration is explicitly selected, default to the
107           one whose fdt's compatibility field best matches that of
108           U-Boot itself. A match is considered "best" if it matches the
109           most specific compatibility entry of U-Boot's fdt's root node.
110           The order of entries in the configuration's fdt is ignored.
111
112 config FIT_IMAGE_POST_PROCESS
113         bool "Enable post-processing of FIT artifacts after loading by U-Boot"
114         depends on TI_SECURE_DEVICE || SOCFPGA_SECURE_VAB_AUTH
115         help
116           Allows doing any sort of manipulation to blobs after they got extracted
117           from FIT images like stripping off headers or modifying the size of the
118           blob, verification, authentication, decryption etc. in a platform or
119           board specific way. In order to use this feature a platform or board-
120           specific implementation of board_fit_image_post_process() must be
121           provided. Also, anything done during this post-processing step would
122           need to be comprehended in how the images were prepared before being
123           injected into the FIT creation (i.e. the blobs would have been pre-
124           processed before being added to the FIT image).
125
126 config FIT_PRINT
127         bool "Support FIT printing"
128         default y
129         help
130           Support printing the content of the fitImage in a verbose manner.
131
132 if SPL
133
134 config SPL_FIT
135         bool "Support Flattened Image Tree within SPL"
136         depends on SPL
137         select SPL_HASH
138         select SPL_OF_LIBFDT
139
140 config SPL_FIT_PRINT
141         bool "Support FIT printing within SPL"
142         depends on SPL_FIT
143         help
144           Support printing the content of the fitImage in a verbose manner in SPL.
145
146 config SPL_FIT_FULL_CHECK
147         bool "Do a full check of the FIT before using it"
148         help
149           Enable this do a full check of the FIT to make sure it is valid. This
150           helps to protect against carefully crafted FITs which take advantage
151           of bugs or omissions in the code. This includes a bad structure,
152           multiple root nodes and the like.
153
154
155 config SPL_FIT_SIGNATURE
156         bool "Enable signature verification of FIT firmware within SPL"
157         depends on SPL_DM
158         depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
159         select FIT_SIGNATURE
160         select SPL_FIT
161         select SPL_CRYPTO
162         select SPL_HASH
163         imply SPL_RSA
164         imply SPL_RSA_VERIFY
165         select SPL_IMAGE_SIGN_INFO
166         select SPL_FIT_FULL_CHECK
167
168 config SPL_LOAD_FIT
169         bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
170         select SPL_FIT
171         help
172           Normally with the SPL framework a legacy image is generated as part
173           of the build. This contains U-Boot along with information as to
174           where it should be loaded. This option instead enables generation
175           of a FIT (Flat Image Tree) which provides more flexibility. In
176           particular it can handle selecting from multiple device tree
177           and passing the correct one to U-Boot.
178
179           This path has the following limitations:
180
181           1. "loadables" images, other than FDTs, which do not have a "load"
182              property will not be loaded. This limitation also applies to FPGA
183              images with the correct "compatible" string.
184           2. For FPGA images, only the "compatible" = "u-boot,fpga-legacy"
185              loading method is supported.
186           3. FDTs are only loaded for images with an "os" property of "u-boot".
187              "linux" images are also supported with Falcon boot mode.
188
189 config SPL_LOAD_FIT_ADDRESS
190         hex "load address of fit image"
191         depends on SPL_LOAD_FIT
192         default 0x0
193         help
194           Specify the load address of the fit image that will be loaded
195           by SPL.
196
197 config SPL_LOAD_FIT_APPLY_OVERLAY
198         bool "Enable SPL applying DT overlays from FIT"
199         depends on SPL_LOAD_FIT
200         select OF_LIBFDT_OVERLAY
201         help
202           The device tree is loaded from the FIT image. Allow the SPL is to
203           also load device-tree overlays from the FIT image an apply them
204           over the device tree.
205
206 config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ
207         depends on SPL_LOAD_FIT_APPLY_OVERLAY
208         default 0x10000
209         hex "size of temporary buffer used to load the overlays"
210         help
211           The size of the area where the overlays will be loaded and
212           uncompress. Must be at least as large as biggest overlay
213           (uncompressed)
214
215 config SPL_LOAD_FIT_FULL
216         bool "Enable SPL loading U-Boot as a FIT (full fitImage features)"
217         select SPL_FIT
218         help
219           Normally with the SPL framework a legacy image is generated as part
220           of the build. This contains U-Boot along with information as to
221           where it should be loaded. This option instead enables generation
222           of a FIT (Flat Image Tree) which provides more flexibility. In
223           particular it can handle selecting from multiple device tree
224           and passing the correct one to U-Boot.
225
226 config SPL_FIT_IMAGE_POST_PROCESS
227         bool "Enable post-processing of FIT artifacts after loading by the SPL"
228         depends on SPL_LOAD_FIT
229         help
230           Allows doing any sort of manipulation to blobs after they got extracted
231           from the U-Boot FIT image like stripping off headers or modifying the
232           size of the blob, verification, authentication, decryption etc. in a
233           platform or board specific way. In order to use this feature a platform
234           or board-specific implementation of board_fit_image_post_process() must
235           be provided. Also, anything done during this post-processing step would
236           need to be comprehended in how the images were prepared before being
237           injected into the FIT creation (i.e. the blobs would have been pre-
238           processed before being added to the FIT image).
239
240 config SPL_FIT_SOURCE
241         string ".its source file for U-Boot FIT image"
242         depends on SPL_FIT
243         help
244           Specifies a (platform specific) FIT source file to generate the
245           U-Boot FIT image. This could specify further image to load and/or
246           execute.
247
248 config USE_SPL_FIT_GENERATOR
249         bool "Use a script to generate the .its script"
250         default y if SPL_FIT && (!ARCH_SUNXI && !RISCV)
251
252 config SPL_FIT_GENERATOR
253         string ".its file generator script for U-Boot FIT image"
254         depends on USE_SPL_FIT_GENERATOR
255         default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP
256         default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
257         help
258           Specifies a (platform specific) script file to generate the FIT
259           source file used to build the U-Boot FIT image file. This gets
260           passed a list of supported device tree file stub names to
261           include in the generated image.
262
263 endif # SPL
264
265 endif # FIT
266
267 config LEGACY_IMAGE_FORMAT
268         bool "Enable support for the legacy image format"
269         default y if !FIT_SIGNATURE
270         help
271           This option enables the legacy image format. It is enabled by
272           default for backward compatibility, unless FIT_SIGNATURE is
273           set where it is disabled so that unsigned images cannot be
274           loaded. If a board needs the legacy image format support in this
275           case, enable it here.
276
277 config SUPPORT_RAW_INITRD
278         bool "Enable raw initrd images"
279         help
280           Note, defining the SUPPORT_RAW_INITRD allows user to supply
281           kernel with raw initrd images. The syntax is slightly different, the
282           address of the initrd must be augmented by it's size, in the following
283           format: "<initrd address>:<initrd size>".
284
285 config OF_BOARD_SETUP
286         bool "Set up board-specific details in device tree before boot"
287         depends on OF_LIBFDT
288         help
289           This causes U-Boot to call ft_board_setup() before booting into
290           the Operating System. This function can set up various
291           board-specific information in the device tree for use by the OS.
292           The device tree is then passed to the OS.
293
294 config OF_SYSTEM_SETUP
295         bool "Set up system-specific details in device tree before boot"
296         depends on OF_LIBFDT
297         help
298           This causes U-Boot to call ft_system_setup() before booting into
299           the Operating System. This function can set up various
300           system-specific information in the device tree for use by the OS.
301           The device tree is then passed to the OS.
302
303 config OF_STDOUT_VIA_ALIAS
304         bool "Update the device-tree stdout alias from U-Boot"
305         depends on OF_LIBFDT
306         help
307           This uses U-Boot's serial alias from the aliases node to update
308           the device tree passed to the OS. The "linux,stdout-path" property
309           in the chosen node is set to point to the correct serial node.
310           This option currently references CONFIG_CONS_INDEX, which is
311           incorrect when used with device tree as this option does not
312           exist / should not be used.
313
314 config SYS_EXTRA_OPTIONS
315         string "Extra Options (DEPRECATED)"
316         help
317           The old configuration infrastructure (= mkconfig + boards.cfg)
318           provided the extra options field. If you have something like
319           "HAS_BAR,BAZ=64", the optional options
320             #define CONFIG_HAS
321             #define CONFIG_BAZ  64
322           will be defined in include/config.h.
323           This option was prepared for the smooth migration from the old
324           configuration to Kconfig. Since this option will be removed sometime,
325           new boards should not use this option.
326
327 config HAVE_SYS_TEXT_BASE
328         bool
329         depends on !NIOS2 && !XTENSA
330         depends on !EFI_APP
331         default y
332
333 config SYS_TEXT_BASE
334         depends on HAVE_SYS_TEXT_BASE
335         default 0x0 if POSITION_INDEPENDENT
336         default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3
337         default 0x4a000000 if ARCH_SUNXI && !MACH_SUN9I && !MACH_SUN8I_V3S
338         default 0x2a000000 if ARCH_SUNXI && MACH_SUN9I
339         default 0x42e00000 if ARCH_SUNXI && MACH_SUN8I_V3S
340         hex "Text Base"
341         help
342           The address in memory that U-Boot will be running from, initially.
343
344 config SYS_CLK_FREQ
345         depends on ARC || ARCH_SUNXI || MPC83xx
346         int "CPU clock frequency"
347         help
348           TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
349
350 config ARCH_FIXUP_FDT_MEMORY
351         bool "Enable arch_fixup_memory_banks() call"
352         default y
353         help
354           Enable FDT memory map syncup before OS boot. This feature can be
355           used for booting OS with different memory setup where the part of
356           the memory location should be used for different purpose.
357
358 config CHROMEOS
359         bool "Support booting Chrome OS"
360         help
361           Chrome OS requires U-Boot to set up a table indicating the boot mode
362           (e.g. Developer mode) and a few other things. Enable this if you are
363           booting on a Chromebook to avoid getting an error about an invalid
364           firmware ID.
365
366 config CHROMEOS_VBOOT
367         bool "Support Chrome OS verified boot"
368         help
369           This is intended to enable the full Chrome OS verified boot support
370           in U-Boot. It is not actually implemented in the U-Boot source code
371           at present, so this option is always set to 'n'. It allows
372           distinguishing between booting Chrome OS in a basic way (developer
373           mode) and a full boot.
374
375 config RAMBOOT_PBL
376         bool "Freescale PBL(pre-boot loader) image format support"
377         help
378           Some SoCs use PBL to load RCW and/or pre-initialization instructions.
379           For more details refer to doc/README.pblimage
380
381 config SYS_FSL_PBL_PBI
382         string "PBI(pre-boot instructions) commands for the PBL image"
383         depends on RAMBOOT_PBL
384         help
385           PBI commands can be used to configure SoC before it starts the execution.
386           Please refer doc/README.pblimage for more details.
387
388 config SYS_FSL_PBL_RCW
389         string "Aadditional RCW (Power on reset configuration) for the PBL image"
390         depends on RAMBOOT_PBL
391         help
392           Enables addition of RCW (Power on reset configuration) in built image.
393           Please refer doc/README.pblimage for more details.
394
395 endmenu         # Boot images
396
397 menu "Boot timing"
398
399 config BOOTSTAGE
400         bool "Boot timing and reporting"
401         help
402           Enable recording of boot time while booting. To use it, insert
403           calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
404           bootstage.h. Only a single entry is recorded for each ID. You can
405           give the entry a name with bootstage_mark_name(). You can also
406           record elapsed time in a particular stage using bootstage_start()
407           before starting and bootstage_accum() when finished. Bootstage will
408           add up all the accumulated time and report it.
409
410           Normally, IDs are defined in bootstage.h but a small number of
411           additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
412           as the ID.
413
414           Calls to show_boot_progress() will also result in log entries but
415           these will not have names.
416
417 config SPL_BOOTSTAGE
418         bool "Boot timing and reported in SPL"
419         depends on BOOTSTAGE
420         help
421           Enable recording of boot time in SPL. To make this visible to U-Boot
422           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
423           information when SPL finishes and load it when U-Boot proper starts
424           up.
425
426 config TPL_BOOTSTAGE
427         bool "Boot timing and reported in TPL"
428         depends on BOOTSTAGE
429         help
430           Enable recording of boot time in SPL. To make this visible to U-Boot
431           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
432           information when TPL finishes and load it when U-Boot proper starts
433           up.
434
435 config BOOTSTAGE_REPORT
436         bool "Display a detailed boot timing report before booting the OS"
437         depends on BOOTSTAGE
438         help
439           Enable output of a boot time report just before the OS is booted.
440           This shows how long it took U-Boot to go through each stage of the
441           boot process. The report looks something like this:
442
443                 Timer summary in microseconds:
444                        Mark    Elapsed  Stage
445                           0          0  reset
446                   3,575,678  3,575,678  board_init_f start
447                   3,575,695         17  arch_cpu_init A9
448                   3,575,777         82  arch_cpu_init done
449                   3,659,598     83,821  board_init_r start
450                   3,910,375    250,777  main_loop
451                  29,916,167 26,005,792  bootm_start
452                  30,361,327    445,160  start_kernel
453
454 config BOOTSTAGE_RECORD_COUNT
455         int "Number of boot stage records to store"
456         depends on BOOTSTAGE
457         default 30
458         help
459           This is the size of the bootstage record list and is the maximum
460           number of bootstage records that can be recorded.
461
462 config SPL_BOOTSTAGE_RECORD_COUNT
463         int "Number of boot stage records to store for SPL"
464         depends on SPL_BOOTSTAGE
465         default 5
466         help
467           This is the size of the bootstage record list and is the maximum
468           number of bootstage records that can be recorded.
469
470 config TPL_BOOTSTAGE_RECORD_COUNT
471         int "Number of boot stage records to store for TPL"
472         depends on TPL_BOOTSTAGE
473         default 5
474         help
475           This is the size of the bootstage record list and is the maximum
476           number of bootstage records that can be recorded.
477
478 config BOOTSTAGE_FDT
479         bool "Store boot timing information in the OS device tree"
480         depends on BOOTSTAGE
481         help
482           Stash the bootstage information in the FDT. A root 'bootstage'
483           node is created with each bootstage id as a child. Each child
484           has a 'name' property and either 'mark' containing the
485           mark time in microseconds, or 'accum' containing the
486           accumulated time for that bootstage id in microseconds.
487           For example:
488
489                 bootstage {
490                         154 {
491                                 name = "board_init_f";
492                                 mark = <3575678>;
493                         };
494                         170 {
495                                 name = "lcd";
496                                 accum = <33482>;
497                         };
498                 };
499
500           Code in the Linux kernel can find this in /proc/devicetree.
501
502 config BOOTSTAGE_STASH
503         bool "Stash the boot timing information in memory before booting OS"
504         depends on BOOTSTAGE
505         help
506           Some OSes do not support device tree. Bootstage can instead write
507           the boot timing information in a binary format at a given address.
508           This happens through a call to bootstage_stash(), typically in
509           the CPU's cleanup_before_linux() function. You can use the
510           'bootstage stash' and 'bootstage unstash' commands to do this on
511           the command line.
512
513 config BOOTSTAGE_STASH_ADDR
514         hex "Address to stash boot timing information"
515         default 0
516         help
517           Provide an address which will not be overwritten by the OS when it
518           starts, so that it can read this information when ready.
519
520 config BOOTSTAGE_STASH_SIZE
521         hex "Size of boot timing stash region"
522         default 0x1000
523         help
524           This should be large enough to hold the bootstage stash. A value of
525           4096 (4KiB) is normally plenty.
526
527 config SHOW_BOOT_PROGRESS
528         bool "Show boot progress in a board-specific manner"
529         help
530           Defining this option allows to add some board-specific code (calling
531           a user-provided function show_boot_progress(int) that enables you to
532           show the system's boot progress on some display (for example, some
533           LEDs) on your board. At the moment, the following checkpoints are
534           implemented:
535
536           Legacy uImage format:
537
538           Arg   Where                   When
539             1   common/cmd_bootm.c      before attempting to boot an image
540            -1   common/cmd_bootm.c      Image header has bad     magic number
541             2   common/cmd_bootm.c      Image header has correct magic number
542            -2   common/cmd_bootm.c      Image header has bad     checksum
543             3   common/cmd_bootm.c      Image header has correct checksum
544            -3   common/cmd_bootm.c      Image data   has bad     checksum
545             4   common/cmd_bootm.c      Image data   has correct checksum
546            -4   common/cmd_bootm.c      Image is for unsupported architecture
547             5   common/cmd_bootm.c      Architecture check OK
548            -5   common/cmd_bootm.c      Wrong Image Type (not kernel, multi)
549             6   common/cmd_bootm.c      Image Type check OK
550            -6   common/cmd_bootm.c      gunzip uncompression error
551            -7   common/cmd_bootm.c      Unimplemented compression type
552             7   common/cmd_bootm.c      Uncompression OK
553             8   common/cmd_bootm.c      No uncompress/copy overwrite error
554            -9   common/cmd_bootm.c      Unsupported OS (not Linux, BSD, VxWorks, QNX)
555
556             9   common/image.c          Start initial ramdisk verification
557           -10   common/image.c          Ramdisk header has bad     magic number
558           -11   common/image.c          Ramdisk header has bad     checksum
559            10   common/image.c          Ramdisk header is OK
560           -12   common/image.c          Ramdisk data   has bad     checksum
561            11   common/image.c          Ramdisk data   has correct checksum
562            12   common/image.c          Ramdisk verification complete, start loading
563           -13   common/image.c          Wrong Image Type (not PPC Linux ramdisk)
564            13   common/image.c          Start multifile image verification
565            14   common/image.c          No initial ramdisk, no multifile, continue.
566
567            15   arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
568
569           -30   arch/powerpc/lib/board.c        Fatal error, hang the system
570           -31   post/post.c             POST test failed, detected by post_output_backlog()
571           -32   post/post.c             POST test failed, detected by post_run_single()
572
573            34   common/cmd_doc.c        before loading a Image from a DOC device
574           -35   common/cmd_doc.c        Bad usage of "doc" command
575            35   common/cmd_doc.c        correct usage of "doc" command
576           -36   common/cmd_doc.c        No boot device
577            36   common/cmd_doc.c        correct boot device
578           -37   common/cmd_doc.c        Unknown Chip ID on boot device
579            37   common/cmd_doc.c        correct chip ID found, device available
580           -38   common/cmd_doc.c        Read Error on boot device
581            38   common/cmd_doc.c        reading Image header from DOC device OK
582           -39   common/cmd_doc.c        Image header has bad magic number
583            39   common/cmd_doc.c        Image header has correct magic number
584           -40   common/cmd_doc.c        Error reading Image from DOC device
585            40   common/cmd_doc.c        Image header has correct magic number
586            41   common/cmd_ide.c        before loading a Image from a IDE device
587           -42   common/cmd_ide.c        Bad usage of "ide" command
588            42   common/cmd_ide.c        correct usage of "ide" command
589           -43   common/cmd_ide.c        No boot device
590            43   common/cmd_ide.c        boot device found
591           -44   common/cmd_ide.c        Device not available
592            44   common/cmd_ide.c        Device available
593           -45   common/cmd_ide.c        wrong partition selected
594            45   common/cmd_ide.c        partition selected
595           -46   common/cmd_ide.c        Unknown partition table
596            46   common/cmd_ide.c        valid partition table found
597           -47   common/cmd_ide.c        Invalid partition type
598            47   common/cmd_ide.c        correct partition type
599           -48   common/cmd_ide.c        Error reading Image Header on boot device
600            48   common/cmd_ide.c        reading Image Header from IDE device OK
601           -49   common/cmd_ide.c        Image header has bad magic number
602            49   common/cmd_ide.c        Image header has correct magic number
603           -50   common/cmd_ide.c        Image header has bad     checksum
604            50   common/cmd_ide.c        Image header has correct checksum
605           -51   common/cmd_ide.c        Error reading Image from IDE device
606            51   common/cmd_ide.c        reading Image from IDE device OK
607            52   common/cmd_nand.c       before loading a Image from a NAND device
608           -53   common/cmd_nand.c       Bad usage of "nand" command
609            53   common/cmd_nand.c       correct usage of "nand" command
610           -54   common/cmd_nand.c       No boot device
611            54   common/cmd_nand.c       boot device found
612           -55   common/cmd_nand.c       Unknown Chip ID on boot device
613            55   common/cmd_nand.c       correct chip ID found, device available
614           -56   common/cmd_nand.c       Error reading Image Header on boot device
615            56   common/cmd_nand.c       reading Image Header from NAND device OK
616           -57   common/cmd_nand.c       Image header has bad magic number
617            57   common/cmd_nand.c       Image header has correct magic number
618           -58   common/cmd_nand.c       Error reading Image from NAND device
619            58   common/cmd_nand.c       reading Image from NAND device OK
620
621           -60   common/env_common.c     Environment has a bad CRC, using default
622
623            64   net/eth.c               starting with Ethernet configuration.
624           -64   net/eth.c               no Ethernet found.
625            65   net/eth.c               Ethernet found.
626
627           -80   common/cmd_net.c        usage wrong
628            80   common/cmd_net.c        before calling net_loop()
629           -81   common/cmd_net.c        some error in net_loop() occurred
630            81   common/cmd_net.c        net_loop() back without error
631           -82   common/cmd_net.c        size == 0 (File with size 0 loaded)
632            82   common/cmd_net.c        trying automatic boot
633            83   common/cmd_net.c        running "source" command
634           -83   common/cmd_net.c        some error in automatic boot or "source" command
635            84   common/cmd_net.c        end without errors
636
637           FIT uImage format:
638
639           Arg   Where                   When
640           100   common/cmd_bootm.c      Kernel FIT Image has correct format
641           -100  common/cmd_bootm.c      Kernel FIT Image has incorrect format
642           101   common/cmd_bootm.c      No Kernel subimage unit name, using configuration
643           -101  common/cmd_bootm.c      Can't get configuration for kernel subimage
644           102   common/cmd_bootm.c      Kernel unit name specified
645           -103  common/cmd_bootm.c      Can't get kernel subimage node offset
646           103   common/cmd_bootm.c      Found configuration node
647           104   common/cmd_bootm.c      Got kernel subimage node offset
648           -104  common/cmd_bootm.c      Kernel subimage hash verification failed
649           105   common/cmd_bootm.c      Kernel subimage hash verification OK
650           -105  common/cmd_bootm.c      Kernel subimage is for unsupported architecture
651           106   common/cmd_bootm.c      Architecture check OK
652           -106  common/cmd_bootm.c      Kernel subimage has wrong type
653           107   common/cmd_bootm.c      Kernel subimage type OK
654           -107  common/cmd_bootm.c      Can't get kernel subimage data/size
655           108   common/cmd_bootm.c      Got kernel subimage data/size
656           -108  common/cmd_bootm.c      Wrong image type (not legacy, FIT)
657           -109  common/cmd_bootm.c      Can't get kernel subimage type
658           -110  common/cmd_bootm.c      Can't get kernel subimage comp
659           -111  common/cmd_bootm.c      Can't get kernel subimage os
660           -112  common/cmd_bootm.c      Can't get kernel subimage load address
661           -113  common/cmd_bootm.c      Image uncompress/copy overwrite error
662
663           120   common/image.c          Start initial ramdisk verification
664           -120  common/image.c          Ramdisk FIT image has incorrect format
665           121   common/image.c          Ramdisk FIT image has correct format
666           122   common/image.c          No ramdisk subimage unit name, using configuration
667           -122  common/image.c          Can't get configuration for ramdisk subimage
668           123   common/image.c          Ramdisk unit name specified
669           -124  common/image.c          Can't get ramdisk subimage node offset
670           125   common/image.c          Got ramdisk subimage node offset
671           -125  common/image.c          Ramdisk subimage hash verification failed
672           126   common/image.c          Ramdisk subimage hash verification OK
673           -126  common/image.c          Ramdisk subimage for unsupported architecture
674           127   common/image.c          Architecture check OK
675           -127  common/image.c          Can't get ramdisk subimage data/size
676           128   common/image.c          Got ramdisk subimage data/size
677           129   common/image.c          Can't get ramdisk load address
678           -129  common/image.c          Got ramdisk load address
679
680           -130  common/cmd_doc.c        Incorrect FIT image format
681           131   common/cmd_doc.c        FIT image format OK
682
683           -140  common/cmd_ide.c        Incorrect FIT image format
684           141   common/cmd_ide.c        FIT image format OK
685
686           -150  common/cmd_nand.c       Incorrect FIT image format
687           151   common/cmd_nand.c       FIT image format OK
688
689 endmenu
690
691 menu "Boot media"
692
693 config NOR_BOOT
694         bool "Support for booting from NOR flash"
695         depends on NOR
696         help
697           Enabling this will make a U-Boot binary that is capable of being
698           booted via NOR.  In this case we will enable certain pinmux early
699           as the ROM only partially sets up pinmux.  We also default to using
700           NOR for environment.
701
702 config NAND_BOOT
703         bool "Support for booting from NAND flash"
704         imply MTD_RAW_NAND
705         help
706           Enabling this will make a U-Boot binary that is capable of being
707           booted via NAND flash. This is not a must, some SoCs need this,
708           some not.
709
710 config ONENAND_BOOT
711         bool "Support for booting from ONENAND"
712         imply MTD_RAW_NAND
713         help
714           Enabling this will make a U-Boot binary that is capable of being
715           booted via ONENAND. This is not a must, some SoCs need this,
716           some not.
717
718 config QSPI_BOOT
719         bool "Support for booting from QSPI flash"
720         help
721           Enabling this will make a U-Boot binary that is capable of being
722           booted via QSPI flash. This is not a must, some SoCs need this,
723           some not.
724
725 config SATA_BOOT
726         bool "Support for booting from SATA"
727         help
728           Enabling this will make a U-Boot binary that is capable of being
729           booted via SATA. This is not a must, some SoCs need this,
730           some not.
731
732 config SD_BOOT
733         bool "Support for booting from SD/EMMC"
734         help
735           Enabling this will make a U-Boot binary that is capable of being
736           booted via SD/EMMC. This is not a must, some SoCs need this,
737           some not.
738
739 config SPI_BOOT
740         bool "Support for booting from SPI flash"
741         help
742           Enabling this will make a U-Boot binary that is capable of being
743           booted via SPI flash. This is not a must, some SoCs need this,
744           some not.
745
746 endmenu
747
748 menu "Autoboot options"
749
750 config AUTOBOOT
751         bool "Autoboot"
752         default y
753         help
754           This enables the autoboot.  See doc/README.autoboot for detail.
755
756 config BOOTDELAY
757         int "delay in seconds before automatically booting"
758         default 2
759         depends on AUTOBOOT
760         help
761           Delay before automatically running bootcmd;
762           set to 0 to autoboot with no delay, but you can stop it by key input.
763           set to -1 to disable autoboot.
764           set to -2 to autoboot with no delay and not check for abort
765
766           If this value is >= 0 then it is also used for the default delay
767           before starting the default entry in bootmenu. If it is < 0 then
768           a default value of 10s is used.
769
770           See doc/README.autoboot for details.
771
772 config AUTOBOOT_KEYED
773         bool "Stop autobooting via specific input key / string"
774         help
775           This option enables stopping (aborting) of the automatic
776           boot feature only by issuing a specific input key or
777           string. If not enabled, any input key will abort the
778           U-Boot automatic booting process and bring the device
779           to the U-Boot prompt for user input.
780
781 config AUTOBOOT_FLUSH_STDIN
782         bool "Enable flushing stdin before starting to read the password"
783         depends on AUTOBOOT_KEYED && !SANDBOX
784         help
785           When this option is enabled stdin buffer will be flushed before
786           starting to read the password.
787           This can't be enabled for the sandbox as flushing stdin would
788           break the autoboot unit tests.
789
790 config AUTOBOOT_PROMPT
791         string "Autoboot stop prompt"
792         depends on AUTOBOOT_KEYED
793         default "Autoboot in %d seconds\\n"
794         help
795           This string is displayed before the boot delay selected by
796           CONFIG_BOOTDELAY starts. If it is not defined there is no
797           output indicating that autoboot is in progress.
798
799           Note that this define is used as the (only) argument to a
800           printf() call, so it may contain '%' format specifications,
801           provided that it also includes, sepearated by commas exactly
802           like in a printf statement, the required arguments. It is
803           the responsibility of the user to select only such arguments
804           that are valid in the given context.
805
806 config AUTOBOOT_ENCRYPTION
807         bool "Enable encryption in autoboot stopping"
808         depends on AUTOBOOT_KEYED
809         help
810           This option allows a string to be entered into U-Boot to stop the
811           autoboot.
812           The behavior depends whether CONFIG_CRYPT_PW from lib is enabled
813           or not.
814           In case CONFIG_CRYPT_PW is enabled, the string will be forwarded
815           to the crypt-based functionality and be compared against the
816           string in the environment variable 'bootstopkeycrypt'.
817           In case CONFIG_CRYPT_PW is disabled the string itself is hashed
818           and compared against the hash in the environment variable
819           'bootstopkeysha256'.
820           If it matches in either case then boot stops and
821           a command-line prompt is presented.
822           This provides a way to ship a secure production device which can also
823           be accessed at the U-Boot command line.
824
825 config AUTOBOOT_SHA256_FALLBACK
826         bool "Allow fallback from crypt-hashed password to sha256"
827         depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
828         help
829           This option adds support to fall back from crypt-hashed
830           passwords to checking a SHA256 hashed password in case the
831           'bootstopusesha256' environment variable is set to 'true'.
832
833 config AUTOBOOT_DELAY_STR
834         string "Delay autobooting via specific input key / string"
835         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
836         help
837           This option delays the automatic boot feature by issuing
838           a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
839           or the environment variable "bootdelaykey" is specified
840           and this string is received from console input before
841           autoboot starts booting, U-Boot gives a command prompt. The
842           U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
843           used, otherwise it never times out.
844
845 config AUTOBOOT_STOP_STR
846         string "Stop autobooting via specific input key / string"
847         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
848         help
849           This option enables stopping (aborting) of the automatic
850           boot feature only by issuing a specific input key or
851           string. If CONFIG_AUTOBOOT_STOP_STR or the environment
852           variable "bootstopkey" is specified and this string is
853           received from console input before autoboot starts booting,
854           U-Boot gives a command prompt. The U-Boot prompt never
855           times out, even if CONFIG_BOOT_RETRY_TIME is used.
856
857 config AUTOBOOT_KEYED_CTRLC
858         bool "Enable Ctrl-C autoboot interruption"
859         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
860         help
861           This option allows for the boot sequence to be interrupted
862           by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
863           Setting this variable provides an escape sequence from the
864           limited "password" strings.
865
866 config AUTOBOOT_NEVER_TIMEOUT
867         bool "Make the password entry never time-out"
868         depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION && CRYPT_PW
869         help
870           This option removes the timeout from the password entry
871           when the user first presses the <Enter> key before entering
872           any other character.
873
874 config AUTOBOOT_STOP_STR_ENABLE
875         bool "Enable fixed string to stop autobooting"
876         depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
877         help
878           This option enables the feature to add a fixed stop
879           string that is defined at compile time.
880           In every case it will be tried to load the stop
881           string from the environment.
882           In case this is enabled and there is no stop string
883           in the environment, this will be used as default value.
884
885 config AUTOBOOT_STOP_STR_CRYPT
886         string "Stop autobooting via crypt-hashed password"
887         depends on AUTOBOOT_STOP_STR_ENABLE && CRYPT_PW
888         help
889           This option adds the feature to only stop the autobooting,
890           and therefore boot into the U-Boot prompt, when the input
891           string / password matches a values that is hashed via
892           one of the supported crypt-style password hashing options
893           and saved in the environment variable "bootstopkeycrypt".
894
895 config AUTOBOOT_STOP_STR_SHA256
896         string "Stop autobooting via SHA256 hashed password"
897         depends on AUTOBOOT_STOP_STR_ENABLE
898         help
899           This option adds the feature to only stop the autobooting,
900           and therefore boot into the U-Boot prompt, when the input
901           string / password matches a values that is encypted via
902           a SHA256 hash and saved in the environment variable
903           "bootstopkeysha256". If the value in that variable
904           includes a ":", the portion prior to the ":" will be treated
905           as a salt value.
906
907 config AUTOBOOT_USE_MENUKEY
908         bool "Allow a specify key to run a menu from the environment"
909         depends on !AUTOBOOT_KEYED
910         help
911           If a specific key is pressed to stop autoboot, then the commands in
912           the environment variable 'menucmd' are executed before boot starts.
913
914 config AUTOBOOT_MENUKEY
915         int "ASCII value of boot key to show a menu"
916         default 0
917         depends on AUTOBOOT_USE_MENUKEY
918         help
919           If this key is pressed to stop autoboot, then the commands in the
920           environment variable 'menucmd' will be executed before boot starts.
921           For example, 33 means "!" in ASCII, so pressing ! at boot would take
922           this action.
923
924 config AUTOBOOT_MENU_SHOW
925         bool "Show a menu on boot"
926         depends on CMD_BOOTMENU
927         help
928           This enables the boot menu, controlled by environment variables
929           defined by the board. The menu starts after running the 'preboot'
930           environmnent variable (if enabled) and before handling the boot delay.
931           See README.bootmenu for more details.
932
933 endmenu
934
935 config USE_BOOTARGS
936         bool "Enable boot arguments"
937         help
938           Provide boot arguments to bootm command. Boot arguments are specified
939           in CONFIG_BOOTARGS option. Enable this option to be able to specify
940           CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
941           will be undefined and won't take any space in U-Boot image.
942
943 config BOOTARGS
944         string "Boot arguments"
945         depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
946         help
947           This can be used to pass arguments to the bootm command. The value of
948           CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
949           this value will also override the "chosen" node in FDT blob.
950
951 config BOOTARGS_SUBST
952         bool "Support substituting strings in boot arguments"
953         help
954           This allows substituting string values in the boot arguments. These
955           are applied after the commandline has been built.
956
957           One use for this is to insert the root-disk UUID into the command
958           line where bootargs contains "root=${uuid}"
959
960                 setenv bootargs "console= root=${uuid}"
961                 # Set the 'uuid' environment variable
962                 part uuid mmc 2:2 uuid
963
964                 # Command-line substitution will put the real uuid into the
965                 # kernel command line
966                 bootm
967
968 config USE_BOOTCOMMAND
969         bool "Enable a default value for bootcmd"
970         help
971           Provide a default value for the bootcmd entry in the environment.  If
972           autoboot is enabled this is what will be run automatically.  Enable
973           this option to be able to specify CONFIG_BOOTCOMMAND as a string.  If
974           this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
975           won't take any space in U-Boot image.
976
977 config BOOTCOMMAND
978         string "bootcmd value"
979         depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
980         default "run distro_bootcmd" if DISTRO_DEFAULTS
981         help
982           This is the string of commands that will be used as bootcmd and if
983           AUTOBOOT is set, automatically run.
984
985 config USE_PREBOOT
986         bool "Enable preboot"
987         help
988           When this option is enabled, the existence of the environment
989           variable "preboot" will be checked immediately before starting the
990           CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
991           entering interactive mode.
992
993           This feature is especially useful when "preboot" is automatically
994           generated or modified. For example, the boot code can modify the
995           "preboot" when a user holds down a certain combination of keys.
996
997 config PREBOOT
998         string "preboot default value"
999         depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
1000         default "usb start" if USB_KEYBOARD
1001         default ""
1002         help
1003           This is the default of "preboot" environment variable.
1004
1005 config DEFAULT_FDT_FILE
1006         string "Default fdt file"
1007         help
1008           This option is used to set the default fdt file to boot OS.
1009
1010 endmenu         # Booting