Merge tag 'u-boot-rockchip-20201031' of https://gitlab.denx.de/u-boot/custodians...
[pandora-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 endmenu         # Boot images
347
348 menu "Boot timing"
349
350 config BOOTSTAGE
351         bool "Boot timing and reporting"
352         help
353           Enable recording of boot time while booting. To use it, insert
354           calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
355           bootstage.h. Only a single entry is recorded for each ID. You can
356           give the entry a name with bootstage_mark_name(). You can also
357           record elapsed time in a particular stage using bootstage_start()
358           before starting and bootstage_accum() when finished. Bootstage will
359           add up all the accumulated time and report it.
360
361           Normally, IDs are defined in bootstage.h but a small number of
362           additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
363           as the ID.
364
365           Calls to show_boot_progress() will also result in log entries but
366           these will not have names.
367
368 config SPL_BOOTSTAGE
369         bool "Boot timing and reported in SPL"
370         depends on BOOTSTAGE
371         help
372           Enable recording of boot time in SPL. To make this visible to U-Boot
373           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
374           information when SPL finishes and load it when U-Boot proper starts
375           up.
376
377 config TPL_BOOTSTAGE
378         bool "Boot timing and reported in TPL"
379         depends on BOOTSTAGE
380         help
381           Enable recording of boot time in SPL. To make this visible to U-Boot
382           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
383           information when TPL finishes and load it when U-Boot proper starts
384           up.
385
386 config BOOTSTAGE_REPORT
387         bool "Display a detailed boot timing report before booting the OS"
388         depends on BOOTSTAGE
389         help
390           Enable output of a boot time report just before the OS is booted.
391           This shows how long it took U-Boot to go through each stage of the
392           boot process. The report looks something like this:
393
394                 Timer summary in microseconds:
395                        Mark    Elapsed  Stage
396                           0          0  reset
397                   3,575,678  3,575,678  board_init_f start
398                   3,575,695         17  arch_cpu_init A9
399                   3,575,777         82  arch_cpu_init done
400                   3,659,598     83,821  board_init_r start
401                   3,910,375    250,777  main_loop
402                  29,916,167 26,005,792  bootm_start
403                  30,361,327    445,160  start_kernel
404
405 config BOOTSTAGE_RECORD_COUNT
406         int "Number of boot stage records to store"
407         default 30
408         help
409           This is the size of the bootstage record list and is the maximum
410           number of bootstage records that can be recorded.
411
412 config SPL_BOOTSTAGE_RECORD_COUNT
413         int "Number of boot stage records to store for SPL"
414         default 5
415         help
416           This is the size of the bootstage record list and is the maximum
417           number of bootstage records that can be recorded.
418
419 config TPL_BOOTSTAGE_RECORD_COUNT
420         int "Number of boot stage records to store for TPL"
421         default 5
422         help
423           This is the size of the bootstage record list and is the maximum
424           number of bootstage records that can be recorded.
425
426 config BOOTSTAGE_FDT
427         bool "Store boot timing information in the OS device tree"
428         depends on BOOTSTAGE
429         help
430           Stash the bootstage information in the FDT. A root 'bootstage'
431           node is created with each bootstage id as a child. Each child
432           has a 'name' property and either 'mark' containing the
433           mark time in microseconds, or 'accum' containing the
434           accumulated time for that bootstage id in microseconds.
435           For example:
436
437                 bootstage {
438                         154 {
439                                 name = "board_init_f";
440                                 mark = <3575678>;
441                         };
442                         170 {
443                                 name = "lcd";
444                                 accum = <33482>;
445                         };
446                 };
447
448           Code in the Linux kernel can find this in /proc/devicetree.
449
450 config BOOTSTAGE_STASH
451         bool "Stash the boot timing information in memory before booting OS"
452         depends on BOOTSTAGE
453         help
454           Some OSes do not support device tree. Bootstage can instead write
455           the boot timing information in a binary format at a given address.
456           This happens through a call to bootstage_stash(), typically in
457           the CPU's cleanup_before_linux() function. You can use the
458           'bootstage stash' and 'bootstage unstash' commands to do this on
459           the command line.
460
461 config BOOTSTAGE_STASH_ADDR
462         hex "Address to stash boot timing information"
463         default 0
464         help
465           Provide an address which will not be overwritten by the OS when it
466           starts, so that it can read this information when ready.
467
468 config BOOTSTAGE_STASH_SIZE
469         hex "Size of boot timing stash region"
470         default 0x1000
471         help
472           This should be large enough to hold the bootstage stash. A value of
473           4096 (4KiB) is normally plenty.
474
475 config SHOW_BOOT_PROGRESS
476         bool "Show boot progress in a board-specific manner"
477         help
478           Defining this option allows to add some board-specific code (calling
479           a user-provided function show_boot_progress(int) that enables you to
480           show the system's boot progress on some display (for example, some
481           LEDs) on your board. At the moment, the following checkpoints are
482           implemented:
483
484           Legacy uImage format:
485
486           Arg   Where                   When
487             1   common/cmd_bootm.c      before attempting to boot an image
488            -1   common/cmd_bootm.c      Image header has bad     magic number
489             2   common/cmd_bootm.c      Image header has correct magic number
490            -2   common/cmd_bootm.c      Image header has bad     checksum
491             3   common/cmd_bootm.c      Image header has correct checksum
492            -3   common/cmd_bootm.c      Image data   has bad     checksum
493             4   common/cmd_bootm.c      Image data   has correct checksum
494            -4   common/cmd_bootm.c      Image is for unsupported architecture
495             5   common/cmd_bootm.c      Architecture check OK
496            -5   common/cmd_bootm.c      Wrong Image Type (not kernel, multi)
497             6   common/cmd_bootm.c      Image Type check OK
498            -6   common/cmd_bootm.c      gunzip uncompression error
499            -7   common/cmd_bootm.c      Unimplemented compression type
500             7   common/cmd_bootm.c      Uncompression OK
501             8   common/cmd_bootm.c      No uncompress/copy overwrite error
502            -9   common/cmd_bootm.c      Unsupported OS (not Linux, BSD, VxWorks, QNX)
503
504             9   common/image.c          Start initial ramdisk verification
505           -10   common/image.c          Ramdisk header has bad     magic number
506           -11   common/image.c          Ramdisk header has bad     checksum
507            10   common/image.c          Ramdisk header is OK
508           -12   common/image.c          Ramdisk data   has bad     checksum
509            11   common/image.c          Ramdisk data   has correct checksum
510            12   common/image.c          Ramdisk verification complete, start loading
511           -13   common/image.c          Wrong Image Type (not PPC Linux ramdisk)
512            13   common/image.c          Start multifile image verification
513            14   common/image.c          No initial ramdisk, no multifile, continue.
514
515            15   arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
516
517           -30   arch/powerpc/lib/board.c        Fatal error, hang the system
518           -31   post/post.c             POST test failed, detected by post_output_backlog()
519           -32   post/post.c             POST test failed, detected by post_run_single()
520
521            34   common/cmd_doc.c        before loading a Image from a DOC device
522           -35   common/cmd_doc.c        Bad usage of "doc" command
523            35   common/cmd_doc.c        correct usage of "doc" command
524           -36   common/cmd_doc.c        No boot device
525            36   common/cmd_doc.c        correct boot device
526           -37   common/cmd_doc.c        Unknown Chip ID on boot device
527            37   common/cmd_doc.c        correct chip ID found, device available
528           -38   common/cmd_doc.c        Read Error on boot device
529            38   common/cmd_doc.c        reading Image header from DOC device OK
530           -39   common/cmd_doc.c        Image header has bad magic number
531            39   common/cmd_doc.c        Image header has correct magic number
532           -40   common/cmd_doc.c        Error reading Image from DOC device
533            40   common/cmd_doc.c        Image header has correct magic number
534            41   common/cmd_ide.c        before loading a Image from a IDE device
535           -42   common/cmd_ide.c        Bad usage of "ide" command
536            42   common/cmd_ide.c        correct usage of "ide" command
537           -43   common/cmd_ide.c        No boot device
538            43   common/cmd_ide.c        boot device found
539           -44   common/cmd_ide.c        Device not available
540            44   common/cmd_ide.c        Device available
541           -45   common/cmd_ide.c        wrong partition selected
542            45   common/cmd_ide.c        partition selected
543           -46   common/cmd_ide.c        Unknown partition table
544            46   common/cmd_ide.c        valid partition table found
545           -47   common/cmd_ide.c        Invalid partition type
546            47   common/cmd_ide.c        correct partition type
547           -48   common/cmd_ide.c        Error reading Image Header on boot device
548            48   common/cmd_ide.c        reading Image Header from IDE device OK
549           -49   common/cmd_ide.c        Image header has bad magic number
550            49   common/cmd_ide.c        Image header has correct magic number
551           -50   common/cmd_ide.c        Image header has bad     checksum
552            50   common/cmd_ide.c        Image header has correct checksum
553           -51   common/cmd_ide.c        Error reading Image from IDE device
554            51   common/cmd_ide.c        reading Image from IDE device OK
555            52   common/cmd_nand.c       before loading a Image from a NAND device
556           -53   common/cmd_nand.c       Bad usage of "nand" command
557            53   common/cmd_nand.c       correct usage of "nand" command
558           -54   common/cmd_nand.c       No boot device
559            54   common/cmd_nand.c       boot device found
560           -55   common/cmd_nand.c       Unknown Chip ID on boot device
561            55   common/cmd_nand.c       correct chip ID found, device available
562           -56   common/cmd_nand.c       Error reading Image Header on boot device
563            56   common/cmd_nand.c       reading Image Header from NAND device OK
564           -57   common/cmd_nand.c       Image header has bad magic number
565            57   common/cmd_nand.c       Image header has correct magic number
566           -58   common/cmd_nand.c       Error reading Image from NAND device
567            58   common/cmd_nand.c       reading Image from NAND device OK
568
569           -60   common/env_common.c     Environment has a bad CRC, using default
570
571            64   net/eth.c               starting with Ethernet configuration.
572           -64   net/eth.c               no Ethernet found.
573            65   net/eth.c               Ethernet found.
574
575           -80   common/cmd_net.c        usage wrong
576            80   common/cmd_net.c        before calling net_loop()
577           -81   common/cmd_net.c        some error in net_loop() occurred
578            81   common/cmd_net.c        net_loop() back without error
579           -82   common/cmd_net.c        size == 0 (File with size 0 loaded)
580            82   common/cmd_net.c        trying automatic boot
581            83   common/cmd_net.c        running "source" command
582           -83   common/cmd_net.c        some error in automatic boot or "source" command
583            84   common/cmd_net.c        end without errors
584
585           FIT uImage format:
586
587           Arg   Where                   When
588           100   common/cmd_bootm.c      Kernel FIT Image has correct format
589           -100  common/cmd_bootm.c      Kernel FIT Image has incorrect format
590           101   common/cmd_bootm.c      No Kernel subimage unit name, using configuration
591           -101  common/cmd_bootm.c      Can't get configuration for kernel subimage
592           102   common/cmd_bootm.c      Kernel unit name specified
593           -103  common/cmd_bootm.c      Can't get kernel subimage node offset
594           103   common/cmd_bootm.c      Found configuration node
595           104   common/cmd_bootm.c      Got kernel subimage node offset
596           -104  common/cmd_bootm.c      Kernel subimage hash verification failed
597           105   common/cmd_bootm.c      Kernel subimage hash verification OK
598           -105  common/cmd_bootm.c      Kernel subimage is for unsupported architecture
599           106   common/cmd_bootm.c      Architecture check OK
600           -106  common/cmd_bootm.c      Kernel subimage has wrong type
601           107   common/cmd_bootm.c      Kernel subimage type OK
602           -107  common/cmd_bootm.c      Can't get kernel subimage data/size
603           108   common/cmd_bootm.c      Got kernel subimage data/size
604           -108  common/cmd_bootm.c      Wrong image type (not legacy, FIT)
605           -109  common/cmd_bootm.c      Can't get kernel subimage type
606           -110  common/cmd_bootm.c      Can't get kernel subimage comp
607           -111  common/cmd_bootm.c      Can't get kernel subimage os
608           -112  common/cmd_bootm.c      Can't get kernel subimage load address
609           -113  common/cmd_bootm.c      Image uncompress/copy overwrite error
610
611           120   common/image.c          Start initial ramdisk verification
612           -120  common/image.c          Ramdisk FIT image has incorrect format
613           121   common/image.c          Ramdisk FIT image has correct format
614           122   common/image.c          No ramdisk subimage unit name, using configuration
615           -122  common/image.c          Can't get configuration for ramdisk subimage
616           123   common/image.c          Ramdisk unit name specified
617           -124  common/image.c          Can't get ramdisk subimage node offset
618           125   common/image.c          Got ramdisk subimage node offset
619           -125  common/image.c          Ramdisk subimage hash verification failed
620           126   common/image.c          Ramdisk subimage hash verification OK
621           -126  common/image.c          Ramdisk subimage for unsupported architecture
622           127   common/image.c          Architecture check OK
623           -127  common/image.c          Can't get ramdisk subimage data/size
624           128   common/image.c          Got ramdisk subimage data/size
625           129   common/image.c          Can't get ramdisk load address
626           -129  common/image.c          Got ramdisk load address
627
628           -130  common/cmd_doc.c        Incorrect FIT image format
629           131   common/cmd_doc.c        FIT image format OK
630
631           -140  common/cmd_ide.c        Incorrect FIT image format
632           141   common/cmd_ide.c        FIT image format OK
633
634           -150  common/cmd_nand.c       Incorrect FIT image format
635           151   common/cmd_nand.c       FIT image format OK
636
637 endmenu
638
639 menu "Boot media"
640
641 config NOR_BOOT
642         bool "Support for booting from NOR flash"
643         depends on NOR
644         help
645           Enabling this will make a U-Boot binary that is capable of being
646           booted via NOR.  In this case we will enable certain pinmux early
647           as the ROM only partially sets up pinmux.  We also default to using
648           NOR for environment.
649
650 config NAND_BOOT
651         bool "Support for booting from NAND flash"
652         default n
653         imply MTD_RAW_NAND
654         help
655           Enabling this will make a U-Boot binary that is capable of being
656           booted via NAND flash. This is not a must, some SoCs need this,
657           some not.
658
659 config ONENAND_BOOT
660         bool "Support for booting from ONENAND"
661         default n
662         imply MTD_RAW_NAND
663         help
664           Enabling this will make a U-Boot binary that is capable of being
665           booted via ONENAND. This is not a must, some SoCs need this,
666           some not.
667
668 config QSPI_BOOT
669         bool "Support for booting from QSPI flash"
670         default n
671         help
672           Enabling this will make a U-Boot binary that is capable of being
673           booted via QSPI flash. This is not a must, some SoCs need this,
674           some not.
675
676 config SATA_BOOT
677         bool "Support for booting from SATA"
678         default n
679         help
680           Enabling this will make a U-Boot binary that is capable of being
681           booted via SATA. This is not a must, some SoCs need this,
682           some not.
683
684 config SD_BOOT
685         bool "Support for booting from SD/EMMC"
686         default n
687         help
688           Enabling this will make a U-Boot binary that is capable of being
689           booted via SD/EMMC. This is not a must, some SoCs need this,
690           some not.
691
692 config SPI_BOOT
693         bool "Support for booting from SPI flash"
694         default n
695         help
696           Enabling this will make a U-Boot binary that is capable of being
697           booted via SPI flash. This is not a must, some SoCs need this,
698           some not.
699
700 endmenu
701
702 menu "Autoboot options"
703
704 config AUTOBOOT
705         bool "Autoboot"
706         default y
707         help
708           This enables the autoboot.  See doc/README.autoboot for detail.
709
710 config BOOTDELAY
711         int "delay in seconds before automatically booting"
712         default 2
713         depends on AUTOBOOT
714         help
715           Delay before automatically running bootcmd;
716           set to 0 to autoboot with no delay, but you can stop it by key input.
717           set to -1 to disable autoboot.
718           set to -2 to autoboot with no delay and not check for abort
719
720           If this value is >= 0 then it is also used for the default delay
721           before starting the default entry in bootmenu. If it is < 0 then
722           a default value of 10s is used.
723
724           See doc/README.autoboot for details.
725
726 config AUTOBOOT_KEYED
727         bool "Stop autobooting via specific input key / string"
728         default n
729         help
730           This option enables stopping (aborting) of the automatic
731           boot feature only by issuing a specific input key or
732           string. If not enabled, any input key will abort the
733           U-Boot automatic booting process and bring the device
734           to the U-Boot prompt for user input.
735
736 config AUTOBOOT_PROMPT
737         string "Autoboot stop prompt"
738         depends on AUTOBOOT_KEYED
739         default "Autoboot in %d seconds\\n"
740         help
741           This string is displayed before the boot delay selected by
742           CONFIG_BOOTDELAY starts. If it is not defined there is no
743           output indicating that autoboot is in progress.
744
745           Note that this define is used as the (only) argument to a
746           printf() call, so it may contain '%' format specifications,
747           provided that it also includes, sepearated by commas exactly
748           like in a printf statement, the required arguments. It is
749           the responsibility of the user to select only such arguments
750           that are valid in the given context.
751
752 config AUTOBOOT_ENCRYPTION
753         bool "Enable encryption in autoboot stopping"
754         depends on AUTOBOOT_KEYED
755         help
756           This option allows a string to be entered into U-Boot to stop the
757           autoboot. The string itself is hashed and compared against the hash
758           in the environment variable 'bootstopkeysha256'. If it matches then
759           boot stops and a command-line prompt is presented.
760
761           This provides a way to ship a secure production device which can also
762           be accessed at the U-Boot command line.
763
764 config AUTOBOOT_DELAY_STR
765         string "Delay autobooting via specific input key / string"
766         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
767         help
768           This option delays the automatic boot feature by issuing
769           a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
770           or the environment variable "bootdelaykey" is specified
771           and this string is received from console input before
772           autoboot starts booting, U-Boot gives a command prompt. The
773           U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
774           used, otherwise it never times out.
775
776 config AUTOBOOT_STOP_STR
777         string "Stop autobooting via specific input key / string"
778         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
779         help
780           This option enables stopping (aborting) of the automatic
781           boot feature only by issuing a specific input key or
782           string. If CONFIG_AUTOBOOT_STOP_STR or the environment
783           variable "bootstopkey" is specified and this string is
784           received from console input before autoboot starts booting,
785           U-Boot gives a command prompt. The U-Boot prompt never
786           times out, even if CONFIG_BOOT_RETRY_TIME is used.
787
788 config AUTOBOOT_KEYED_CTRLC
789         bool "Enable Ctrl-C autoboot interruption"
790         depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
791         default n
792         help
793           This option allows for the boot sequence to be interrupted
794           by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
795           Setting this variable provides an escape sequence from the
796           limited "password" strings.
797
798 config AUTOBOOT_STOP_STR_SHA256
799         string "Stop autobooting via SHA256 encrypted password"
800         depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
801         help
802           This option adds the feature to only stop the autobooting,
803           and therefore boot into the U-Boot prompt, when the input
804           string / password matches a values that is encypted via
805           a SHA256 hash and saved in the environment.
806
807 config AUTOBOOT_USE_MENUKEY
808         bool "Allow a specify key to run a menu from the environment"
809         depends on !AUTOBOOT_KEYED
810         help
811           If a specific key is pressed to stop autoboot, then the commands in
812           the environment variable 'menucmd' are executed before boot starts.
813
814 config AUTOBOOT_MENUKEY
815         int "ASCII value of boot key to show a menu"
816         default 0
817         depends on AUTOBOOT_USE_MENUKEY
818         help
819           If this key is pressed to stop autoboot, then the commands in the
820           environment variable 'menucmd' will be executed before boot starts.
821           For example, 33 means "!" in ASCII, so pressing ! at boot would take
822           this action.
823
824 config AUTOBOOT_MENU_SHOW
825         bool "Show a menu on boot"
826         depends on CMD_BOOTMENU
827         help
828           This enables the boot menu, controlled by environment variables
829           defined by the board. The menu starts after running the 'preboot'
830           environmnent variable (if enabled) and before handling the boot delay.
831           See README.bootmenu for more details.
832
833 endmenu
834
835 config USE_BOOTARGS
836         bool "Enable boot arguments"
837         help
838           Provide boot arguments to bootm command. Boot arguments are specified
839           in CONFIG_BOOTARGS option. Enable this option to be able to specify
840           CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
841           will be undefined and won't take any space in U-Boot image.
842
843 config BOOTARGS
844         string "Boot arguments"
845         depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
846         help
847           This can be used to pass arguments to the bootm command. The value of
848           CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
849           this value will also override the "chosen" node in FDT blob.
850
851 config USE_BOOTCOMMAND
852         bool "Enable a default value for bootcmd"
853         help
854           Provide a default value for the bootcmd entry in the environment.  If
855           autoboot is enabled this is what will be run automatically.  Enable
856           this option to be able to specify CONFIG_BOOTCOMMAND as a string.  If
857           this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
858           won't take any space in U-Boot image.
859
860 config BOOTCOMMAND
861         string "bootcmd value"
862         depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
863         default "run distro_bootcmd" if DISTRO_DEFAULTS
864         help
865           This is the string of commands that will be used as bootcmd and if
866           AUTOBOOT is set, automatically run.
867
868 config USE_PREBOOT
869         bool "Enable preboot"
870         help
871           When this option is enabled, the existence of the environment
872           variable "preboot" will be checked immediately before starting the
873           CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
874           entering interactive mode.
875
876           This feature is especially useful when "preboot" is automatically
877           generated or modified. For example, the boot code can modify the
878           "preboot" when a user holds down a certain combination of keys.
879
880 config PREBOOT
881         string "preboot default value"
882         depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
883         default "usb start" if USB_KEYBOARD
884         default ""
885         help
886           This is the default of "preboot" environment variable.
887
888 config DEFAULT_FDT_FILE
889         string "Default fdt file"
890         help
891           This option is used to set the default fdt file to boot OS.
892
893 endmenu         # Booting