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