Merge patch series "sysinfo: Expand sysinfo with some more banner information"
[pandora-u-boot.git] / boot / Kconfig
1 menu "Boot options"
2
3 menu "Boot images"
4
5 config ANDROID_BOOT_IMAGE
6         bool "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 TIMESTAMP
13         bool "Show image date and time when displaying image information"
14         default y if CMD_DATE
15         help
16           When CONFIG_TIMESTAMP is selected, the timestamp (date and time) of
17           an image is printed by image commands like bootm or iminfo. This
18           is shown as 'Timestamp: xxx' and 'Created: xxx'. If this option is
19           enabled, then U-Boot requires FITs to have a timestamp. If a FIT is
20           loaded that does not, the message 'Wrong FIT format: no timestamp'
21           is shown.
22
23 menuconfig FIT
24         bool "Flattened Image Tree (FIT)"
25         select HASH
26         select MD5
27         select SHA1
28         imply SHA256
29         help
30           This option allows you to boot the new uImage structure,
31           Flattened Image Tree.  FIT is formally a FDT, which can include
32           images of various types (kernel, FDT blob, ramdisk, etc.)
33           in a single blob.  To boot this new uImage structure,
34           pass the address of the blob to the "bootm" command.
35           FIT is very flexible, supporting compression, multiple images,
36           multiple configurations, verification through hashing and also
37           verified boot (secure boot using RSA).
38
39 if FIT
40
41 config FIT_EXTERNAL_OFFSET
42         hex "FIT external data offset"
43         default 0x0
44         help
45           This specifies a data offset in fit image.
46           The offset is from data payload offset to the beginning of
47           fit image header. When specifies a offset, specific data
48           could be put in the hole between data payload and fit image
49           header, such as CSF data on i.MX platform.
50
51 config FIT_FULL_CHECK
52         bool "Do a full check of the FIT before using it"
53         default y
54         help
55           Enable this do a full check of the FIT to make sure it is valid. This
56           helps to protect against carefully crafted FITs which take advantage
57           of bugs or omissions in the code. This includes a bad structure,
58           multiple root nodes and the like.
59
60 config FIT_SIGNATURE
61         bool "Enable signature verification of FIT uImages"
62         depends on DM
63         select HASH
64         imply RSA
65         imply RSA_VERIFY
66         select IMAGE_SIGN_INFO
67         select FIT_FULL_CHECK
68         help
69           This option enables signature verification of FIT uImages,
70           using a hash signed and verified using RSA. If
71           CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
72           hashing is available using hardware, then the RSA library will use
73           it. See doc/uImage.FIT/signature.txt for more details.
74
75           WARNING: When relying on signed FIT images with a required signature
76           check the legacy image format is disabled by default, so that
77           unsigned images cannot be loaded. If a board needs the legacy image
78           format support in this case, enable it using
79           CONFIG_LEGACY_IMAGE_FORMAT.
80
81 config FIT_SIGNATURE_MAX_SIZE
82         hex "Max size of signed FIT structures"
83         depends on FIT_SIGNATURE
84         default 0x10000000
85         help
86           This option sets a max size in bytes for verified FIT uImages.
87           A sane value of 256MB protects corrupted DTB structures from overlapping
88           device memory. Assure this size does not extend past expected storage
89           space.
90
91 config FIT_RSASSA_PSS
92         bool "Support rsassa-pss signature scheme of FIT image contents"
93         depends on FIT_SIGNATURE
94         help
95           Enable this to support the pss padding algorithm as described
96           in the rfc8017 (https://tools.ietf.org/html/rfc8017).
97
98 config FIT_CIPHER
99         bool "Enable ciphering data in a FIT uImages"
100         depends on DM
101         select AES
102         help
103           Enable the feature of data ciphering/unciphering in the tool mkimage
104           and in the u-boot support of the FIT image.
105
106 config FIT_VERBOSE
107         bool "Show verbose messages when FIT images fail"
108         help
109           Generally a system will have valid FIT images so debug messages
110           are a waste of code space. If you are debugging your images then
111           you can enable this option to get more verbose information about
112           failures.
113
114 config FIT_BEST_MATCH
115         bool "Select the best match for the kernel device tree"
116         help
117           When no configuration is explicitly selected, default to the
118           one whose fdt's compatibility field best matches that of
119           U-Boot itself. A match is considered "best" if it matches the
120           most specific compatibility entry of U-Boot's fdt's root node.
121           The order of entries in the configuration's fdt is ignored.
122
123 config FIT_IMAGE_POST_PROCESS
124         bool "Enable post-processing of FIT artifacts after loading by U-Boot"
125         depends on SOCFPGA_SECURE_VAB_AUTH
126         help
127           Allows doing any sort of manipulation to blobs after they got extracted
128           from FIT images like stripping off headers or modifying the size of the
129           blob, verification, authentication, decryption etc. in a platform or
130           board specific way. In order to use this feature a platform or board-
131           specific implementation of board_fit_image_post_process() must be
132           provided. Also, anything done during this post-processing step would
133           need to be comprehended in how the images were prepared before being
134           injected into the FIT creation (i.e. the blobs would have been pre-
135           processed before being added to the FIT image).
136
137 config FIT_PRINT
138         bool "Support FIT printing"
139         default y
140         help
141           Support printing the content of the fitImage in a verbose manner.
142
143 config SPL_FIT
144         bool "Support Flattened Image Tree within SPL"
145         depends on SPL
146         select SPL_HASH
147         select SPL_OF_LIBFDT
148
149 config SPL_FIT_PRINT
150         bool "Support FIT printing within SPL"
151         depends on SPL_FIT
152         help
153           Support printing the content of the fitImage in a verbose manner in SPL.
154
155 config SPL_FIT_FULL_CHECK
156         bool "Do a full check of the FIT before using it"
157         depends on SPL_FIT
158         help
159           Enable this do a full check of the FIT to make sure it is valid. This
160           helps to protect against carefully crafted FITs which take advantage
161           of bugs or omissions in the code. This includes a bad structure,
162           multiple root nodes and the like.
163
164 config SPL_FIT_SIGNATURE
165         bool "Enable signature verification of FIT firmware within SPL"
166         depends on SPL_DM
167         depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
168         select FIT_SIGNATURE
169         select SPL_FIT
170         select SPL_CRYPTO
171         select SPL_HASH
172         imply SPL_RSA
173         imply SPL_RSA_VERIFY
174         select SPL_IMAGE_SIGN_INFO
175         select SPL_FIT_FULL_CHECK
176
177 config SPL_FIT_SIGNATURE_MAX_SIZE
178         hex "Max size of signed FIT structures in SPL"
179         depends on SPL_FIT_SIGNATURE
180         default 0x10000000
181         help
182           This option sets a max size in bytes for verified FIT uImages.
183           A sane value of 256MB protects corrupted DTB structures from overlapping
184           device memory. Assure this size does not extend past expected storage
185           space.
186
187 config SPL_FIT_RSASSA_PSS
188         bool "Support rsassa-pss signature scheme of FIT image contents in SPL"
189         depends on SPL_FIT_SIGNATURE
190         help
191           Enable this to support the pss padding algorithm as described
192           in the rfc8017 (https://tools.ietf.org/html/rfc8017) in SPL.
193
194 config SPL_LOAD_FIT
195         bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
196         depends on SPL
197         select SPL_FIT
198         help
199           Normally with the SPL framework a legacy image is generated as part
200           of the build. This contains U-Boot along with information as to
201           where it should be loaded. This option instead enables generation
202           of a FIT (Flat Image Tree) which provides more flexibility. In
203           particular it can handle selecting from multiple device tree
204           and passing the correct one to U-Boot.
205
206           This path has the following limitations:
207
208           1. "loadables" images, other than FDTs, which do not have a "load"
209              property will not be loaded. This limitation also applies to FPGA
210              images with the correct "compatible" string.
211           2. For FPGA images, the supported "compatible" list is in the
212              doc/uImage.FIT/source_file_format.txt.
213           3. FDTs are only loaded for images with an "os" property of "u-boot".
214              "linux" images are also supported with Falcon boot mode.
215
216 config SPL_LOAD_FIT_ADDRESS
217         hex "load address of fit image"
218         depends on SPL_LOAD_FIT
219         default 0x0
220         help
221           Specify the load address of the fit image that will be loaded
222           by SPL.
223
224 config SPL_LOAD_FIT_APPLY_OVERLAY
225         bool "Enable SPL applying DT overlays from FIT"
226         depends on SPL_LOAD_FIT
227         select OF_LIBFDT_OVERLAY
228         help
229           The device tree is loaded from the FIT image. Allow the SPL to
230           also load device-tree overlays from the FIT image an apply them
231           over the device tree.
232
233 config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ
234         depends on SPL_LOAD_FIT_APPLY_OVERLAY
235         default 0x10000
236         hex "size of temporary buffer used to load the overlays"
237         help
238           The size of the area where the overlays will be loaded and
239           uncompress. Must be at least as large as biggest overlay
240           (uncompressed)
241
242 config SPL_LOAD_FIT_FULL
243         bool "Enable SPL loading U-Boot as a FIT (full fitImage features)"
244         select SPL_FIT
245         help
246           Normally with the SPL framework a legacy image is generated as part
247           of the build. This contains U-Boot along with information as to
248           where it should be loaded. This option instead enables generation
249           of a FIT (Flat Image Tree) which provides more flexibility. In
250           particular it can handle selecting from multiple device tree
251           and passing the correct one to U-Boot.
252
253 config SPL_FIT_IMAGE_POST_PROCESS
254         bool "Enable post-processing of FIT artifacts after loading by the SPL"
255         depends on SPL_LOAD_FIT
256         default y if TI_SECURE_DEVICE
257         help
258           Allows doing any sort of manipulation to blobs after they got extracted
259           from the U-Boot FIT image like stripping off headers or modifying the
260           size of the blob, verification, authentication, decryption etc. in a
261           platform or board specific way. In order to use this feature a platform
262           or board-specific implementation of board_fit_image_post_process() must
263           be provided. Also, anything done during this post-processing step would
264           need to be comprehended in how the images were prepared before being
265           injected into the FIT creation (i.e. the blobs would have been pre-
266           processed before being added to the FIT image).
267
268 config SPL_FIT_SOURCE
269         string ".its source file for U-Boot FIT image"
270         depends on SPL_FIT
271         help
272           Specifies a (platform specific) FIT source file to generate the
273           U-Boot FIT image. This could specify further image to load and/or
274           execute.
275
276 config USE_SPL_FIT_GENERATOR
277         bool "Use a script to generate the .its script"
278         depends on SPL_FIT
279         default y if SPL_FIT && ARCH_ZYNQMP
280
281 config SPL_FIT_GENERATOR
282         string ".its file generator script for U-Boot FIT image"
283         depends on USE_SPL_FIT_GENERATOR
284         default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
285         help
286           Specifies a (platform specific) script file to generate the FIT
287           source file used to build the U-Boot FIT image file. This gets
288           passed a list of supported device tree file stub names to
289           include in the generated image.
290
291 if VPL
292
293 config VPL_FIT
294         bool "Support Flattened Image Tree within VPL"
295         depends on VPL
296         default y
297         select VPL_HASH
298         select VPL_OF_LIBFDT
299
300 config VPL_FIT_PRINT
301         bool "Support FIT printing within VPL"
302         depends on VPL_FIT
303         default y
304         help
305           Support printing the content of the fitImage in a verbose manner in VPL.
306
307 config VPL_FIT_FULL_CHECK
308         bool "Do a full check of the FIT before using it"
309         default y
310         help
311           Enable this do a full check of the FIT to make sure it is valid. This
312           helps to protect against carefully crafted FITs which take advantage
313           of bugs or omissions in the code. This includes a bad structure,
314           multiple root nodes and the like.
315
316 config VPL_FIT_SIGNATURE
317         bool "Enable signature verification of FIT firmware within VPL"
318         depends on VPL_DM
319         default y
320         select FIT_SIGNATURE
321         select VPL_FIT
322         select VPL_CRYPTO
323         select VPL_HASH
324         imply VPL_RSA
325         imply VPL_RSA_VERIFY
326         select VPL_IMAGE_SIGN_INFO
327         select VPL_FIT_FULL_CHECK
328
329 config VPL_FIT_SIGNATURE_MAX_SIZE
330         hex "Max size of signed FIT structures in VPL"
331         depends on VPL_FIT_SIGNATURE
332         default 0x10000000
333         help
334           This option sets a max size in bytes for verified FIT uImages.
335           A sane value of 256MB protects corrupted DTB structures from overlapping
336           device memory. Assure this size does not extend past expected storage
337           space.
338
339 endif # VPL
340
341 endif # FIT
342
343 config PXE_UTILS
344         bool
345         select MENU
346         help
347           Utilities for parsing PXE file formats.
348
349 config BOOT_DEFAULTS_FEATURES
350         bool
351         select SUPPORT_RAW_INITRD
352         select ENV_VARS_UBOOT_CONFIG
353         imply USB_STORAGE
354         imply EFI_PARTITION
355         imply ISO_PARTITION
356
357 config BOOT_DEFAULTS_CMDS
358         bool
359         imply USE_BOOTCOMMAND
360         select CMD_ENV_EXISTS
361         select CMD_EXT2
362         select CMD_EXT4
363         select CMD_FAT
364         select CMD_FS_GENERIC
365         select CMD_PART if PARTITIONS
366         select CMD_DHCP if CMD_NET
367         select CMD_PING if CMD_NET
368         select CMD_PXE if CMD_NET
369         select CMD_BOOTI if ARM64
370         select CMD_BOOTZ if ARM && !ARM64
371         imply CMD_MII if NET
372
373 config BOOT_DEFAULTS
374         bool  # Common defaults for standard boot and distroboot
375         select BOOT_DEFAULTS_FEATURES
376         select BOOT_DEFAULTS_CMDS if CMDLINE
377         help
378           These are not required but are commonly needed to support a good
379           selection of booting methods. Enable this to improve the capability
380           of U-Boot to boot various images. Currently much functionality is
381           tied to enabling the command that exercises it.
382
383 menuconfig BOOTSTD
384         bool "Standard boot"
385         default y
386         depends on DM && OF_CONTROL && BLK
387         help
388           U-Boot supports a standard way of locating something to boot,
389           typically an Operating System such as Linux, provided by a distro such
390           as Arch Linux or Debian. Enable this to support iterating through
391           available bootdevs and using bootmeths to find bootflows suitable for
392           booting.
393
394           Standard boot is not a standard way of booting, just a framework
395           within U-Boot for supporting all the different ways that exist.
396
397           Terminology:
398
399             - bootdev - a device which can hold a distro (e.g. MMC)
400             - bootmeth - a method to scan a bootdev to find bootflows (owned by
401                 U-Boot)
402             - bootflow - a description of how to boot (owned by the distro)
403
404 if BOOTSTD
405
406 config SPL_BOOTSTD
407         bool "Standard boot support in SPL"
408         depends on SPL && SPL_DM && SPL_OF_CONTROL && SPL_BLK
409         default y if VPL
410         help
411           This enables standard boot in SPL. This is neeeded so that VBE
412           (Verified Boot for Embedded) can be used, since it depends on standard
413           boot. It is enabled by default since the main purpose of VPL is to
414           handle the firmware part of VBE.
415
416 config VPL_BOOTSTD
417         bool "Standard boot support in VPL"
418         depends on VPL && VPL_DM && VPL_OF_CONTROL && VPL_BLK
419         default y
420         help
421           This enables standard boot in SPL. This is neeeded so that VBE
422           (Verified Boot for Embedded) can be used, since it depends on standard
423           boot. It is enabled by default since the main purpose of VPL is to
424           handle the firmware part of VBE.
425
426 config BOOTSTD_FULL
427         bool "Enhanced features for standard boot"
428         default y if SANDBOX
429         help
430           This enables various useful features for standard boot, which are not
431           essential for operation:
432
433           - bootdev, bootmeth commands
434           - extra features in the bootflow command
435           - support for selecting the ordering of bootmeths ("bootmeth order")
436           - support for selecting the ordering of bootdevs using the devicetree
437             as well as the "boot_targets" environment variable
438
439 config BOOTSTD_DEFAULTS
440         bool "Select some common defaults for standard boot"
441         depends on BOOTSTD
442         select BOOT_DEFAULTS
443         select BOOTMETH_DISTRO
444         help
445           These are not required but are commonly needed to support a good
446           selection of booting methods. Enable this to improve the capability
447           of U-Boot to boot various images.
448
449 config BOOTSTD_BOOTCOMMAND
450         bool "Use bootstd to boot"
451         default y if !DISTRO_DEFAULTS
452         help
453           Enable this to select a default boot-command suitable for booting
454           with standard boot. This can be overridden by the board if needed,
455           but the default command should be enough for most boards which use
456           standard boot.
457
458           For now this is only selected if distro boot is NOT used, since
459           standard boot does not support all of the features of distro boot
460           yet.
461
462 config BOOTMETH_GLOBAL
463         bool
464         help
465           Add support for global bootmeths. This feature is used by VBE and
466           EFI bootmgr, since they take full control over which bootdevs are
467           selected to boot.
468
469 config BOOTMETH_CROS
470         bool "Bootdev support for Chromium OS"
471         depends on X86 || ARM || SANDBOX
472         default y if !ARM
473         select EFI_PARTITION
474         select PARTITION_TYPE_GUID
475         select PARTITION_UUIDS
476         help
477           Enables support for booting Chromium OS using bootdevs. This uses the
478           kernel A slot and obtains the kernel command line from the parameters
479           provided there.
480
481           Note that only x86 devices are supported at present.
482
483 config BOOTMETH_EXTLINUX
484         bool "Bootdev support for extlinux boot"
485         select PXE_UTILS
486         default y
487         help
488           Enables support for extlinux boot using bootdevs. This makes the
489           bootdevs look for a 'extlinux/extlinux.conf' on each filesystem
490           they scan.
491
492           The specification for this filed is here:
493
494             https://uapi-group.org/specifications/specs/boot_loader_specification/
495
496           This provides a way to try out standard boot on an existing boot flow.
497
498 config BOOTMETH_EXTLINUX_PXE
499         bool "Bootdev support for extlinux boot over network"
500         depends on CMD_PXE && CMD_NET && DM_ETH
501         default y
502         help
503           Enables support for extlinux boot using bootdevs. This makes the
504           bootdevs look for a 'extlinux/extlinux.conf' on the tftp server.
505
506           The specification for this file is here:
507
508             https://uapi-group.org/specifications/specs/boot_loader_specification/
509
510           This provides a way to try out standard boot on an existing boot flow.
511
512 config BOOTMETH_EFILOADER
513         bool "Bootdev support for EFI boot"
514         depends on CMD_BOOTEFI
515         default y
516         help
517           Enables support for EFI boot using bootdevs. This makes the
518           bootdevs look for a 'boot<arch>.efi' on each filesystem
519           they scan. The resulting file is booted after enabling U-Boot's
520           EFI loader support.
521
522           The <arch> depends on the architecture of the board:
523
524              aa64      - aarch64 (ARM 64-bit)
525              arm       - ARM 32-bit
526              ia32      - x86 32-bit
527              x64       - x86 64-bit
528              riscv32   - RISC-V 32-bit
529              riscv64   - RISC-V 64-bit
530
531           This provides a way to try out standard boot on an existing boot flow.
532
533 config BOOTMETH_VBE
534         bool "Bootdev support for Verified Boot for Embedded"
535         depends on FIT
536         default y
537         select BOOTMETH_GLOBAL
538         select EVENT
539         help
540           Enables support for VBE boot. This is a standard boot method which
541           supports selection of various firmware components, seleciton of an OS to
542           boot as well as updating these using fwupd.
543
544 config BOOTMETH_DISTRO
545         bool  # Options needed to boot any distro
546         select BOOTMETH_SCRIPT if CMDLINE # E.g. Armbian uses scripts
547         select BOOTMETH_EXTLINUX  # E.g. Debian uses these
548         select BOOTMETH_EXTLINUX_PXE if CMD_PXE && CMD_NET && DM_ETH
549         select BOOTMETH_EFILOADER if CMD_BOOTEFI # E.g. Ubuntu uses this
550
551 config SPL_BOOTMETH_VBE
552         bool "Bootdev support for Verified Boot for Embedded (SPL)"
553         depends on SPL && FIT
554         select EVENT
555         default y if VPL
556         help
557           Enables support for VBE boot. This is a standard boot method which
558           supports selection of various firmware components, seleciton of an OS to
559           boot as well as updating these using fwupd.
560
561 config VPL_BOOTMETH_VBE
562         bool "Bootdev support for Verified Boot for Embedded (VPL)"
563         depends on VPL && FIT
564         select EVENT
565         default y
566         help
567           Enables support for VBE boot. This is a standard boot method which
568           supports selection of various firmware components, seleciton of an OS to
569           boot as well as updating these using fwupd.
570
571 if BOOTMETH_VBE
572
573 config BOOTMETH_VBE_REQUEST
574         bool "Support for serving VBE OS requests"
575         default y
576         help
577           Enables support for looking that the requests made by the
578           Operating System being booted. These requests result in additions to
579           the device tree /chosen node, added during the device tree fixup
580           phase.
581
582 config SPL_BOOTMETH_VBE_REQUEST
583         bool "Support for serving VBE OS requests (SPL)"
584         depends on SPL
585         help
586           Enables support for looking that the requests made by the
587           Operating System being booted. These requests result in additions to
588           the device tree /chosen node, added during the device tree fixup
589           phase.
590
591           This is only useful if you are booting an OS direct from SPL.
592
593 config BOOTMETH_VBE_SIMPLE
594         bool "Bootdev support for VBE 'simple' method"
595         default y
596         help
597           Enables support for VBE 'simple' boot. This allows updating a single
598           firmware image in boot media such as MMC. It does not support any sort
599           of rollback, recovery or A/B boot.
600
601 config BOOTMETH_VBE_SIMPLE_OS
602         bool "Bootdev support for VBE 'simple' method OS phase"
603         default y
604         help
605           Enables support for the OS parts of VBE 'simple' boot. This includes
606           fixing up the device tree with the required VBE information, ready
607           for booting into the OS. This option is only enabled for U-Boot
608           proper, since it is the phase where device tree fixups happen.
609
610 config SPL_BOOTMETH_VBE_SIMPLE
611         bool "Bootdev support for VBE 'simple' method (SPL)"
612         depends on SPL
613         default y if VPL
614         help
615           Enables support for VBE 'simple' boot. This allows updating a single
616           firmware image in boot media such as MMC. It does not support any sort
617           of rollback, recovery or A/B boot.
618
619 config VPL_BOOTMETH_VBE_SIMPLE
620         bool "Bootdev support for VBE 'simple' method (VPL)"
621         depends on VPL
622         default y
623         help
624           Enables support for VBE 'simple' boot. This allows updating a single
625           firmware image in boot media such as MMC. It does not support any sort
626           of rollback, recovery or A/B boot.
627
628 config SPL_BOOTMETH_VBE_SIMPLE_FW
629         bool "Bootdev support for VBE 'simple' method firmware phase (SPL)"
630         depends on VPL
631         default y
632         help
633           Enables support for the firmware parts of VBE 'simple' boot. This
634           includes an SPL loader which locates the correct U-Boot to boot into.
635           This option should really only be enabled for VPL, since it is the
636           phase where the SPL + U-Boot decision should be made. But for now,
637           SPL does its own FIT-configuration selection.
638
639 config VPL_BOOTMETH_VBE_SIMPLE_FW
640         bool "Bootdev support for VBE 'simple' method firmware phase (VPL)"
641         depends on VPL
642         default y
643         help
644           Enables support for the firmware parts of VBE 'simple' boot. This
645           includes an SPL loader which locates the correct SPL to boot into.
646           This option enabled for VPL, since it is the phase where the SPL
647           decision is made.
648
649 endif # BOOTMETH_VBE
650
651 config EXPO
652         bool "Support for expos - groups of scenes displaying a UI"
653         depends on VIDEO
654         default y if BOOTMETH_VBE
655         help
656           An expo is a way of presenting and collecting information from the
657           user. It consists of a collection of 'scenes' of which only one is
658           presented at a time. An expo is typically used to show a boot menu
659           and allow settings to be changed.
660
661           The expo can be presented in graphics form using a vidconsole, or in
662           text form on a serial console.
663
664 config BOOTMETH_SANDBOX
665         def_bool y
666         depends on SANDBOX
667         help
668           This is a sandbox bootmeth driver used for testing. It always returns
669           -ENOTSUPP when attempting to boot.
670
671 config BOOTMETH_SCRIPT
672         bool "Bootdev support for U-Boot scripts"
673         default y if BOOTSTD_FULL
674         depends on CMDLINE
675         select HUSH_PARSER
676         help
677           Enables support for booting a distro via a U-Boot script. This makes
678           the bootdevs look for a 'boot/boot.scr' file which can be used to
679           boot the distro.
680
681           This provides a way to try out standard boot on an existing boot flow.
682           It is not enabled by default to save space.
683
684 endif # BOOTSTD
685
686 config LEGACY_IMAGE_FORMAT
687         bool "Enable support for the legacy image format"
688         default y if !FIT_SIGNATURE && !TI_SECURE_DEVICE
689         help
690           This option enables the legacy image format. It is enabled by
691           default for backward compatibility, unless FIT_SIGNATURE is
692           set where it is disabled so that unsigned images cannot be
693           loaded. If a board needs the legacy image format support in this
694           case, enable it here.
695
696 config MEASURED_BOOT
697         bool "Measure boot images and configuration when booting without EFI"
698         depends on HASH && TPM_V2
699         help
700           This option enables measurement of the boot process when booting
701           without UEFI . Measurement involves creating cryptographic hashes
702           of the binary images that are booting and storing them in the TPM.
703           In addition, a log of these hashes is stored in memory for the OS
704           to verify the booted images and configuration. Enable this if the
705           OS has configured some memory area for the event log and you intend
706           to use some attestation tools on your system.
707
708 if MEASURED_BOOT
709         config MEASURE_DEVICETREE
710         bool "Measure the devicetree image"
711         default y if MEASURED_BOOT
712         help
713           On some platforms, the devicetree is not static as it may contain
714           random MAC addresses or other such data that changes each boot.
715           Therefore, it should not be measured into the TPM. In that case,
716           disable the measurement here.
717
718         config MEASURE_IGNORE_LOG
719         bool "Ignore the existing event log"
720         default n
721         help
722           On platforms that use an event log memory region that persists
723           through system resets and are the first stage bootloader, then
724           this option should be enabled to ignore any existing data in the
725           event log memory region.
726 endif # MEASURED_BOOT
727
728 config SYS_BOOTM_LEN
729         hex "Maximum size of a decompresed OS image"
730         depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ || \
731                 LEGACY_IMAGE_FORMAT || SPL_LEGACY_IMAGE_FORMAT
732         default 0x4000000 if PPC || ARM64
733         default 0x1000000 if X86 || ARCH_MX6 || ARCH_MX7
734         default 0x800000
735         help
736           This is the maximum size of the buffer that is used to decompress the OS
737           image in to if attempting to boot a compressed image.
738
739 config SUPPORT_RAW_INITRD
740         bool "Enable raw initrd images"
741         help
742           Note, defining the SUPPORT_RAW_INITRD allows user to supply
743           kernel with raw initrd images. The syntax is slightly different, the
744           address of the initrd must be augmented by it's size, in the following
745           format: "<initrd address>:<initrd size>".
746
747 config CHROMEOS
748         bool "Support booting Chrome OS"
749         help
750           Chrome OS requires U-Boot to set up a table indicating the boot mode
751           (e.g. Developer mode) and a few other things. Enable this if you are
752           booting on a Chromebook to avoid getting an error about an invalid
753           firmware ID.
754
755 config CHROMEOS_VBOOT
756         bool "Support Chrome OS verified boot"
757         help
758           This is intended to enable the full Chrome OS verified boot support
759           in U-Boot. It is not actually implemented in the U-Boot source code
760           at present, so this option is always set to 'n'. It allows
761           distinguishing between booting Chrome OS in a basic way (developer
762           mode) and a full boot.
763
764 config SYS_RAMBOOT
765         bool
766
767 config RAMBOOT_PBL
768         bool "Freescale PBL(pre-boot loader) image format support"
769         select SYS_RAMBOOT if PPC
770         help
771           Some SoCs use PBL to load RCW and/or pre-initialization instructions.
772           For more details refer to doc/README.pblimage
773
774 choice
775         prompt "Freescale PBL (or predecessor) load location"
776         depends on RAMBOOT_PBL || ((TARGET_P1010RDB_PA || TARGET_P1010RDB_PB \
777                 || TARGET_P1020RDB_PC || TARGET_P1020RDB_PD || TARGET_P2020RDB) \
778                 && !CMD_NAND)
779
780 config SDCARD
781         bool "Freescale PBL (or similar) is found on SD card"
782
783 config SPIFLASH
784         bool "Freescale PBL (or similar) is found on SPI flash"
785
786 config NO_PBL
787         bool "Freescale PBL (or similar) is not used in this case"
788
789 endchoice
790
791 config FSL_FIXED_MMC_LOCATION
792         bool "PBL MMC is at a fixed location"
793         depends on SDCARD && !RAMBOOT_PBL
794
795 config ESDHC_HC_BLK_ADDR
796         def_bool y
797         depends on FSL_FIXED_MMC_LOCATION && (ARCH_BSC9131 || ARCH_BSC9132 || ARCH_P1010)
798         help
799           In High Capacity SD Cards (> 2 GBytes), the 32-bit source address and
800           code length of these soc specify the memory address in block address
801           format. Block length is fixed to 512 bytes as per the SD High
802           Capacity specification.
803
804 config SYS_FSL_PBL_PBI
805         string "PBI(pre-boot instructions) commands for the PBL image"
806         depends on RAMBOOT_PBL
807         help
808           PBI commands can be used to configure SoC before it starts the execution.
809           Please refer doc/README.pblimage for more details.
810
811 config SYS_FSL_PBL_RCW
812         string "Aadditional RCW (Power on reset configuration) for the PBL image"
813         depends on RAMBOOT_PBL
814         help
815           Enables addition of RCW (Power on reset configuration) in built image.
816           Please refer doc/README.pblimage for more details.
817
818 config SYS_BOOT_RAMDISK_HIGH
819         depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ
820         depends on !(NIOS2 || SANDBOX || SH || XTENSA)
821         def_bool y
822         select LMB
823         help
824           Enable initrd_high functionality.  If defined then the initrd_high
825           feature is enabled and the boot* ramdisk subcommand is enabled.
826
827 endmenu         # Boot images
828
829 config DISTRO_DEFAULTS
830         bool "(deprecated) Script-based booting of Linux distributions"
831         select CMDLINE
832         select BOOT_DEFAULTS
833         select AUTO_COMPLETE
834         select CMDLINE_EDITING
835         select CMD_SYSBOOT
836         select HUSH_PARSER
837         select SYS_LONGHELP
838         help
839           Note: These scripts have been replaced by Standard Boot. Do not use
840           them on new boards. See 'Migrating from distro_boot' at
841           doc/develop/bootstd.rst
842
843           Select this to enable various options and commands which are suitable
844           for building u-boot for booting general purpose Linux distributions.
845
846 menu "Boot timing"
847
848 config BOOTSTAGE
849         bool "Boot timing and reporting"
850         help
851           Enable recording of boot time while booting. To use it, insert
852           calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
853           bootstage.h. Only a single entry is recorded for each ID. You can
854           give the entry a name with bootstage_mark_name(). You can also
855           record elapsed time in a particular stage using bootstage_start()
856           before starting and bootstage_accum() when finished. Bootstage will
857           add up all the accumulated time and report it.
858
859           Normally, IDs are defined in bootstage.h but a small number of
860           additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
861           as the ID.
862
863           Calls to show_boot_progress() will also result in log entries but
864           these will not have names.
865
866 config SPL_BOOTSTAGE
867         bool "Boot timing and reported in SPL"
868         depends on BOOTSTAGE && SPL
869         help
870           Enable recording of boot time in SPL. To make this visible to U-Boot
871           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
872           information when SPL finishes and load it when U-Boot proper starts
873           up.
874
875 config TPL_BOOTSTAGE
876         bool "Boot timing and reported in TPL"
877         depends on BOOTSTAGE && TPL
878         help
879           Enable recording of boot time in SPL. To make this visible to U-Boot
880           proper, enable BOOTSTAGE_STASH as well. This will stash the timing
881           information when TPL finishes and load it when U-Boot proper starts
882           up.
883
884 config BOOTSTAGE_REPORT
885         bool "Display a detailed boot timing report before booting the OS"
886         depends on BOOTSTAGE
887         help
888           Enable output of a boot time report just before the OS is booted.
889           This shows how long it took U-Boot to go through each stage of the
890           boot process. The report looks something like this:
891
892                 Timer summary in microseconds:
893                        Mark    Elapsed  Stage
894                           0          0  reset
895                   3,575,678  3,575,678  board_init_f start
896                   3,575,695         17  arch_cpu_init A9
897                   3,575,777         82  arch_cpu_init done
898                   3,659,598     83,821  board_init_r start
899                   3,910,375    250,777  main_loop
900                  29,916,167 26,005,792  bootm_start
901                  30,361,327    445,160  start_kernel
902
903 config BOOTSTAGE_RECORD_COUNT
904         int "Number of boot stage records to store"
905         depends on BOOTSTAGE
906         default 30
907         help
908           This is the size of the bootstage record list and is the maximum
909           number of bootstage records that can be recorded.
910
911 config SPL_BOOTSTAGE_RECORD_COUNT
912         int "Number of boot stage records to store for SPL"
913         depends on SPL_BOOTSTAGE
914         default 5
915         help
916           This is the size of the bootstage record list and is the maximum
917           number of bootstage records that can be recorded.
918
919 config TPL_BOOTSTAGE_RECORD_COUNT
920         int "Number of boot stage records to store for TPL"
921         depends on TPL_BOOTSTAGE
922         default 5
923         help
924           This is the size of the bootstage record list and is the maximum
925           number of bootstage records that can be recorded.
926
927 config BOOTSTAGE_FDT
928         bool "Store boot timing information in the OS device tree"
929         depends on BOOTSTAGE
930         help
931           Stash the bootstage information in the FDT. A root 'bootstage'
932           node is created with each bootstage id as a child. Each child
933           has a 'name' property and either 'mark' containing the
934           mark time in microseconds, or 'accum' containing the
935           accumulated time for that bootstage id in microseconds.
936           For example:
937
938                 bootstage {
939                         154 {
940                                 name = "board_init_f";
941                                 mark = <3575678>;
942                         };
943                         170 {
944                                 name = "lcd";
945                                 accum = <33482>;
946                         };
947                 };
948
949           Code in the Linux kernel can find this in /proc/devicetree.
950
951 config BOOTSTAGE_STASH
952         bool "Stash the boot timing information in memory before booting OS"
953         depends on BOOTSTAGE
954         help
955           Some OSes do not support device tree. Bootstage can instead write
956           the boot timing information in a binary format at a given address.
957           This happens through a call to bootstage_stash(), typically in
958           the CPU's cleanup_before_linux() function. You can use the
959           'bootstage stash' and 'bootstage unstash' commands to do this on
960           the command line.
961
962 config BOOTSTAGE_STASH_ADDR
963         hex "Address to stash boot timing information"
964         default 0x0
965         help
966           Provide an address which will not be overwritten by the OS when it
967           starts, so that it can read this information when ready.
968
969 config BOOTSTAGE_STASH_SIZE
970         hex "Size of boot timing stash region"
971         default 0x1000
972         help
973           This should be large enough to hold the bootstage stash. A value of
974           4096 (4KiB) is normally plenty.
975
976 config SHOW_BOOT_PROGRESS
977         bool "Show boot progress in a board-specific manner"
978         help
979           Defining this option allows to add some board-specific code (calling
980           a user-provided function show_boot_progress(int) that enables you to
981           show the system's boot progress on some display (for example, some
982           LEDs) on your board. At the moment, the following checkpoints are
983           implemented:
984
985           Legacy uImage format:
986
987           Arg   Where                   When
988             1   common/cmd_bootm.c      before attempting to boot an image
989            -1   common/cmd_bootm.c      Image header has bad     magic number
990             2   common/cmd_bootm.c      Image header has correct magic number
991            -2   common/cmd_bootm.c      Image header has bad     checksum
992             3   common/cmd_bootm.c      Image header has correct checksum
993            -3   common/cmd_bootm.c      Image data   has bad     checksum
994             4   common/cmd_bootm.c      Image data   has correct checksum
995            -4   common/cmd_bootm.c      Image is for unsupported architecture
996             5   common/cmd_bootm.c      Architecture check OK
997            -5   common/cmd_bootm.c      Wrong Image Type (not kernel, multi)
998             6   common/cmd_bootm.c      Image Type check OK
999            -6   common/cmd_bootm.c      gunzip uncompression error
1000            -7   common/cmd_bootm.c      Unimplemented compression type
1001             7   common/cmd_bootm.c      Uncompression OK
1002             8   common/cmd_bootm.c      No uncompress/copy overwrite error
1003            -9   common/cmd_bootm.c      Unsupported OS (not Linux, BSD, VxWorks, QNX)
1004
1005             9   common/image.c          Start initial ramdisk verification
1006           -10   common/image.c          Ramdisk header has bad     magic number
1007           -11   common/image.c          Ramdisk header has bad     checksum
1008            10   common/image.c          Ramdisk header is OK
1009           -12   common/image.c          Ramdisk data   has bad     checksum
1010            11   common/image.c          Ramdisk data   has correct checksum
1011            12   common/image.c          Ramdisk verification complete, start loading
1012           -13   common/image.c          Wrong Image Type (not PPC Linux ramdisk)
1013            13   common/image.c          Start multifile image verification
1014            14   common/image.c          No initial ramdisk, no multifile, continue.
1015
1016            15   arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
1017
1018           -30   arch/powerpc/lib/board.c        Fatal error, hang the system
1019           -31   post/post.c             POST test failed, detected by post_output_backlog()
1020           -32   post/post.c             POST test failed, detected by post_run_single()
1021
1022            34   common/cmd_doc.c        before loading a Image from a DOC device
1023           -35   common/cmd_doc.c        Bad usage of "doc" command
1024            35   common/cmd_doc.c        correct usage of "doc" command
1025           -36   common/cmd_doc.c        No boot device
1026            36   common/cmd_doc.c        correct boot device
1027           -37   common/cmd_doc.c        Unknown Chip ID on boot device
1028            37   common/cmd_doc.c        correct chip ID found, device available
1029           -38   common/cmd_doc.c        Read Error on boot device
1030            38   common/cmd_doc.c        reading Image header from DOC device OK
1031           -39   common/cmd_doc.c        Image header has bad magic number
1032            39   common/cmd_doc.c        Image header has correct magic number
1033           -40   common/cmd_doc.c        Error reading Image from DOC device
1034            40   common/cmd_doc.c        Image header has correct magic number
1035            41   common/cmd_ide.c        before loading a Image from a IDE device
1036           -42   common/cmd_ide.c        Bad usage of "ide" command
1037            42   common/cmd_ide.c        correct usage of "ide" command
1038           -43   common/cmd_ide.c        No boot device
1039            43   common/cmd_ide.c        boot device found
1040           -44   common/cmd_ide.c        Device not available
1041            44   common/cmd_ide.c        Device available
1042           -45   common/cmd_ide.c        wrong partition selected
1043            45   common/cmd_ide.c        partition selected
1044           -46   common/cmd_ide.c        Unknown partition table
1045            46   common/cmd_ide.c        valid partition table found
1046           -47   common/cmd_ide.c        Invalid partition type
1047            47   common/cmd_ide.c        correct partition type
1048           -48   common/cmd_ide.c        Error reading Image Header on boot device
1049            48   common/cmd_ide.c        reading Image Header from IDE device OK
1050           -49   common/cmd_ide.c        Image header has bad magic number
1051            49   common/cmd_ide.c        Image header has correct magic number
1052           -50   common/cmd_ide.c        Image header has bad     checksum
1053            50   common/cmd_ide.c        Image header has correct checksum
1054           -51   common/cmd_ide.c        Error reading Image from IDE device
1055            51   common/cmd_ide.c        reading Image from IDE device OK
1056            52   common/cmd_nand.c       before loading a Image from a NAND device
1057           -53   common/cmd_nand.c       Bad usage of "nand" command
1058            53   common/cmd_nand.c       correct usage of "nand" command
1059           -54   common/cmd_nand.c       No boot device
1060            54   common/cmd_nand.c       boot device found
1061           -55   common/cmd_nand.c       Unknown Chip ID on boot device
1062            55   common/cmd_nand.c       correct chip ID found, device available
1063           -56   common/cmd_nand.c       Error reading Image Header on boot device
1064            56   common/cmd_nand.c       reading Image Header from NAND device OK
1065           -57   common/cmd_nand.c       Image header has bad magic number
1066            57   common/cmd_nand.c       Image header has correct magic number
1067           -58   common/cmd_nand.c       Error reading Image from NAND device
1068            58   common/cmd_nand.c       reading Image from NAND device OK
1069
1070           -60   common/env_common.c     Environment has a bad CRC, using default
1071
1072            64   net/eth.c               starting with Ethernet configuration.
1073           -64   net/eth.c               no Ethernet found.
1074            65   net/eth.c               Ethernet found.
1075
1076           -80   common/cmd_net.c        usage wrong
1077            80   common/cmd_net.c        before calling net_loop()
1078           -81   common/cmd_net.c        some error in net_loop() occurred
1079            81   common/cmd_net.c        net_loop() back without error
1080           -82   common/cmd_net.c        size == 0 (File with size 0 loaded)
1081            82   common/cmd_net.c        trying automatic boot
1082            83   common/cmd_net.c        running "source" command
1083           -83   common/cmd_net.c        some error in automatic boot or "source" command
1084            84   common/cmd_net.c        end without errors
1085
1086           FIT uImage format:
1087
1088           Arg   Where                   When
1089           100   common/cmd_bootm.c      Kernel FIT Image has correct format
1090           -100  common/cmd_bootm.c      Kernel FIT Image has incorrect format
1091           101   common/cmd_bootm.c      No Kernel subimage unit name, using configuration
1092           -101  common/cmd_bootm.c      Can't get configuration for kernel subimage
1093           102   common/cmd_bootm.c      Kernel unit name specified
1094           -103  common/cmd_bootm.c      Can't get kernel subimage node offset
1095           103   common/cmd_bootm.c      Found configuration node
1096           104   common/cmd_bootm.c      Got kernel subimage node offset
1097           -104  common/cmd_bootm.c      Kernel subimage hash verification failed
1098           105   common/cmd_bootm.c      Kernel subimage hash verification OK
1099           -105  common/cmd_bootm.c      Kernel subimage is for unsupported architecture
1100           106   common/cmd_bootm.c      Architecture check OK
1101           -106  common/cmd_bootm.c      Kernel subimage has wrong type
1102           107   common/cmd_bootm.c      Kernel subimage type OK
1103           -107  common/cmd_bootm.c      Can't get kernel subimage data/size
1104           108   common/cmd_bootm.c      Got kernel subimage data/size
1105           -108  common/cmd_bootm.c      Wrong image type (not legacy, FIT)
1106           -109  common/cmd_bootm.c      Can't get kernel subimage type
1107           -110  common/cmd_bootm.c      Can't get kernel subimage comp
1108           -111  common/cmd_bootm.c      Can't get kernel subimage os
1109           -112  common/cmd_bootm.c      Can't get kernel subimage load address
1110           -113  common/cmd_bootm.c      Image uncompress/copy overwrite error
1111
1112           120   common/image.c          Start initial ramdisk verification
1113           -120  common/image.c          Ramdisk FIT image has incorrect format
1114           121   common/image.c          Ramdisk FIT image has correct format
1115           122   common/image.c          No ramdisk subimage unit name, using configuration
1116           -122  common/image.c          Can't get configuration for ramdisk subimage
1117           123   common/image.c          Ramdisk unit name specified
1118           -124  common/image.c          Can't get ramdisk subimage node offset
1119           125   common/image.c          Got ramdisk subimage node offset
1120           -125  common/image.c          Ramdisk subimage hash verification failed
1121           126   common/image.c          Ramdisk subimage hash verification OK
1122           -126  common/image.c          Ramdisk subimage for unsupported architecture
1123           127   common/image.c          Architecture check OK
1124           -127  common/image.c          Can't get ramdisk subimage data/size
1125           128   common/image.c          Got ramdisk subimage data/size
1126           129   common/image.c          Can't get ramdisk load address
1127           -129  common/image.c          Got ramdisk load address
1128
1129           -130  common/cmd_doc.c        Incorrect FIT image format
1130           131   common/cmd_doc.c        FIT image format OK
1131
1132           -140  common/cmd_ide.c        Incorrect FIT image format
1133           141   common/cmd_ide.c        FIT image format OK
1134
1135           -150  common/cmd_nand.c       Incorrect FIT image format
1136           151   common/cmd_nand.c       FIT image format OK
1137
1138 config SPL_SHOW_BOOT_PROGRESS
1139         bool "Show boot progress in a board-specific manner in SPL"
1140         depends on SPL
1141         help
1142           Defining this option allows to add some board-specific code (calling
1143           a user-provided function show_boot_progress(int) that enables you to
1144           show the system's boot progress on some display (for example, some
1145           LEDs) on your board. For details see SHOW_BOOT_PROGRESS.
1146
1147 endmenu
1148
1149 menu "Boot media"
1150
1151 config NOR_BOOT
1152         bool "Support for booting from NOR flash"
1153         depends on NOR
1154         help
1155           Enabling this will make a U-Boot binary that is capable of being
1156           booted via NOR.  In this case we will enable certain pinmux early
1157           as the ROM only partially sets up pinmux.  We also default to using
1158           NOR for environment.
1159
1160 config NAND_BOOT
1161         bool "Support for booting from NAND flash"
1162         imply MTD_RAW_NAND
1163         help
1164           Enabling this will make a U-Boot binary that is capable of being
1165           booted via NAND flash. This is not a must, some SoCs need this,
1166           some not.
1167
1168 config ONENAND_BOOT
1169         bool "Support for booting from ONENAND"
1170         imply MTD_RAW_NAND
1171         help
1172           Enabling this will make a U-Boot binary that is capable of being
1173           booted via ONENAND. This is not a must, some SoCs need this,
1174           some not.
1175
1176 config QSPI_BOOT
1177         bool "Support for booting from QSPI flash"
1178         help
1179           Enabling this will make a U-Boot binary that is capable of being
1180           booted via QSPI flash. This is not a must, some SoCs need this,
1181           some not.
1182
1183 config SATA_BOOT
1184         bool "Support for booting from SATA"
1185         help
1186           Enabling this will make a U-Boot binary that is capable of being
1187           booted via SATA. This is not a must, some SoCs need this,
1188           some not.
1189
1190 config SD_BOOT
1191         bool "Support for booting from SD/EMMC"
1192         help
1193           Enabling this will make a U-Boot binary that is capable of being
1194           booted via SD/EMMC. This is not a must, some SoCs need this,
1195           some not.
1196
1197 config SD_BOOT_QSPI
1198         bool "Support for booting from SD/EMMC and enable QSPI"
1199         help
1200           Enabling this will make a U-Boot binary that is capable of being
1201           booted via SD/EMMC while enabling QSPI on the platform as well. This
1202           is not a must, some SoCs need this, some not.
1203
1204 config SPI_BOOT
1205         bool "Support for booting from SPI flash"
1206         help
1207           Enabling this will make a U-Boot binary that is capable of being
1208           booted via SPI flash. This is not a must, some SoCs need this,
1209           some not.
1210
1211 endmenu
1212
1213 menu "Autoboot options"
1214
1215 config AUTOBOOT
1216         bool "Autoboot"
1217         depends on CMDLINE
1218         default y
1219         help
1220           This enables the autoboot.  See doc/README.autoboot for detail.
1221
1222 if AUTOBOOT
1223
1224 config BOOTDELAY
1225         int "delay in seconds before automatically booting"
1226         default 2
1227         help
1228           Delay before automatically running bootcmd;
1229           set to 0 to autoboot with no delay, but you can stop it by key input.
1230           set to -1 to disable autoboot.
1231           set to -2 to autoboot with no delay and not check for abort
1232
1233           If this value is >= 0 then it is also used for the default delay
1234           before starting the default entry in bootmenu. If it is < 0 then
1235           a default value of 10s is used.
1236
1237           See doc/README.autoboot for details.
1238
1239 config AUTOBOOT_KEYED
1240         bool "Stop autobooting via specific input key / string"
1241         help
1242           This option enables stopping (aborting) of the automatic
1243           boot feature only by issuing a specific input key or
1244           string. If not enabled, any input key will abort the
1245           U-Boot automatic booting process and bring the device
1246           to the U-Boot prompt for user input.
1247
1248 if AUTOBOOT_KEYED
1249
1250 config AUTOBOOT_FLUSH_STDIN
1251         bool "Enable flushing stdin before starting to read the password"
1252         depends on !SANDBOX
1253         help
1254           When this option is enabled stdin buffer will be flushed before
1255           starting to read the password.
1256           This can't be enabled for the sandbox as flushing stdin would
1257           break the autoboot unit tests.
1258
1259 config AUTOBOOT_PROMPT
1260         string "Autoboot stop prompt"
1261         default "Autoboot in %d seconds\\n"
1262         help
1263           This string is displayed before the boot delay selected by
1264           CONFIG_BOOTDELAY starts. If it is not defined there is no
1265           output indicating that autoboot is in progress.
1266
1267           Note that this define is used as the (only) argument to a
1268           printf() call, so it may contain '%' format specifications,
1269           provided that it also includes, sepearated by commas exactly
1270           like in a printf statement, the required arguments. It is
1271           the responsibility of the user to select only such arguments
1272           that are valid in the given context.
1273
1274 config AUTOBOOT_ENCRYPTION
1275         bool "Enable encryption in autoboot stopping"
1276         help
1277           This option allows a string to be entered into U-Boot to stop the
1278           autoboot.
1279           The behavior depends whether CONFIG_CRYPT_PW from lib is enabled
1280           or not.
1281           In case CONFIG_CRYPT_PW is enabled, the string will be forwarded
1282           to the crypt-based functionality and be compared against the
1283           string in the environment variable 'bootstopkeycrypt'.
1284           In case CONFIG_CRYPT_PW is disabled the string itself is hashed
1285           and compared against the hash in the environment variable
1286           'bootstopkeysha256'.
1287           If it matches in either case then boot stops and
1288           a command-line prompt is presented.
1289           This provides a way to ship a secure production device which can also
1290           be accessed at the U-Boot command line.
1291
1292 config AUTOBOOT_SHA256_FALLBACK
1293         bool "Allow fallback from crypt-hashed password to sha256"
1294         depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
1295         help
1296           This option adds support to fall back from crypt-hashed
1297           passwords to checking a SHA256 hashed password in case the
1298           'bootstopusesha256' environment variable is set to 'true'.
1299
1300 config AUTOBOOT_DELAY_STR
1301         string "Delay autobooting via specific input key / string"
1302         depends on !AUTOBOOT_ENCRYPTION
1303         help
1304           This option delays the automatic boot feature by issuing
1305           a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
1306           or the environment variable "bootdelaykey" is specified
1307           and this string is received from console input before
1308           autoboot starts booting, U-Boot gives a command prompt. The
1309           U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
1310           used, otherwise it never times out.
1311
1312 config AUTOBOOT_STOP_STR
1313         string "Stop autobooting via specific input key / string"
1314         depends on !AUTOBOOT_ENCRYPTION
1315         help
1316           This option enables stopping (aborting) of the automatic
1317           boot feature only by issuing a specific input key or
1318           string. If CONFIG_AUTOBOOT_STOP_STR or the environment
1319           variable "bootstopkey" is specified and this string is
1320           received from console input before autoboot starts booting,
1321           U-Boot gives a command prompt. The U-Boot prompt never
1322           times out, even if CONFIG_BOOT_RETRY_TIME is used.
1323
1324 config AUTOBOOT_KEYED_CTRLC
1325         bool "Enable Ctrl-C autoboot interruption"
1326         depends on !AUTOBOOT_ENCRYPTION
1327         help
1328           This option allows for the boot sequence to be interrupted
1329           by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
1330           Setting this variable provides an escape sequence from the
1331           limited "password" strings.
1332
1333 config AUTOBOOT_NEVER_TIMEOUT
1334         bool "Make the password entry never time-out"
1335         depends on AUTOBOOT_ENCRYPTION && CRYPT_PW
1336         help
1337           This option removes the timeout from the password entry
1338           when the user first presses the <Enter> key before entering
1339           any other character.
1340
1341 config AUTOBOOT_STOP_STR_ENABLE
1342         bool "Enable fixed string to stop autobooting"
1343         depends on AUTOBOOT_ENCRYPTION
1344         help
1345           This option enables the feature to add a fixed stop
1346           string that is defined at compile time.
1347           In every case it will be tried to load the stop
1348           string from the environment.
1349           In case this is enabled and there is no stop string
1350           in the environment, this will be used as default value.
1351
1352 config AUTOBOOT_STOP_STR_CRYPT
1353         string "Stop autobooting via crypt-hashed password"
1354         depends on AUTOBOOT_STOP_STR_ENABLE && CRYPT_PW
1355         help
1356           This option adds the feature to only stop the autobooting,
1357           and therefore boot into the U-Boot prompt, when the input
1358           string / password matches a values that is hashed via
1359           one of the supported crypt-style password hashing options
1360           and saved in the environment variable "bootstopkeycrypt".
1361
1362 config AUTOBOOT_STOP_STR_SHA256
1363         string "Stop autobooting via SHA256 hashed password"
1364         depends on AUTOBOOT_STOP_STR_ENABLE
1365         help
1366           This option adds the feature to only stop the autobooting,
1367           and therefore boot into the U-Boot prompt, when the input
1368           string / password matches a values that is encypted via
1369           a SHA256 hash and saved in the environment variable
1370           "bootstopkeysha256". If the value in that variable
1371           includes a ":", the portion prior to the ":" will be treated
1372           as a salt value.
1373
1374 endif  # AUTOBOOT_KEYED
1375
1376 if !AUTOBOOT_KEYED
1377
1378 config AUTOBOOT_USE_MENUKEY
1379         bool "Allow a specify key to run a menu from the environment"
1380         help
1381           If a specific key is pressed to stop autoboot, then the commands in
1382           the environment variable 'menucmd' are executed before boot starts.
1383
1384 config AUTOBOOT_MENUKEY
1385         int "ASCII value of boot key to show a menu"
1386         default 0
1387         depends on AUTOBOOT_USE_MENUKEY
1388         help
1389           If this key is pressed to stop autoboot, then the commands in the
1390           environment variable 'menucmd' will be executed before boot starts.
1391           For example, 33 means "!" in ASCII, so pressing ! at boot would take
1392           this action.
1393
1394 endif
1395
1396 endif  # AUTOBOOT
1397
1398 config AUTOBOOT_MENU_SHOW
1399         bool "Show a menu on boot"
1400         depends on CMD_BOOTMENU
1401         help
1402           This enables the boot menu, controlled by environment variables
1403           defined by the board. The menu starts after running the 'preboot'
1404           environmnent variable (if enabled) and before handling the boot delay.
1405           See doc/usage/cmd/bootmenu.rst for more details.
1406
1407 config BOOTMENU_DISABLE_UBOOT_CONSOLE
1408         bool "Disallow bootmenu to enter the U-Boot console"
1409         depends on AUTOBOOT_MENU_SHOW
1410         help
1411           If this option is enabled, user can not enter the U-Boot console from
1412           bootmenu. It increases the system security.
1413
1414 config BOOT_RETRY
1415         bool "Boot retry feature"
1416         help
1417           Allow for having the U-Boot command prompt time out and attempt
1418           to boot again.  If the environment variable "bootretry" is found then
1419           its value is used, otherwise the retry timeout is
1420           CONFIG_BOOT_RETRY_TIME.  CONFIG_BOOT_RETRY_MIN is optional and
1421           defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
1422
1423 config BOOT_RETRY_TIME
1424         int "Timeout in seconds before attempting to boot again"
1425         depends on BOOT_RETRY
1426         help
1427           Time in seconds before the U-Boot prompt will timeout and boot will
1428           be attempted again.
1429
1430 config BOOT_RETRY_MIN
1431         int "Minimum timeout in seconds for 'bootretry'"
1432         depends on BOOT_RETRY
1433         default BOOT_RETRY_TIME
1434         help
1435           The minimum time in seconds that "bootretry" can be set to.
1436
1437 config RESET_TO_RETRY
1438         bool "Reset the board to retry autoboot"
1439         depends on BOOT_RETRY
1440         help
1441           After the countdown timed out, the board will be reset to restart
1442           again.
1443
1444 endmenu
1445
1446 menu "Image support"
1447
1448 config IMAGE_PRE_LOAD
1449         bool "Image pre-load support"
1450         help
1451           Enable an image pre-load stage in the SPL.
1452           This pre-load stage allows to do some manipulation
1453           or check (for example signature check) on an image
1454           before launching it.
1455
1456 config SPL_IMAGE_PRE_LOAD
1457         bool "Image pre-load support within SPL"
1458         depends on SPL && IMAGE_PRE_LOAD
1459         help
1460           Enable an image pre-load stage in the SPL.
1461           This pre-load stage allows to do some manipulation
1462           or check (for example signature check) on an image
1463           before launching it.
1464
1465 config IMAGE_PRE_LOAD_SIG
1466         bool "Image pre-load signature support"
1467         depends on IMAGE_PRE_LOAD
1468         select FIT_SIGNATURE
1469         select RSA
1470         select RSA_VERIFY_WITH_PKEY
1471         help
1472           Enable signature check support in the pre-load stage.
1473           For this feature a very simple header is added before
1474           the image with few fields:
1475           - a magic
1476           - the image size
1477           - the signature
1478           All other information (header size, type of signature,
1479           ...) are provided in the node /image/pre-load/sig of
1480           u-boot.
1481
1482 config SPL_IMAGE_PRE_LOAD_SIG
1483         bool "Image pre-load signature support witin SPL"
1484         depends on SPL_IMAGE_PRE_LOAD && IMAGE_PRE_LOAD_SIG
1485         select SPL_FIT_SIGNATURE
1486         select SPL_RSA
1487         select SPL_RSA_VERIFY_WITH_PKEY
1488         help
1489           Enable signature check support in the pre-load stage in the SPL.
1490           For this feature a very simple header is added before
1491           the image with few fields:
1492           - a magic
1493           - the image size
1494           - the signature
1495           All other information (header size, type of signature,
1496           ...) are provided in the node /image/pre-load/sig of
1497           u-boot.
1498
1499 endmenu
1500
1501 if OF_LIBFDT
1502
1503 menu "Devicetree fixup"
1504
1505 config OF_BOARD_SETUP
1506         bool "Set up board-specific details in device tree before boot"
1507         help
1508           This causes U-Boot to call ft_board_setup() before booting into
1509           the Operating System. This function can set up various
1510           board-specific information in the device tree for use by the OS.
1511           The device tree is then passed to the OS.
1512
1513 config OF_SYSTEM_SETUP
1514         bool "Set up system-specific details in device tree before boot"
1515         help
1516           This causes U-Boot to call ft_system_setup() before booting into
1517           the Operating System. This function can set up various
1518           system-specific information in the device tree for use by the OS.
1519           The device tree is then passed to the OS.
1520
1521 config OF_STDOUT_VIA_ALIAS
1522         bool "Update the device-tree stdout alias from U-Boot"
1523         help
1524           This uses U-Boot's serial alias from the aliases node to update
1525           the device tree passed to the OS. The "linux,stdout-path" property
1526           in the chosen node is set to point to the correct serial node.
1527           This option currently references CONFIG_CONS_INDEX, which is
1528           incorrect when used with device tree as this option does not
1529           exist / should not be used.
1530
1531 config FDT_FIXUP_PARTITIONS
1532         bool "Overwrite MTD partitions in DTS through defined in 'mtdparts'"
1533         help
1534           Allow overwriting defined partitions in the device tree blob
1535           using partition info defined in the 'mtdparts' environment
1536           variable.
1537
1538 config FDT_SIMPLEFB
1539         bool "FDT tools for simplefb support"
1540         help
1541           Enable the fdt tools to manage the simple fb nodes in device tree.
1542           These functions can be used by board to indicate to the OS
1543           the presence of the simple frame buffer with associated reserved
1544           memory
1545
1546 config ARCH_FIXUP_FDT_MEMORY
1547         bool "Enable arch_fixup_memory_banks() call"
1548         default y
1549         help
1550           Enable FDT memory map syncup before OS boot. This feature can be
1551           used for booting OS with different memory setup where the part of
1552           the memory location should be used for different purpose.
1553
1554 endmenu
1555
1556 endif # OF_LIBFDT
1557
1558 config USE_BOOTARGS
1559         bool "Enable boot arguments"
1560         help
1561           Provide boot arguments to bootm command. Boot arguments are specified
1562           in CONFIG_BOOTARGS option. Enable this option to be able to specify
1563           CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
1564           will be undefined and won't take any space in U-Boot image.
1565
1566 config BOOTARGS
1567         string "Boot arguments"
1568         depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
1569         help
1570           This can be used to pass arguments to the bootm command. The value of
1571           CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
1572           this value will also override the "chosen" node in FDT blob.
1573
1574 config BOOTARGS_SUBST
1575         bool "Support substituting strings in boot arguments"
1576         help
1577           This allows substituting string values in the boot arguments. These
1578           are applied after the commandline has been built.
1579
1580           One use for this is to insert the root-disk UUID into the command
1581           line where bootargs contains "root=${uuid}"
1582
1583                 setenv bootargs "console= root=${uuid}"
1584                 # Set the 'uuid' environment variable
1585                 part uuid mmc 2:2 uuid
1586
1587                 # Command-line substitution will put the real uuid into the
1588                 # kernel command line
1589                 bootm
1590
1591 config USE_BOOTCOMMAND
1592         bool "Enable a default value for bootcmd"
1593         depends on CMDLINE
1594         help
1595           Provide a default value for the bootcmd entry in the environment.  If
1596           autoboot is enabled this is what will be run automatically.  Enable
1597           this option to be able to specify CONFIG_BOOTCOMMAND as a string.  If
1598           this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
1599           won't take any space in U-Boot image.
1600
1601 config BOOTCOMMAND
1602         string "bootcmd value"
1603         depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
1604         default "bootflow scan -lb" if BOOTSTD_DEFAULTS && CMD_BOOTFLOW_FULL
1605         default "bootflow scan" if BOOTSTD_DEFAULTS && !CMD_BOOTFLOW_FULL
1606         default "run distro_bootcmd" if !BOOTSTD_BOOTCOMMAND && DISTRO_DEFAULTS
1607         help
1608           This is the string of commands that will be used as bootcmd and if
1609           AUTOBOOT is set, automatically run.
1610
1611 config USE_PREBOOT
1612         bool "Enable preboot"
1613         depends on CMDLINE
1614         help
1615           When this option is enabled, the existence of the environment
1616           variable "preboot" will be checked immediately before starting the
1617           CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
1618           entering interactive mode.
1619
1620           This feature is especially useful when "preboot" is automatically
1621           generated or modified. For example, the boot code can modify the
1622           "preboot" when a user holds down a certain combination of keys.
1623
1624 config PREBOOT
1625         string "preboot default value"
1626         depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
1627         default "usb start" if USB_KEYBOARD
1628         default ""
1629         help
1630           This is the default of "preboot" environment variable.
1631
1632 config PREBOOT_DEFINED
1633         bool
1634         default y if PREBOOT != ""
1635
1636 config DEFAULT_FDT_FILE
1637         string "Default fdt file"
1638         help
1639           This option is used to set the default fdt file to boot OS.
1640
1641 config SAVE_PREV_BL_FDT_ADDR
1642         depends on ARM
1643         bool "Saves fdt address, passed by the previous bootloader, to env var"
1644         help
1645           When u-boot is used as a chain-loaded bootloader (replacing OS kernel),
1646           enable this option to save fdt address, passed by the
1647           previous bootloader for future use.
1648           Address is saved to `prevbl_fdt_addr` environment variable.
1649
1650           If no fdt was provided by previous bootloader, no env variables
1651           will be created.
1652
1653 config SAVE_PREV_BL_INITRAMFS_START_ADDR
1654         depends on ARM
1655         bool "Saves initramfs address, passed by the previous bootloader, to env var"
1656         help
1657           When u-boot is used as a chain-loaded bootloader(replacing OS kernel),
1658           enable this option to save initramfs address, passed by the
1659           previous bootloader for future use.
1660           Address is saved to `prevbl_initrd_start_addr` environment variable.
1661
1662           If no initramfs was provided by previous bootloader, no env variables
1663           will be created.
1664
1665 menu "Configuration editor"
1666
1667 config CEDIT
1668         bool "Configuration editor"
1669         depends on BOOTSTD
1670         help
1671           Provides a way to deal with board configuration and present it to
1672           the user for adjustment.
1673
1674           This is intended to provide both graphical and text-based user
1675           interfaces, but only graphical is support at present.
1676
1677 endmenu         # Configuration editor
1678
1679 endmenu         # Booting