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