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 114config BOOTSTAGE_PRINTF_TIMESTAMP 115 bool "Support printf timestamp" 116 help 117 Enabling this will support printf timestamp. 118endmenu 119 120menu "Boot media" 121 122config NOR_BOOT 123 bool "Support for booting from NOR flash" 124 depends on NOR 125 help 126 Enabling this will make a U-Boot binary that is capable of being 127 booted via NOR. In this case we will enable certain pinmux early 128 as the ROM only partially sets up pinmux. We also default to using 129 NOR for environment. 130 131config NAND_BOOT 132 bool "Support for booting from NAND flash" 133 default n 134 help 135 Enabling this will make a U-Boot binary that is capable of being 136 booted via NAND flash. This is not a must, some SoCs need this, 137 some not. 138 139config ONENAND_BOOT 140 bool "Support for booting from ONENAND" 141 default n 142 help 143 Enabling this will make a U-Boot binary that is capable of being 144 booted via ONENAND. This is not a must, some SoCs need this, 145 some not. 146 147config QSPI_BOOT 148 bool "Support for booting from QSPI flash" 149 default n 150 help 151 Enabling this will make a U-Boot binary that is capable of being 152 booted via QSPI flash. This is not a must, some SoCs need this, 153 some not. 154 155config SATA_BOOT 156 bool "Support for booting from SATA" 157 default n 158 help 159 Enabling this will make a U-Boot binary that is capable of being 160 booted via SATA. This is not a must, some SoCs need this, 161 some not. 162 163config SD_BOOT 164 bool "Support for booting from SD/EMMC" 165 default n 166 help 167 Enabling this will make a U-Boot binary that is capable of being 168 booted via SD/EMMC. This is not a must, some SoCs need this, 169 some not. 170 171config SPI_BOOT 172 bool "Support for booting from SPI flash" 173 default n 174 help 175 Enabling this will make a U-Boot binary that is capable of being 176 booted via SPI flash. This is not a must, some SoCs need this, 177 some not. 178 179endmenu 180 181config PASS_DEVICE_SERIAL_BY_FDT 182 bool "Pass the device serial number to kernel through devicetree" 183 default y 184 help 185 Enabling this will pass a device serial number to kernel by devicetree 186 "serial-number" properties. 187 188config BOOTDELAY 189 int "delay in seconds before automatically booting" 190 default 2 191 depends on AUTOBOOT 192 help 193 Delay before automatically running bootcmd; 194 set to 0 to autoboot with no delay, but you can stop it by key input. 195 set to -1 to disable autoboot. 196 set to -2 to autoboot with no delay and not check for abort 197 198 See doc/README.autoboot for details. 199 200config USE_BOOTARGS 201 bool "Enable boot arguments" 202 help 203 Provide boot arguments to bootm command. Boot arguments are specified 204 in CONFIG_BOOTARGS option. Enable this option to be able to specify 205 CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS 206 will be undefined and won't take any space in U-Boot image. 207 208config BOOTARGS 209 string "Boot arguments" 210 depends on USE_BOOTARGS 211 help 212 This can be used to pass arguments to the bootm command. The value of 213 CONFIG_BOOTARGS goes into the environment value "bootargs". Note that 214 this value will also override the "chosen" node in FDT blob. 215 216menu "Console" 217 218config MENU 219 bool 220 help 221 This is the library functionality to provide a text-based menu of 222 choices for the user to make choices with. 223 224config CONSOLE_RECORD 225 bool "Console recording" 226 help 227 This provides a way to record console output (and provide console 228 input) through circular buffers. This is mostly useful for testing. 229 Console output is recorded even when the console is silent. 230 To enable console recording, call console_record_reset_enable() 231 from your code. 232 233config CONSOLE_RECORD_OUT_SIZE 234 hex "Output buffer size" 235 depends on CONSOLE_RECORD 236 default 0x400 if CONSOLE_RECORD && !ARCH_ROCKCHIP 237 default 0x2000 if CONSOLE_RECORD && ARCH_ROCKCHIP 238 help 239 Set the size of the console output buffer. When this fills up, no 240 more data will be recorded until some is removed. The buffer is 241 allocated immediately after the malloc() region is ready. 242 243config CONSOLE_RECORD_IN_SIZE 244 hex "Input buffer size" 245 depends on CONSOLE_RECORD 246 default 0x100 if CONSOLE_RECORD 247 help 248 Set the size of the console input buffer. When this contains data, 249 tstc() and getc() will use this in preference to real device input. 250 The buffer is allocated immediately after the malloc() region is 251 ready. 252 253config CONSOLE_DISABLE_CLI 254 bool "disable ctrlc" 255 default n 256 help 257 This disable CLI interactive in verified-boot. 258 259config DISABLE_CONSOLE 260 bool "disable console in & out" 261 help 262 This disable console in & out. 263 264config IDENT_STRING 265 string "Board specific string to be added to uboot version string" 266 help 267 This options adds the board specific name to u-boot version. 268 269config LOGLEVEL 270 int "loglevel" 271 default 4 272 range 0 8 273 help 274 All Messages with a loglevel smaller than the console loglevel will 275 be compiled in. The loglevels are defined as follows: 276 277 0 (KERN_EMERG) system is unusable 278 1 (KERN_ALERT) action must be taken immediately 279 2 (KERN_CRIT) critical conditions 280 3 (KERN_ERR) error conditions 281 4 (KERN_WARNING) warning conditions 282 5 (KERN_NOTICE) normal but significant condition 283 6 (KERN_INFO) informational 284 7 (KERN_DEBUG) debug-level messages 285 286config SPL_LOGLEVEL 287 int 288 default LOGLEVEL 289 290config SILENT_CONSOLE 291 bool "Support a silent console" 292 help 293 This option allows the console to be silenced, meaning that no 294 output will appear on the console devices. This is controlled by 295 setting the environment vaariable 'silent' to a non-empty value. 296 Note this also silences the console when booting Linux. 297 298 When the console is set up, the variable is checked, and the 299 GD_FLG_SILENT flag is set. Changing the environment variable later 300 will update the flag. 301 302config SILENT_U_BOOT_ONLY 303 bool "Only silence the U-Boot console" 304 depends on SILENT_CONSOLE 305 help 306 Normally when the U-Boot console is silenced, Linux's console is 307 also silenced (assuming the board boots into Linux). This option 308 allows the linux console to operate normally, even if U-Boot's 309 is silenced. 310 311config SILENT_CONSOLE_UPDATE_ON_SET 312 bool "Changes to the 'silent' environment variable update immediately" 313 depends on SILENT_CONSOLE 314 default y if SILENT_CONSOLE 315 help 316 When the 'silent' environment variable is changed, update the 317 console silence flag immediately. This allows 'setenv' to be used 318 to silence or un-silence the console. 319 320 The effect is that any change to the variable will affect the 321 GD_FLG_SILENT flag. 322 323config SILENT_CONSOLE_UPDATE_ON_RELOC 324 bool "Allow flags to take effect on relocation" 325 depends on SILENT_CONSOLE 326 help 327 In some cases the environment is not available until relocation 328 (e.g. NAND). This option makes the value of the 'silent' 329 environment variable take effect at relocation. 330 331config PRE_CONSOLE_BUFFER 332 bool "Buffer characters before the console is available" 333 help 334 Prior to the console being initialised (i.e. serial UART 335 initialised etc) all console output is silently discarded. 336 Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to 337 buffer any console messages prior to the console being 338 initialised to a buffer. The buffer is a circular buffer, so 339 if it overflows, earlier output is discarded. 340 341 Note that this is not currently supported in SPL. It would be 342 useful to be able to share the pre-console buffer with SPL. 343 344config PRE_CON_BUF_SZ 345 int "Sets the size of the pre-console buffer" 346 depends on PRE_CONSOLE_BUFFER 347 default 4096 348 help 349 The size of the pre-console buffer affects how much console output 350 can be held before it overflows and starts discarding earlier 351 output. Normally there is very little output at this early stage, 352 unless debugging is enabled, so allow enough for ~10 lines of 353 text. 354 355 This is a useful feature if you are using a video console and 356 want to see the full boot output on the console. Without this 357 option only the post-relocation output will be displayed. 358 359config PRE_CON_BUF_ADDR 360 hex "Address of the pre-console buffer" 361 depends on PRE_CONSOLE_BUFFER 362 default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I 363 default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I 364 help 365 This sets the start address of the pre-console buffer. This must 366 be in available memory and is accessed before relocation and 367 possibly before DRAM is set up. Therefore choose an address 368 carefully. 369 370 We should consider removing this option and allocating the memory 371 in board_init_f_init_reserve() instead. 372 373config CONSOLE_MUX 374 bool "Enable console multiplexing" 375 default y if DM_VIDEO || VIDEO || LCD 376 help 377 This allows multiple devices to be used for each console 'file'. 378 For example, stdout can be set to go to serial and video. 379 Similarly, stdin can be set to come from serial and keyboard. 380 Input can be provided from either source. Console multiplexing 381 adds a small amount of size to U-Boot. Changes to the environment 382 variables stdout, stdin and stderr will take effect immediately. 383 384config SYS_CONSOLE_IS_IN_ENV 385 bool "Select console devices from the environment" 386 default y if CONSOLE_MUX 387 help 388 This allows multiple input/output devices to be set at boot time. 389 For example, if stdout is set to "serial,video" then output will 390 be sent to both the serial and video devices on boot. The 391 environment variables can be updated after boot to change the 392 input/output devices. 393 394config SYS_CONSOLE_OVERWRITE_ROUTINE 395 bool "Allow board control over console overwriting" 396 help 397 If this is enabled, and the board-specific function 398 overwrite_console() returns 1, the stdin, stderr and stdout are 399 switched to the serial port, else the settings in the environment 400 are used. If this is not enabled, the console will not be switched 401 to serial. 402 403config SYS_CONSOLE_ENV_OVERWRITE 404 bool "Update environment variables during console init" 405 help 406 The console environment variables (stdout, stdin, stderr) can be 407 used to determine the correct console devices on start-up. This 408 option writes the console devices to these variables on console 409 start-up (after relocation). This causes the environment to be 410 updated to match the console devices actually chosen. 411 412config SYS_CONSOLE_INFO_QUIET 413 bool "Don't display the console devices on boot" 414 help 415 Normally U-Boot displays the current settings for stdout, stdin 416 and stderr on boot when the post-relocation console is set up. 417 Enable this option to supress this output. It can be obtained by 418 calling stdio_print_current_devices() from board code. 419 420config SYS_STDIO_DEREGISTER 421 bool "Allow deregistering stdio devices" 422 default y if USB_KEYBOARD 423 help 424 Generally there is no need to deregister stdio devices since they 425 are never deactivated. But if a stdio device is used which can be 426 removed (for example a USB keyboard) then this option can be 427 enabled to ensure this is handled correctly. 428 429endmenu 430 431menu "Logging" 432 433config LOG 434 bool "Enable logging support" 435 help 436 This enables support for logging of status and debug messages. These 437 can be displayed on the console, recorded in a memory buffer, or 438 discarded if not needed. Logging supports various categories and 439 levels of severity. 440 441config SPL_LOG 442 bool "Enable logging support in SPL" 443 help 444 This enables support for logging of status and debug messages. These 445 can be displayed on the console, recorded in a memory buffer, or 446 discarded if not needed. Logging supports various categories and 447 levels of severity. 448 449config LOG_MAX_LEVEL 450 int "Maximum log level to record" 451 depends on LOG 452 default 5 453 help 454 This selects the maximum log level that will be recorded. Any value 455 higher than this will be ignored. If possible log statements below 456 this level will be discarded at build time. Levels: 457 458 0 - panic 459 1 - critical 460 2 - error 461 3 - warning 462 4 - note 463 5 - info 464 6 - detail 465 7 - debug 466 467config SPL_LOG_MAX_LEVEL 468 int "Maximum log level to record in SPL" 469 depends on SPL_LOG 470 default 3 471 help 472 This selects the maximum log level that will be recorded. Any value 473 higher than this will be ignored. If possible log statements below 474 this level will be discarded at build time. Levels: 475 476 0 - panic 477 1 - critical 478 2 - error 479 3 - warning 480 4 - note 481 5 - info 482 6 - detail 483 7 - debug 484 485config LOG_CONSOLE 486 bool "Allow log output to the console" 487 depends on LOG 488 default y 489 help 490 Enables a log driver which writes log records to the console. 491 Generally the console is the serial port or LCD display. Only the 492 log message is shown - other details like level, category, file and 493 line number are omitted. 494 495config LOG_SPL_CONSOLE 496 bool "Allow log output to the console in SPL" 497 depends on LOG_SPL 498 default y 499 help 500 Enables a log driver which writes log records to the console. 501 Generally the console is the serial port or LCD display. Only the 502 log message is shown - other details like level, category, file and 503 line number are omitted. 504 505config LOG_TEST 506 bool "Provide a test for logging" 507 depends on LOG 508 default y if SANDBOX 509 help 510 This enables a 'log test' command to test logging. It is normally 511 executed from a pytest and simply outputs logging information 512 in various different ways to test that the logging system works 513 correctly with varoius settings. 514 515endmenu 516 517config DEFAULT_FDT_FILE 518 string "Default fdt file" 519 help 520 This option is used to set the default fdt file to boot OS. 521 522config VERSION_VARIABLE 523 bool "add U-Boot environment variable vers" 524 default n 525 help 526 If this variable is defined, an environment variable 527 named "ver" is created by U-Boot showing the U-Boot 528 version as printed by the "version" command. 529 Any change to this variable will be reverted at the 530 next reset. 531 532config BOARD_LATE_INIT 533 bool 534 help 535 Sometimes board require some initialization code that might 536 require once the actual init done, example saving board specific env, 537 boot-modes etc. which eventually done at late. 538 539 So this config enable the late init code with the help of board_late_init 540 function which should defined on respective boards. 541 542config DISPLAY_CPUINFO 543 bool "Display information about the CPU during start up" 544 default y if ARM || NIOS2 || X86 || XTENSA 545 help 546 Display information about the CPU that U-Boot is running on 547 when U-Boot starts up. The function print_cpuinfo() is called 548 to do this. 549 550config DISPLAY_BOARDINFO 551 bool "Display information about the board during start up" 552 default y if ARM || M68K || MIPS || PPC || SANDBOX || XTENSA 553 help 554 Display information about the board that U-Boot is running on 555 when U-Boot starts up. The board function checkboard() is called 556 to do this. 557 558menu "Start-up hooks" 559 560config ARCH_EARLY_INIT_R 561 bool "Call arch-specific init soon after relocation" 562 help 563 With this option U-Boot will call arch_early_init_r() soon after 564 relocation. Driver model is running by this point, and the cache 565 is on. Note that board_early_init_r() is called first, if 566 enabled. This can be used to set up architecture-specific devices. 567 568config ARCH_MISC_INIT 569 bool "Call arch-specific init after relocation, when console is ready" 570 help 571 With this option U-Boot will call arch_misc_init() after 572 relocation to allow miscellaneous arch-dependent initialisation 573 to be performed. This function should be defined by the board 574 and will be called after the console is set up, after relocaiton. 575 576config BOARD_EARLY_INIT_F 577 bool "Call board-specific init before relocation" 578 help 579 Some boards need to perform initialisation as soon as possible 580 after boot. With this option, U-Boot calls board_early_init_f() 581 after driver model is ready in the pre-relocation init sequence. 582 Note that the normal serial console is not yet set up, but the 583 debug UART will be available if enabled. 584 585config BOARD_EARLY_INIT_R 586 bool "Call board-specific init after relocation" 587 help 588 Some boards need to perform initialisation as directly after 589 relocation. With this option, U-Boot calls board_early_init_r() 590 in the post-relocation init sequence. 591 592endmenu 593config ANDROID_BOOTLOADER 594 bool "Support for Android Bootloader boot flow" 595 default n 596 depends on ANDROID_BOOT_IMAGE 597 help 598 If enabled, adds support to boot an Android device following the 599 Android Bootloader boot flow. This flow requires an Android Bootloader 600 to handle the Android Bootloader Message stored in the Boot Control 601 Block (BCB), normally in the "misc" partition of an Android device. 602 The BCB is used to determine the boot mode of the device (normal mode, 603 recovery mode or bootloader mode) and, if enabled, the slot to boot 604 from in devices with multiple boot slots (A/B devices). 605 606config ANDROID_AB 607 bool "Support for Android A/B updates" 608 default n 609 help 610 If enabled, adds support for the new Android A/B update model. This 611 allows the bootloader to select which slot to boot from based on the 612 information provided by userspace via the Android boot_ctrl HAL. This 613 allows a bootloader to try a new version of the system but roll back 614 to previous version if the new one didn't boot all the way. 615 616config ANDROID_WRITE_KEYBOX 617 bool "Support Write Keybox" 618 default y 619 depends on OPTEE_CLIENT 620 help 621 This enable support write keybox to secure storage. 622 623config ANDROID_AVB 624 bool"Support Android Verified Boot" 625 default n 626 help 627 If enabled, adds support the android verified boot. The avb get the 628 digital signature and key from vemeta. Then use the RSA2048 and sha256 629 to verify the boot images. The vbmeta must be matched with images, 630 if not, verify failed. 631 632config ANDROID_KEYMASTER_CA 633 bool "Support Keymaster CA" 634 default y 635 depends on OPTEE_CLIENT 636 help 637 This enable support read/write data in keymaster. 638 639config ANDROID_BOOT_IMAGE 640 bool "Enable support for Android Boot Images" 641 help 642 This enables support for booting images which use the Android 643 image format header. 644 645config ANDROID_BOOT_IMAGE_HASH 646 bool "Enable support for Android image hash verify" 647 depends on ANDROID_BOOT_IMAGE 648 select SHA1 if !DM_CRYPTO 649 help 650 This enables support for Android image hash verify, the mkbootimg always use 651 SHA1 for images. 652 653config SKIP_RELOCATE_UBOOT 654 bool "Skip U-Boot relocation" 655 default y if !ARM64 656 help 657 This enable support for skipping U-Boot relocation. 658 659menu "Security support" 660 661config HASH 662 bool # "Support hashing API (SHA1, SHA256, etc.)" 663 help 664 This provides a way to hash data in memory using various supported 665 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 666 and the algorithms it supports are defined in common/hash.c. See 667 also CMD_HASH for command-line access. 668 669endmenu 670 671source "common/spl/Kconfig" 672