1menu "Boot timing" 2 3config BOOTSTAGE 4 bool "Boot timing and reporting" 5 help 6 Enable recording of boot time while booting. To use it, insert 7 calls to bootstage_mark() with a suitable BOOTSTAGE_ID from 8 bootstage.h. Only a single entry is recorded for each ID. You can 9 give the entry a name with bootstage_mark_name(). You can also 10 record elapsed time in a particular stage using bootstage_start() 11 before starting and bootstage_accum() when finished. Bootstage will 12 add up all the accumulated time and report it. 13 14 Normally, IDs are defined in bootstage.h but a small number of 15 additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC 16 as the ID. 17 18 Calls to show_boot_progress() will also result in log entries but 19 these will not have names. 20 21config SPL_BOOTSTAGE 22 bool "Boot timing and reported in SPL" 23 depends on BOOTSTAGE 24 help 25 Enable recording of boot time in SPL. To make this visible to U-Boot 26 proper, enable BOOTSTAGE_STASH as well. This will stash the timing 27 information when SPL finishes and load it when U-Boot proper starts 28 up. 29 30config BOOTSTAGE_REPORT 31 bool "Display a detailed boot timing report before booting the OS" 32 depends on BOOTSTAGE 33 help 34 Enable output of a boot time report just before the OS is booted. 35 This shows how long it took U-Boot to go through each stage of the 36 boot process. The report looks something like this: 37 38 Timer summary in microseconds: 39 Mark Elapsed Stage 40 0 0 reset 41 3,575,678 3,575,678 board_init_f start 42 3,575,695 17 arch_cpu_init A9 43 3,575,777 82 arch_cpu_init done 44 3,659,598 83,821 board_init_r start 45 3,910,375 250,777 main_loop 46 29,916,167 26,005,792 bootm_start 47 30,361,327 445,160 start_kernel 48 49config BOOTSTAGE_USER_COUNT 50 int "Number of boot ID numbers available for user use" 51 default 20 52 help 53 This is the number of available user bootstage records. 54 Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...) 55 a new ID will be allocated from this stash. If you exceed 56 the limit, recording will stop. 57 58config BOOTSTAGE_RECORD_COUNT 59 int "Number of boot stage records to store" 60 default 30 61 help 62 This is the size of the bootstage record list and is the maximum 63 number of bootstage records that can be recorded. 64 65config BOOTSTAGE_FDT 66 bool "Store boot timing information in the OS device tree" 67 depends on BOOTSTAGE 68 help 69 Stash the bootstage information in the FDT. A root 'bootstage' 70 node is created with each bootstage id as a child. Each child 71 has a 'name' property and either 'mark' containing the 72 mark time in microseconds, or 'accum' containing the 73 accumulated time for that bootstage id in microseconds. 74 For example: 75 76 bootstage { 77 154 { 78 name = "board_init_f"; 79 mark = <3575678>; 80 }; 81 170 { 82 name = "lcd"; 83 accum = <33482>; 84 }; 85 }; 86 87 Code in the Linux kernel can find this in /proc/devicetree. 88 89config BOOTSTAGE_STASH 90 bool "Stash the boot timing information in memory before booting OS" 91 depends on BOOTSTAGE 92 help 93 Some OSes do not support device tree. Bootstage can instead write 94 the boot timing information in a binary format at a given address. 95 This happens through a call to bootstage_stash(), typically in 96 the CPU's cleanup_before_linux() function. You can use the 97 'bootstage stash' and 'bootstage unstash' commands to do this on 98 the command line. 99 100config BOOTSTAGE_STASH_ADDR 101 hex "Address to stash boot timing information" 102 default 0 103 help 104 Provide an address which will not be overwritten by the OS when it 105 starts, so that it can read this information when ready. 106 107config BOOTSTAGE_STASH_SIZE 108 hex "Size of boot timing stash region" 109 default 0x1000 110 help 111 This should be large enough to hold the bootstage stash. A value of 112 4096 (4KiB) is normally plenty. 113 114endmenu 115 116menu "Boot media" 117 118config NOR_BOOT 119 bool "Support for booting from NOR flash" 120 depends on NOR 121 help 122 Enabling this will make a U-Boot binary that is capable of being 123 booted via NOR. In this case we will enable certain pinmux early 124 as the ROM only partially sets up pinmux. We also default to using 125 NOR for environment. 126 127config NAND_BOOT 128 bool "Support for booting from NAND flash" 129 default n 130 help 131 Enabling this will make a U-Boot binary that is capable of being 132 booted via NAND flash. This is not a must, some SoCs need this, 133 some not. 134 135config ONENAND_BOOT 136 bool "Support for booting from ONENAND" 137 default n 138 help 139 Enabling this will make a U-Boot binary that is capable of being 140 booted via ONENAND. This is not a must, some SoCs need this, 141 some not. 142 143config QSPI_BOOT 144 bool "Support for booting from QSPI flash" 145 default n 146 help 147 Enabling this will make a U-Boot binary that is capable of being 148 booted via QSPI flash. This is not a must, some SoCs need this, 149 some not. 150 151config SATA_BOOT 152 bool "Support for booting from SATA" 153 default n 154 help 155 Enabling this will make a U-Boot binary that is capable of being 156 booted via SATA. This is not a must, some SoCs need this, 157 some not. 158 159config SD_BOOT 160 bool "Support for booting from SD/EMMC" 161 default n 162 help 163 Enabling this will make a U-Boot binary that is capable of being 164 booted via SD/EMMC. This is not a must, some SoCs need this, 165 some not. 166 167config SPI_BOOT 168 bool "Support for booting from SPI flash" 169 default n 170 help 171 Enabling this will make a U-Boot binary that is capable of being 172 booted via SPI flash. This is not a must, some SoCs need this, 173 some not. 174 175endmenu 176 177menu "Environment" 178 179config ENV_IS_IN_MMC 180 bool "Environment in an MMC device" 181 depends on !CHAIN_OF_TRUST 182 default y if ARCH_SUNXI 183 help 184 Define this if you have an MMC device which you want to use for the 185 environment. 186 187 CONFIG_SYS_MMC_ENV_DEV: 188 189 Specifies which MMC device the environment is stored in. 190 191 CONFIG_SYS_MMC_ENV_PART (optional): 192 193 Specifies which MMC partition the environment is stored in. If not 194 set, defaults to partition 0, the user area. Common values might be 195 1 (first MMC boot partition), 2 (second MMC boot partition). 196 197 CONFIG_ENV_OFFSET: 198 CONFIG_ENV_SIZE: 199 200 These two #defines specify the offset and size of the environment 201 area within the specified MMC device. 202 203 If offset is positive (the usual case), it is treated as relative to 204 the start of the MMC partition. If offset is negative, it is treated 205 as relative to the end of the MMC partition. This can be useful if 206 your board may be fitted with different MMC devices, which have 207 different sizes for the MMC partitions, and you always want the 208 environment placed at the very end of the partition, to leave the 209 maximum possible space before it, to store other data. 210 211 These two values are in units of bytes, but must be aligned to an 212 MMC sector boundary. 213 214 CONFIG_ENV_OFFSET_REDUND (optional): 215 216 Specifies a second storage area, of CONFIG_ENV_SIZE size, used to 217 hold a redundant copy of the environment data. This provides a 218 valid backup copy in case the other copy is corrupted, e.g. due 219 to a power failure during a "saveenv" operation. 220 221 This value may also be positive or negative; this is handled in the 222 same way as CONFIG_ENV_OFFSET. 223 224 This value is also in units of bytes, but must also be aligned to 225 an MMC sector boundary. 226 227 CONFIG_ENV_SIZE_REDUND (optional): 228 229 This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is 230 set. If this value is set, it must be set to the same value as 231 CONFIG_ENV_SIZE. 232 233config ENV_IS_IN_NAND 234 bool "Environment in a NAND device" 235 depends on !CHAIN_OF_TRUST 236 help 237 Define this if you have a NAND device which you want to use for the 238 environment. 239 240 - CONFIG_ENV_OFFSET: 241 - CONFIG_ENV_SIZE: 242 243 These two #defines specify the offset and size of the environment 244 area within the first NAND device. CONFIG_ENV_OFFSET must be 245 aligned to an erase block boundary. 246 247 - CONFIG_ENV_OFFSET_REDUND (optional): 248 249 This setting describes a second storage area of CONFIG_ENV_SIZE 250 size used to hold a redundant copy of the environment data, so 251 that there is a valid backup copy in case there is a power failure 252 during a "saveenv" operation. CONFIG_ENV_OFFSET_REDUND must be 253 aligned to an erase block boundary. 254 255 - CONFIG_ENV_RANGE (optional): 256 257 Specifies the length of the region in which the environment 258 can be written. This should be a multiple of the NAND device's 259 block size. Specifying a range with more erase blocks than 260 are needed to hold CONFIG_ENV_SIZE allows bad blocks within 261 the range to be avoided. 262 263 - CONFIG_ENV_OFFSET_OOB (optional): 264 265 Enables support for dynamically retrieving the offset of the 266 environment from block zero's out-of-band data. The 267 "nand env.oob" command can be used to record this offset. 268 Currently, CONFIG_ENV_OFFSET_REDUND is not supported when 269 using CONFIG_ENV_OFFSET_OOB. 270 271config ENV_IS_IN_UBI 272 bool "Environment in a UBI volume" 273 depends on !CHAIN_OF_TRUST 274 help 275 Define this if you have an UBI volume that you want to use for the 276 environment. This has the benefit of wear-leveling the environment 277 accesses, which is important on NAND. 278 279 - CONFIG_ENV_UBI_PART: 280 281 Define this to a string that is the mtd partition containing the UBI. 282 283 - CONFIG_ENV_UBI_VOLUME: 284 285 Define this to the name of the volume that you want to store the 286 environment in. 287 288 - CONFIG_ENV_UBI_VOLUME_REDUND: 289 290 Define this to the name of another volume to store a second copy of 291 the environment in. This will enable redundant environments in UBI. 292 It is assumed that both volumes are in the same MTD partition. 293 294 - CONFIG_UBI_SILENCE_MSG 295 - CONFIG_UBIFS_SILENCE_MSG 296 297 You will probably want to define these to avoid a really noisy system 298 when storing the env in UBI. 299 300config ENV_IS_NOWHERE 301 bool "Environment is not stored" 302 help 303 Define this if you don't want to or can't have an environment stored 304 on a storage medium 305 306if ARCH_SUNXI 307 308config ENV_OFFSET 309 hex "Environment Offset" 310 depends on !ENV_IS_IN_UBI 311 depends on !ENV_IS_NOWHERE 312 default 0x88000 if ARCH_SUNXI 313 help 314 Offset from the start of the device (or partition) 315 316config ENV_SIZE 317 hex "Environment Size" 318 depends on !ENV_IS_NOWHERE 319 default 0x20000 if ARCH_SUNXI 320 help 321 Size of the environment storage area 322 323config ENV_UBI_PART 324 string "UBI partition name" 325 depends on ENV_IS_IN_UBI 326 help 327 MTD partition containing the UBI device 328 329config ENV_UBI_VOLUME 330 string "UBI volume name" 331 depends on ENV_IS_IN_UBI 332 help 333 Name of the volume that you want to store the environment in. 334 335endif 336 337endmenu 338 339config BOOTDELAY 340 int "delay in seconds before automatically booting" 341 default 2 342 depends on AUTOBOOT 343 help 344 Delay before automatically running bootcmd; 345 set to 0 to autoboot with no delay, but you can stop it by key input. 346 set to -1 to disable autoboot. 347 set to -2 to autoboot with no delay and not check for abort 348 349 See doc/README.autoboot for details. 350 351menu "Console" 352 353config MENU 354 bool 355 help 356 This is the library functionality to provide a text-based menu of 357 choices for the user to make choices with. 358 359config CONSOLE_RECORD 360 bool "Console recording" 361 help 362 This provides a way to record console output (and provide console 363 input) through circular buffers. This is mostly useful for testing. 364 Console output is recorded even when the console is silent. 365 To enable console recording, call console_record_reset_enable() 366 from your code. 367 368config CONSOLE_RECORD_OUT_SIZE 369 hex "Output buffer size" 370 depends on CONSOLE_RECORD 371 default 0x400 if CONSOLE_RECORD 372 help 373 Set the size of the console output buffer. When this fills up, no 374 more data will be recorded until some is removed. The buffer is 375 allocated immediately after the malloc() region is ready. 376 377config CONSOLE_RECORD_IN_SIZE 378 hex "Input buffer size" 379 depends on CONSOLE_RECORD 380 default 0x100 if CONSOLE_RECORD 381 help 382 Set the size of the console input buffer. When this contains data, 383 tstc() and getc() will use this in preference to real device input. 384 The buffer is allocated immediately after the malloc() region is 385 ready. 386 387config IDENT_STRING 388 string "Board specific string to be added to uboot version string" 389 help 390 This options adds the board specific name to u-boot version. 391 392config SILENT_CONSOLE 393 bool "Support a silent console" 394 help 395 This option allows the console to be silenced, meaning that no 396 output will appear on the console devices. This is controlled by 397 setting the environment vaariable 'silent' to a non-empty value. 398 Note this also silences the console when booting Linux. 399 400 When the console is set up, the variable is checked, and the 401 GD_FLG_SILENT flag is set. Changing the environment variable later 402 will update the flag. 403 404config SILENT_U_BOOT_ONLY 405 bool "Only silence the U-Boot console" 406 depends on SILENT_CONSOLE 407 help 408 Normally when the U-Boot console is silenced, Linux's console is 409 also silenced (assuming the board boots into Linux). This option 410 allows the linux console to operate normally, even if U-Boot's 411 is silenced. 412 413config SILENT_CONSOLE_UPDATE_ON_SET 414 bool "Changes to the 'silent' environment variable update immediately" 415 depends on SILENT_CONSOLE 416 default y if SILENT_CONSOLE 417 help 418 When the 'silent' environment variable is changed, update the 419 console silence flag immediately. This allows 'setenv' to be used 420 to silence or un-silence the console. 421 422 The effect is that any change to the variable will affect the 423 GD_FLG_SILENT flag. 424 425config SILENT_CONSOLE_UPDATE_ON_RELOC 426 bool "Allow flags to take effect on relocation" 427 depends on SILENT_CONSOLE 428 help 429 In some cases the environment is not available until relocation 430 (e.g. NAND). This option makes the value of the 'silent' 431 environment variable take effect at relocation. 432 433config PRE_CONSOLE_BUFFER 434 bool "Buffer characters before the console is available" 435 help 436 Prior to the console being initialised (i.e. serial UART 437 initialised etc) all console output is silently discarded. 438 Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to 439 buffer any console messages prior to the console being 440 initialised to a buffer. The buffer is a circular buffer, so 441 if it overflows, earlier output is discarded. 442 443 Note that this is not currently supported in SPL. It would be 444 useful to be able to share the pre-console buffer with SPL. 445 446config PRE_CON_BUF_SZ 447 int "Sets the size of the pre-console buffer" 448 depends on PRE_CONSOLE_BUFFER 449 default 4096 450 help 451 The size of the pre-console buffer affects how much console output 452 can be held before it overflows and starts discarding earlier 453 output. Normally there is very little output at this early stage, 454 unless debugging is enabled, so allow enough for ~10 lines of 455 text. 456 457 This is a useful feature if you are using a video console and 458 want to see the full boot output on the console. Without this 459 option only the post-relocation output will be displayed. 460 461config PRE_CON_BUF_ADDR 462 hex "Address of the pre-console buffer" 463 depends on PRE_CONSOLE_BUFFER 464 default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I 465 default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I 466 help 467 This sets the start address of the pre-console buffer. This must 468 be in available memory and is accessed before relocation and 469 possibly before DRAM is set up. Therefore choose an address 470 carefully. 471 472 We should consider removing this option and allocating the memory 473 in board_init_f_init_reserve() instead. 474 475config CONSOLE_MUX 476 bool "Enable console multiplexing" 477 default y if DM_VIDEO || VIDEO || LCD 478 help 479 This allows multiple devices to be used for each console 'file'. 480 For example, stdout can be set to go to serial and video. 481 Similarly, stdin can be set to come from serial and keyboard. 482 Input can be provided from either source. Console multiplexing 483 adds a small amount of size to U-Boot. Changes to the environment 484 variables stdout, stdin and stderr will take effect immediately. 485 486config SYS_CONSOLE_IS_IN_ENV 487 bool "Select console devices from the environment" 488 default y if CONSOLE_MUX 489 help 490 This allows multiple input/output devices to be set at boot time. 491 For example, if stdout is set to "serial,video" then output will 492 be sent to both the serial and video devices on boot. The 493 environment variables can be updated after boot to change the 494 input/output devices. 495 496config SYS_CONSOLE_OVERWRITE_ROUTINE 497 bool "Allow board control over console overwriting" 498 help 499 If this is enabled, and the board-specific function 500 overwrite_console() returns 1, the stdin, stderr and stdout are 501 switched to the serial port, else the settings in the environment 502 are used. If this is not enabled, the console will not be switched 503 to serial. 504 505config SYS_CONSOLE_ENV_OVERWRITE 506 bool "Update environment variables during console init" 507 help 508 The console environment variables (stdout, stdin, stderr) can be 509 used to determine the correct console devices on start-up. This 510 option writes the console devices to these variables on console 511 start-up (after relocation). This causes the environment to be 512 updated to match the console devices actually chosen. 513 514config SYS_CONSOLE_INFO_QUIET 515 bool "Don't display the console devices on boot" 516 help 517 Normally U-Boot displays the current settings for stdout, stdin 518 and stderr on boot when the post-relocation console is set up. 519 Enable this option to supress this output. It can be obtained by 520 calling stdio_print_current_devices() from board code. 521 522config SYS_STDIO_DEREGISTER 523 bool "Allow deregistering stdio devices" 524 default y if USB_KEYBOARD 525 help 526 Generally there is no need to deregister stdio devices since they 527 are never deactivated. But if a stdio device is used which can be 528 removed (for example a USB keyboard) then this option can be 529 enabled to ensure this is handled correctly. 530 531endmenu 532 533config DTB_RESELECT 534 bool "Support swapping dtbs at a later point in boot" 535 depends on FIT_EMBED 536 help 537 It is possible during initial boot you may need to use a generic 538 dtb until you can fully determine the board your running on. This 539 config allows boards to implement a function at a later point 540 during boot to switch to the "correct" dtb. 541 542config FIT_EMBED 543 bool "Support a FIT image embedded in the U-boot image" 544 help 545 This option provides hooks to allow U-boot to parse an 546 appended FIT image and enable board specific code to then select 547 the correct DTB to be used. 548 549config DEFAULT_FDT_FILE 550 string "Default fdt file" 551 help 552 This option is used to set the default fdt file to boot OS. 553 554config VERSION_VARIABLE 555 bool "add U-Boot environment variable vers" 556 default n 557 help 558 If this variable is defined, an environment variable 559 named "ver" is created by U-Boot showing the U-Boot 560 version as printed by the "version" command. 561 Any change to this variable will be reverted at the 562 next reset. 563 564config BOARD_LATE_INIT 565 bool 566 help 567 Sometimes board require some initialization code that might 568 require once the actual init done, example saving board specific env, 569 boot-modes etc. which eventually done at late. 570 571 So this config enable the late init code with the help of board_late_init 572 function which should defined on respective boards. 573 574config DISPLAY_CPUINFO 575 bool "Display information about the CPU during start up" 576 default y if ARM || NIOS2 || X86 || XTENSA 577 help 578 Display information about the CPU that U-Boot is running on 579 when U-Boot starts up. The function print_cpuinfo() is called 580 to do this. 581 582config DISPLAY_BOARDINFO 583 bool "Display information about the board during start up" 584 default y if ARM || M68K || MIPS || PPC || SANDBOX || XTENSA 585 help 586 Display information about the board that U-Boot is running on 587 when U-Boot starts up. The board function checkboard() is called 588 to do this. 589 590menu "Start-up hooks" 591 592config ARCH_EARLY_INIT_R 593 bool "Call arch-specific init soon after relocation" 594 default y if X86 595 help 596 With this option U-Boot will call arch_early_init_r() soon after 597 relocation. Driver model is running by this point, and the cache 598 is on. Note that board_early_init_r() is called first, if 599 enabled. This can be used to set up architecture-specific devices. 600 601config ARCH_MISC_INIT 602 bool "Call arch-specific init after relocation, when console is ready" 603 help 604 With this option U-Boot will call arch_misc_init() after 605 relocation to allow miscellaneous arch-dependent initialisation 606 to be performed. This function should be defined by the board 607 and will be called after the console is set up, after relocaiton. 608 609config BOARD_EARLY_INIT_F 610 bool "Call board-specific init before relocation" 611 default y if X86 612 help 613 Some boards need to perform initialisation as soon as possible 614 after boot. With this option, U-Boot calls board_early_init_f() 615 after driver model is ready in the pre-relocation init sequence. 616 Note that the normal serial console is not yet set up, but the 617 debug UART will be available if enabled. 618 619endmenu 620 621menu "Security support" 622 623config HASH 624 bool # "Support hashing API (SHA1, SHA256, etc.)" 625 help 626 This provides a way to hash data in memory using various supported 627 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 628 and the algorithms it supports are defined in common/hash.c. See 629 also CMD_HASH for command-line access. 630 631endmenu 632 633source "common/spl/Kconfig" 634