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