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