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