1menu "Console" 2 3config MENU 4 bool 5 help 6 This is the library functionality to provide a text-based menu of 7 choices for the user to make choices with. 8 9config CONSOLE_RECORD 10 bool "Console recording" 11 help 12 This provides a way to record console output (and provide console 13 input) through circular buffers. This is mostly useful for testing. 14 Console output is recorded even when the console is silent. 15 To enable console recording, call console_record_reset_enable() 16 from your code. 17 18config CONSOLE_RECORD_INIT_F 19 bool "Enable console recording during pre-relocation init" 20 depends on CONSOLE_RECORD && SYS_MALLOC_F 21 default y 22 help 23 This option enables console recording during pre-relocation init. 24 CONFIG_SYS_MALLOC_F must be enabled to use this feature. 25 26config CONSOLE_RECORD_OUT_SIZE 27 hex "Output buffer size" 28 depends on CONSOLE_RECORD 29 default 0x400 if CONSOLE_RECORD 30 help 31 Set the size of the console recording output buffer. When this fills 32 up, no more data will be recorded until some is removed. The buffer 33 is allocated immediately after the malloc() region is ready. 34 35config CONSOLE_RECORD_OUT_SIZE_F 36 hex "Output buffer size before relocation" 37 depends on CONSOLE_RECORD 38 default 0x400 if CONSOLE_RECORD 39 help 40 Set the size of the console recording output buffer before 41 relocation. When this fills up, no more data will be recorded until 42 some is removed. The buffer is allocated immediately after the early 43 malloc() region is ready. 44 45config CONSOLE_RECORD_IN_SIZE 46 hex "Input buffer size" 47 depends on CONSOLE_RECORD 48 default 0x100 if CONSOLE_RECORD 49 help 50 Set the size of the console recording input buffer. When this contains data, 51 tstc() and getc() will use this in preference to real device input. 52 The buffer is allocated immediately after the malloc() region is 53 ready. 54 55config SYS_CBSIZE 56 int "Console input buffer size" 57 default 2048 if ARCH_TEGRA || ARCH_VERSAL || ARCH_ZYNQ || ARCH_ZYNQMP || \ 58 RCAR_GEN3 || TARGET_SOCFPGA_SOC64 59 default 512 if ARCH_MX5 || ARCH_MX6 || ARCH_MX7 || FSL_LSCH2 || \ 60 FSL_LSCH3 || X86 61 default 256 if M68K || PPC 62 default 1024 63 help 64 Set the size of the console input buffer. This is used both in the 65 case of reading input literally from the user in some manner as well 66 as when we need to construct or modify that type of input, for 67 example when constructing "bootargs" for the OS. 68 69config SYS_PBSIZE 70 int "Console output buffer size" 71 default 1024 if ARCH_SUNXI 72 default 1044 73 help 74 Set the size of the console output buffer. This is used when we need 75 to work with some form of a buffer while providing output in some 76 form to the user. 77 78config DISABLE_CONSOLE 79 bool "Add functionality to disable console completely" 80 help 81 Disable console (in & out). 82 83config IDENT_STRING 84 string "Board specific string to be added to uboot version string" 85 help 86 This options adds the board specific name to u-boot version. 87 88config LOGLEVEL 89 int "loglevel" 90 default 4 91 range 0 10 92 help 93 All Messages with a loglevel smaller than the console loglevel will 94 be compiled in. The loglevels are defined as follows: 95 96 0 - emergency 97 1 - alert 98 2 - critical 99 3 - error 100 4 - warning 101 5 - note 102 6 - info 103 7 - debug 104 8 - debug content 105 9 - debug hardware I/O 106 107config SPL_LOGLEVEL 108 int 109 depends on SPL 110 default LOGLEVEL 111 112config TPL_LOGLEVEL 113 int 114 depends on TPL 115 default LOGLEVEL 116 117config VPL_LOGLEVEL 118 int "loglevel for VPL" 119 depends on VPL 120 default LOGLEVEL 121 help 122 All Messages with a loglevel smaller than the console loglevel will 123 be compiled in to VPL. See LOGLEVEL for a list of available log 124 levels. Setting this to a value above 4 may increase the code size 125 significantly. 126 127config SILENT_CONSOLE 128 bool "Support a silent console" 129 help 130 This option allows the console to be silenced, meaning that no 131 output will appear on the console devices. This is controlled by 132 setting the environment variable 'silent' to a non-empty value. 133 Note this also silences the console when booting Linux. 134 135 When the console is set up, the variable is checked, and the 136 GD_FLG_SILENT flag is set. Changing the environment variable later 137 will update the flag. 138 139config SPL_SILENT_CONSOLE 140 bool "Use a silent console in SPL" 141 default y if SILENT_CONSOLE && !SANDBOX 142 help 143 This selects a silent console in SPL. When enabled it drops some 144 output messages. The GD_FLG_SILENT flag is not used in SPL so there 145 is no run-time control of console messages in SPL. 146 147 Future work may allow the SPL console to be silenced completely using 148 this option. 149 150config TPL_SILENT_CONSOLE 151 bool "Use a silent console in TPL" 152 default y if SILENT_CONSOLE && !SANDBOX 153 help 154 This selects a silent console in TPL. When enabled it drops some 155 output messages. The GD_FLG_SILENT flag is not used in TPL so there 156 is no run-time control of console messages in TPL. 157 158 Future work may allow the TPL console to be silenced completely using 159 this option. 160 161config SILENT_U_BOOT_ONLY 162 bool "Only silence the U-Boot console" 163 depends on SILENT_CONSOLE 164 help 165 Normally when the U-Boot console is silenced, Linux's console is 166 also silenced (assuming the board boots into Linux). This option 167 allows the linux console to operate normally, even if U-Boot's 168 is silenced. 169 170config SILENT_CONSOLE_UPDATE_ON_SET 171 bool "Changes to the 'silent' environment variable update immediately" 172 depends on SILENT_CONSOLE 173 default y if SILENT_CONSOLE 174 help 175 When the 'silent' environment variable is changed, update the 176 console silence flag immediately. This allows 'setenv' to be used 177 to silence or un-silence the console. 178 179 The effect is that any change to the variable will affect the 180 GD_FLG_SILENT flag. 181 182config SILENT_CONSOLE_UPDATE_ON_RELOC 183 bool "Allow flags to take effect on relocation" 184 depends on SILENT_CONSOLE 185 help 186 In some cases the environment is not available until relocation 187 (e.g. NAND). This option makes the value of the 'silent' 188 environment variable take effect at relocation. 189 190config SILENT_CONSOLE_UNTIL_ENV 191 bool "Keep console silent until environment is loaded" 192 depends on SILENT_CONSOLE 193 help 194 This option makes sure U-Boot will never use the console unless the 195 environment from flash does not contain the 'silent' variable. If 196 set, the console is kept silent until after the environment was 197 loaded. Use this in combination with PRE_CONSOLE_BUFFER to print out 198 earlier messages after loading the environment when allowed. 199 200config PRE_CONSOLE_BUFFER 201 bool "Buffer characters before the console is available" 202 help 203 Prior to the console being initialised (i.e. serial UART 204 initialised etc) all console output is silently discarded. 205 Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to 206 buffer any console messages prior to the console being 207 initialised to a buffer. The buffer is a circular buffer, so 208 if it overflows, earlier output is discarded. 209 210 Note that this is not currently supported in SPL. It would be 211 useful to be able to share the pre-console buffer with SPL. 212 213config PRE_CON_BUF_SZ 214 int "Sets the size of the pre-console buffer" 215 depends on PRE_CONSOLE_BUFFER 216 default 4096 217 help 218 The size of the pre-console buffer affects how much console output 219 can be held before it overflows and starts discarding earlier 220 output. Normally there is very little output at this early stage, 221 unless debugging is enabled, so allow enough for ~10 lines of 222 text. 223 224 This is a useful feature if you are using a video console and 225 want to see the full boot output on the console. Without this 226 option only the post-relocation output will be displayed. 227 228config PRE_CON_BUF_ADDR 229 hex "Address of the pre-console buffer" 230 depends on PRE_CONSOLE_BUFFER 231 default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I 232 default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I 233 default 0x0f000000 if ROCKCHIP_RK3288 234 default 0x0f200000 if ROCKCHIP_RK3399 || ROCKCHIP_RK3328 235 help 236 This sets the start address of the pre-console buffer. This must 237 be in available memory and is accessed before relocation and 238 possibly before DRAM is set up. Therefore choose an address 239 carefully. 240 241 We should consider removing this option and allocating the memory 242 in board_init_f_init_reserve() instead. 243 244config CONSOLE_FLUSH_SUPPORT 245 bool "Enable console flush support" 246 default y 247 help 248 This enables compilation of flush() function for console flush support. 249 250config CONSOLE_FLUSH_ON_NEWLINE 251 bool "Flush console buffer on every newline character" 252 depends on DM_SERIAL 253 help 254 This makes the serial core code flush the console device 255 whenever a newline (\n) character has been emitted. This can 256 be especially useful when "printf debugging", as otherwise 257 lots of output could still be in the UART's FIFO by the time 258 one hits the code which causes the CPU to hang or reset. 259 260config CONSOLE_MUX 261 bool "Enable console multiplexing" 262 default y if VIDEO || LCD 263 help 264 This allows multiple devices to be used for each console 'file'. 265 For example, stdout can be set to go to serial and video. 266 Similarly, stdin can be set to come from serial and keyboard. 267 Input can be provided from either source. Console multiplexing 268 adds a small amount of size to U-Boot. Changes to the environment 269 variables stdout, stdin and stderr will take effect immediately. 270 271config SYS_CONSOLE_IS_IN_ENV 272 bool "Select console devices from the environment" 273 default y if CONSOLE_MUX 274 help 275 This allows multiple input/output devices to be set at boot time. 276 For example, if stdout is set to "serial,vidconsole" then output 277 will be sent to both the serial and video devices on boot. The 278 environment variables can be updated after boot to change the 279 input/output devices. 280 281config SYS_CONSOLE_OVERWRITE_ROUTINE 282 bool "Allow board control over console overwriting" 283 help 284 If this is enabled, and the board-specific function 285 overwrite_console() returns 1, the stdin, stderr and stdout are 286 switched to the serial port, else the settings in the environment 287 are used. If this is not enabled, the console will not be switched 288 to serial. 289 290config SYS_CONSOLE_ENV_OVERWRITE 291 bool "Update environment variables during console init" 292 depends on SYS_CONSOLE_IS_IN_ENV 293 help 294 The console environment variables (stdout, stdin, stderr) can be 295 used to determine the correct console devices on start-up. This 296 option writes the console devices to these variables on console 297 start-up (after relocation). This causes the environment to be 298 updated to match the console devices actually chosen. 299 300config SYS_CONSOLE_INFO_QUIET 301 bool "Don't display the console devices on boot" 302 help 303 Normally U-Boot displays the current settings for stdout, stdin 304 and stderr on boot when the post-relocation console is set up. 305 Enable this option to suppress this output. It can be obtained by 306 calling stdio_print_current_devices() from board code. 307 308config SYS_STDIO_DEREGISTER 309 bool "Allow deregistering stdio devices" 310 default y if USB_KEYBOARD 311 help 312 Generally there is no need to deregister stdio devices since they 313 are never deactivated. But if a stdio device is used which can be 314 removed (for example a USB keyboard) then this option can be 315 enabled to ensure this is handled correctly. 316 317config SPL_SYS_STDIO_DEREGISTER 318 bool "Allow deregistering stdio devices in SPL" 319 help 320 Generally there is no need to deregister stdio devices since they 321 are never deactivated. But if a stdio device is used which can be 322 removed (for example a USB keyboard) then this option can be 323 enabled to ensure this is handled correctly. This is very rarely 324 needed in SPL. 325 326config SYS_DEVICE_NULLDEV 327 bool "Enable a null device for stdio" 328 default y if SPLASH_SCREEN || SYS_STDIO_DEREGISTER 329 help 330 Enable creation of a "nulldev" stdio device. This allows silent 331 operation of the console by setting stdout to "nulldev". Enable 332 this to use a serial console under board control. 333 334endmenu 335 336menu "Logging" 337 338config LOG 339 bool "Enable logging support" 340 depends on DM 341 help 342 This enables support for logging of status and debug messages. These 343 can be displayed on the console, recorded in a memory buffer, or 344 discarded if not needed. Logging supports various categories and 345 levels of severity. 346 347if LOG 348 349config LOG_MAX_LEVEL 350 int "Maximum log level to record" 351 default 6 352 range 0 9 353 help 354 This selects the maximum log level that will be recorded. Any value 355 higher than this will be ignored. If possible log statements below 356 this level will be discarded at build time. Levels: 357 358 0 - emergency 359 1 - alert 360 2 - critical 361 3 - error 362 4 - warning 363 5 - note 364 6 - info 365 7 - debug 366 8 - debug content 367 9 - debug hardware I/O 368 369config LOG_DEFAULT_LEVEL 370 int "Default logging level to display" 371 default LOG_MAX_LEVEL 372 range 0 LOG_MAX_LEVEL 373 help 374 This is the default logging level set when U-Boot starts. It can 375 be adjusted later using the 'log level' command. Note that setting 376 this to a value above LOG_MAX_LEVEL will be ineffective, since the 377 higher levels are not compiled in to U-Boot. 378 379 0 - emergency 380 1 - alert 381 2 - critical 382 3 - error 383 4 - warning 384 5 - note 385 6 - info 386 7 - debug 387 8 - debug content 388 9 - debug hardware I/O 389 390config LOG_CONSOLE 391 bool "Allow log output to the console" 392 default y 393 help 394 Enables a log driver which writes log records to the console. 395 Generally the console is the serial port or LCD display. Only the 396 log message is shown - other details like level, category, file and 397 line number are omitted. 398 399config LOGF_FILE 400 bool "Show source file name in log messages by default" 401 help 402 Show the source file name in log messages by default. This value 403 can be overridden using the 'log format' command. 404 405config LOGF_LINE 406 bool "Show source line number in log messages by default" 407 help 408 Show the source line number in log messages by default. This value 409 can be overridden using the 'log format' command. 410 411config LOGF_FUNC 412 bool "Show function name in log messages by default" 413 help 414 Show the function name in log messages by default. This value can 415 be overridden using the 'log format' command. 416 417config LOGF_FUNC_PAD 418 int "Number of characters to use for function" 419 default 20 420 help 421 Sets the field width to use when showing the function. Set this to 422 a larger value if you have lots of long function names, and want 423 things to line up. 424 425config LOG_SYSLOG 426 bool "Log output to syslog server" 427 depends on NET 428 help 429 Enables a log driver which broadcasts log records via UDP port 514 430 to syslog servers. 431 432config SPL_LOG 433 bool "Enable logging support in SPL" 434 depends on LOG && SPL 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 441if SPL_LOG 442 443config SPL_LOG_MAX_LEVEL 444 int "Maximum log level to record in SPL" 445 depends on SPL_LOG 446 default 3 447 range 0 9 448 help 449 This selects the maximum log level that will be recorded. Any value 450 higher than this will be ignored. If possible log statements below 451 this level will be discarded at build time. Levels: 452 453 0 - emergency 454 1 - alert 455 2 - critical 456 3 - error 457 4 - warning 458 5 - note 459 6 - info 460 7 - debug 461 8 - debug content 462 9 - debug hardware I/O 463 464config SPL_LOG_CONSOLE 465 bool "Allow log output to the console in SPL" 466 default y 467 help 468 Enables a log driver which writes log records to the console. 469 Generally the console is the serial port or LCD display. Only the 470 log message is shown - other details like level, category, file and 471 line number are omitted. 472 473endif 474 475config TPL_LOG 476 bool "Enable logging support in TPL" 477 depends on LOG && TPL 478 help 479 This enables support for logging of status and debug messages. These 480 can be displayed on the console, recorded in a memory buffer, or 481 discarded if not needed. Logging supports various categories and 482 levels of severity. 483 484if TPL_LOG 485 486config TPL_LOG_MAX_LEVEL 487 int "Maximum log level to record in TPL" 488 depends on TPL_LOG 489 default 3 490 range 0 9 491 help 492 This selects the maximum log level that will be recorded. Any value 493 higher than this will be ignored. If possible log statements below 494 this level will be discarded at build time. Levels: 495 496 0 - emergency 497 1 - alert 498 2 - critical 499 3 - error 500 4 - warning 501 5 - note 502 6 - info 503 7 - debug 504 8 - debug content 505 9 - debug hardware I/O 506 507config TPL_LOG_CONSOLE 508 bool "Allow log output to the console in TPL" 509 default y 510 help 511 Enables a log driver which writes log records to the console. 512 Generally the console is the serial port or LCD display. Only the 513 log message is shown - other details like level, category, file and 514 line number are omitted. 515 516endif 517 518config VPL_LOG 519 bool "Enable logging support in VPL" 520 depends on LOG && VPL 521 help 522 This enables support for logging of status and debug messages. These 523 can be displayed on the console, recorded in a memory buffer, or 524 discarded if not needed. Logging supports various categories and 525 levels of severity. 526 527if VPL_LOG 528 529config VPL_LOG_MAX_LEVEL 530 int "Maximum log level to record in VPL" 531 default 3 532 help 533 This selects the maximum log level that will be recorded. Any value 534 higher than this will be ignored. If possible log statements below 535 this level will be discarded at build time. Levels: 536 537 0 - emergency 538 1 - alert 539 2 - critical 540 3 - error 541 4 - warning 542 5 - note 543 6 - info 544 7 - debug 545 8 - debug content 546 9 - debug hardware I/O 547 548config VPL_LOG_CONSOLE 549 bool "Allow log output to the console in VPL" 550 default y 551 help 552 Enables a log driver which writes log records to the console. 553 Generally the console is the serial port or LCD display. Only the 554 log message is shown - other details like level, category, file and 555 line number are omitted. 556 557endif 558 559config LOG_ERROR_RETURN 560 bool "Log all functions which return an error" 561 help 562 When an error is returned in U-Boot it is sometimes difficult to 563 figure out the root cause. For example, reading from SPI flash may 564 fail due to a problem in the SPI controller or due to the flash part 565 not returning the expected information. This option changes 566 log_ret() to log any errors it sees. With this option disabled, 567 log_ret() is a nop. 568 569 You can add log_ret() to all functions which return an error code. 570 571config LOG_TEST 572 bool "Provide a test for logging" 573 depends on UNIT_TEST 574 default y if SANDBOX 575 help 576 This enables a 'log test' command to test logging. It is normally 577 executed from a pytest and simply outputs logging information 578 in various different ways to test that the logging system works 579 correctly with various settings. 580 581endif 582 583endmenu 584 585menu "Init options" 586 587config BOARD_TYPES 588 bool "Enable board_type entry in global data struct" 589 help 590 If this option is enabled, a field will be added to the global 591 data struct to store an unsigned long value for the type of 592 platform that we have determined we are on, at run-time. 593 594config DISPLAY_CPUINFO 595 bool "Display information about the CPU during start up" 596 default y if ARC || ARM || NIOS2 || X86 || XTENSA || M68K 597 help 598 Display information about the CPU that U-Boot is running on 599 when U-Boot starts up. The function print_cpuinfo() is called 600 to do this. 601 602config DISPLAY_BOARDINFO 603 bool "Display information about the board during early start up" 604 default y if ARC || ARM || M68K || MIPS || PPC || SANDBOX || XTENSA 605 help 606 Display information about the board that U-Boot is running on 607 when U-Boot starts up. The board function checkboard() is called 608 to do this. 609 610config DISPLAY_BOARDINFO_LATE 611 bool "Display information about the board during late start up" 612 help 613 Display information about the board that U-Boot is running on after 614 the relocation phase. The board function checkboard() is called to do 615 this. 616 617menu "Start-up hooks" 618 619config CYCLIC 620 bool "General-purpose cyclic execution mechanism" 621 help 622 This enables a general-purpose cyclic execution infrastructure, 623 to allow "small" (run-time wise) functions to be executed at 624 a specified frequency. Things like LED blinking or watchdog 625 triggering are examples for such tasks. 626 627if CYCLIC 628 629config CYCLIC_MAX_CPU_TIME_US 630 int "Sets the max allowed time for a cyclic function in us" 631 default 1000 632 help 633 The max allowed time for a cyclic function in us. If a functions 634 takes longer than this duration this function will get unregistered 635 automatically. 636 637endif # CYCLIC 638 639config EVENT 640 bool 641 help 642 This adds a framework for general purpose sending and processing of 643 events, to allow interested parties to be alerted when something 644 happens. This is an attempt to stem the flow of weak functions, 645 hooks, functions in board_f.c and board_r.c and the Kconfig options 646 below. 647 648 See doc/develop/event.rst for more information. 649 650if EVENT 651 652config EVENT_DYNAMIC 653 bool 654 help 655 Enable this to support adding an event spy at runtime, without adding 656 it to the EVENT_SPY*() linker list. This increases code size slightly 657 but provides more flexibility for boards and subsystems that need it. 658 659config EVENT_DEBUG 660 bool "Enable event debugging assistance" 661 default y if SANDBOX 662 help 663 Enable this to get useful features for seeing what is happening with 664 events, such as event-type names. This adds to the code size of 665 U-Boot so can be turned off for production builds. 666 667config SPL_EVENT 668 bool # General-purpose event-handling mechanism in SPL 669 depends on SPL 670 help 671 This adds a framework for general purpose sending and processing of 672 events, to allow interested parties to be alerted when something 673 happens. This is an attempt to stem the flow of weak functions, 674 hooks, functions in board_f.c and board_r.c and the Kconfig options 675 below. 676 677 See doc/develop/event.rst for more information. 678 679config SPL_EVENT_DYNAMIC 680 bool 681 depends on SPL_EVENT && EVENT_DYNAMIC 682 help 683 Enable this to support adding an event spy at runtime, without adding 684 it to the EVENT_SPY*() linker list. This increases code size slightly 685 but provides more flexibility for boards and subsystems that need it. 686 687endif # EVENT 688 689config ARCH_EARLY_INIT_R 690 bool 691 help 692 With this option U-Boot will call arch_early_init_r() soon after 693 relocation. Driver model is running by this point, and the cache 694 is on. Note that board_early_init_r() is called first, if 695 enabled. This can be used to set up architecture-specific devices. 696 697config ARCH_MISC_INIT 698 bool "Call arch-specific init after relocation, when console is ready" 699 help 700 With this option U-Boot will call arch_misc_init() after 701 relocation to allow miscellaneous arch-dependent initialisation 702 to be performed. This function should be defined by the board 703 and will be called after the console is set up, after relocation. 704 705config BOARD_EARLY_INIT_F 706 bool "Call board-specific init before relocation" 707 help 708 Some boards need to perform initialisation as soon as possible 709 after boot. With this option, U-Boot calls board_early_init_f() 710 after driver model is ready in the pre-relocation init sequence. 711 Note that the normal serial console is not yet set up, but the 712 debug UART will be available if enabled. 713 714config BOARD_EARLY_INIT_R 715 bool "Call board-specific init after relocation" 716 help 717 Some boards need to perform initialisation as directly after 718 relocation. With this option, U-Boot calls board_early_init_r() 719 in the post-relocation init sequence. 720 721config BOARD_POSTCLK_INIT 722 bool "Call board_postclk_init" 723 help 724 Some boards need this to initialize select items, after clocks / 725 timebase and before env / serial. 726 727config BOARD_LATE_INIT 728 bool "Execute Board late init" 729 help 730 Sometimes board require some initialization code that might 731 require once the actual init done, example saving board specific env, 732 boot-modes etc. which eventually done at late. 733 734 So this config enable the late init code with the help of board_late_init 735 function which should defined on respective boards. 736 737config CLOCKS 738 bool "Call set_cpu_clk_info" 739 depends on ARM 740 741config HWCONFIG 742 bool "hwconfig infrastructure" 743 default y if PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 744 745config SYS_FSL_CLK 746 bool 747 depends on ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 || \ 748 (FSL_ESDHC_IMX && (ARCH_MX5 || ARCH_MX6 || ARCH_MX7)) 749 default y 750 help 751 Enable to call get_clocks() in board_init_f() for platforms other 752 than PowerPC or M68k. This is a legacy option. If not TARGET_BRPPT2 753 754config LAST_STAGE_INIT 755 bool "Call board-specific as last setup step" 756 select EVENT 757 help 758 Some boards need to perform initialisation immediately before control 759 is passed to the command-line interpreter (e.g. for initializations 760 that depend on later phases in the init sequence). With this option, 761 U-Boot calls last_stage_init() before the command-line interpreter is 762 started. 763 764config MISC_INIT_R 765 bool "Execute Misc Init" 766 default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx 767 default y if ARCH_OMAP2PLUS && !AM33XX 768 help 769 Enabling this option calls 'misc_init_r' function 770 771config SYS_MALLOC_BOOTPARAMS 772 bool "Malloc a buffer to use for bootparams" 773 help 774 In some cases rather than using a known location to store the 775 bi_boot_params portion of gd we need to allocate it from our malloc pool. 776 777config SYS_BOOTPARAMS_LEN 778 hex "Size of the bootparam buffer to malloc in bytes" 779 depends on SYS_MALLOC_BOOTPARAMS 780 default 0x20000 if MIPS || RCAR_64 781 default 0x10000 782 783config ID_EEPROM 784 bool "Enable I2C connected system identifier EEPROM" 785 help 786 A number of different systems and vendors enable a vendor-specified 787 EEPROM that contains various identifying features. 788 789config SYS_EEPROM_BUS_NUM 790 int "I2C bus number of the system identifier EEPROM" 791 depends on ID_EEPROM 792 default 0 793 794choice 795 prompt "EEPROM starts with 'CCID' or 'NXID'" 796 depends on ID_EEPROM && (PPC || ARCH_LS1021A || FSL_LAYERSCAPE) 797 default SYS_I2C_EEPROM_NXID 798 help 799 Specify if the Freescale / NXP ID EEPROM starts with 'CCID' or 'NXID' 800 ASCII literal string. 801 802config SYS_I2C_EEPROM_CCID 803 bool "EEPROM starts with 'CCID'" 804 805config SYS_I2C_EEPROM_NXID 806 bool "EEPROM starts with 'NXID'" 807 808endchoice 809 810config PCI_INIT_R 811 bool "Enumerate PCI buses during init" 812 depends on PCI 813 help 814 With this option U-Boot will call pci_init() soon after relocation, 815 which will enumerate PCI buses. This is needed, for instance, in the 816 case of DM PCI-based Ethernet devices, which will not be detected 817 without having the enumeration performed earlier. 818 819config RESET_PHY_R 820 bool "Reset ethernet PHY during init" 821 help 822 Implement reset_phy() in board code if required to reset the ethernet 823 PHY. 824 825endmenu 826 827endmenu # Init options 828 829menu "Security support" 830 831config HASH 832 bool # "Support hashing API (SHA1, SHA256, etc.)" 833 help 834 This provides a way to hash data in memory using various supported 835 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 836 and the algorithms it supports are defined in common/hash.c. See 837 also CMD_HASH for command-line access. 838 839config AVB_VERIFY 840 bool "Build Android Verified Boot operations" 841 depends on LIBAVB 842 depends on MMC 843 depends on PARTITION_UUIDS 844 help 845 This option enables compilation of bootloader-dependent operations, 846 used by Android Verified Boot 2.0 library (libavb). Includes: 847 * Helpers to process strings in order to build OS bootargs. 848 * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c. 849 * Helpers to alloc/init/free avb ops. 850 851if AVB_VERIFY 852 853config AVB_BUF_ADDR 854 hex "Define AVB buffer address" 855 default FASTBOOT_BUF_ADDR 856 help 857 AVB requires a buffer for memory transactions. This variable defines the 858 buffer address. 859 860config AVB_BUF_SIZE 861 hex "Define AVB buffer SIZE" 862 default FASTBOOT_BUF_SIZE 863 help 864 AVB requires a buffer for memory transactions. This variable defines the 865 buffer size. 866 867endif # AVB_VERIFY 868 869config SCP03 870 bool "Build SCP03 - Secure Channel Protocol O3 - controls" 871 depends on OPTEE || SANDBOX 872 depends on TEE 873 help 874 This option allows U-Boot to enable and or provision SCP03 on an OPTEE 875 controlled Secured Element. 876 877config SPL_HASH 878 bool # "Support hashing API (SHA1, SHA256, etc.)" 879 help 880 This provides a way to hash data in memory using various supported 881 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 882 and the algorithms it supports are defined in common/hash.c. See 883 also CMD_HASH for command-line access. 884 885config TPL_HASH 886 bool # "Support hashing API (SHA1, SHA256, etc.)" 887 help 888 This provides a way to hash data in memory using various supported 889 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 890 and the algorithms it supports are defined in common/hash.c. See 891 also CMD_HASH for command-line access. 892 893config STACKPROTECTOR 894 bool "Stack Protector buffer overflow detection" 895 help 896 Enable stack smash detection through compiler's stack-protector 897 canary logic 898 899config SPL_STACKPROTECTOR 900 bool "Stack Protector buffer overflow detection for SPL" 901 depends on STACKPROTECTOR && SPL 902 903config TPL_STACKPROTECTOR 904 bool "Stack Protector buffer overflow detection for TPL" 905 depends on STACKPROTECTOR && TPL 906 907config BOARD_RNG_SEED 908 bool "Provide /chosen/rng-seed property to the linux kernel" 909 help 910 Selecting this option requires the board to define a 911 board_rng_seed() function, which should return a buffer 912 which will be used to populate the /chosen/rng-seed property 913 in the device tree for the OS being booted. 914 915 It is up to the board code (and more generally the whole 916 BSP) where and how to store (or generate) such a seed, how 917 to ensure a given seed is only used once, how to create a 918 new seed for use on subsequent boots, and whether or not the 919 kernel should account any entropy from the given seed. 920 921endmenu 922 923menu "Update support" 924 925config UPDATE_COMMON 926 bool 927 select DFU_WRITE_ALT 928 929config UPDATE_TFTP 930 bool "Auto-update using fitImage via TFTP" 931 depends on FIT && OF_LIBFDT && !MTD_NOR_FLASH 932 select UPDATE_COMMON 933 help 934 This option allows performing update of NOR with data in fitImage 935 sent via TFTP boot. 936 937config UPDATE_TFTP_CNT_MAX 938 int "The number of connection retries during auto-update" 939 default 0 940 depends on UPDATE_TFTP || DFU_TFTP 941 942config UPDATE_TFTP_MSEC_MAX 943 int "Delay in mSec to wait for the TFTP server during auto-update" 944 default 100 945 depends on UPDATE_TFTP || DFU_TFTP 946 947config UPDATE_LOAD_ADDR 948 hex "Address in memory to load the update to" 949 depends on UPDATE_TFTP || DFU_TFTP 950 default 0x100000 951 help 952 This option defines the location in memory to be used to load the 953 update to, if 'loadaddr' is not set in the environment. 954 955config UPDATE_FIT 956 bool "Firmware update using fitImage" 957 depends on FIT && OF_LIBFDT 958 depends on DFU 959 select UPDATE_COMMON 960 help 961 This option allows performing update of DFU-capable storage with 962 data in fitImage. 963 964config ANDROID_AB 965 bool "Android A/B updates" 966 help 967 If enabled, adds support for the new Android A/B update model. This 968 allows the bootloader to select which slot to boot from based on the 969 information provided by userspace via the Android boot_ctrl HAL. This 970 allows a bootloader to try a new version of the system but roll back 971 to previous version if the new one didn't boot all the way. 972 973config ANDROID_AB_BACKUP_OFFSET 974 hex "Offset of backup bootloader control" 975 depends on ANDROID_AB 976 default 0x0 977 help 978 If non-zero, a backup bootloader message starting at this offset in 979 the partition will tried in the event that the primary one (starting 980 at offset 0) fails its checksum. 981 982endmenu 983 984menu "Blob list" 985 986config BLOBLIST 987 bool "Support for a bloblist" 988 select CRC32 989 help 990 This enables support for a bloblist in U-Boot, which can be passed 991 from TPL to SPL to U-Boot proper (and potentially to Linux). The 992 blob list supports multiple binary blobs of data, each with a tag, 993 so that different U-Boot components can store data which can survive 994 through to the next phase of the boot. 995 996config SPL_BLOBLIST 997 bool "Support for a bloblist in SPL" 998 depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT 999 select SPL_CRC32 1000 default y if SPL 1001 help 1002 This enables a bloblist in SPL. If this is the first part of U-Boot 1003 to run, then the bloblist is set up in SPL and passed to U-Boot 1004 proper. If TPL also has a bloblist, then SPL uses the one from there. 1005 1006config TPL_BLOBLIST 1007 bool "Support for a bloblist in TPL" 1008 depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT 1009 select TPL_CRC32 1010 default y if TPL 1011 help 1012 This enables a bloblist in TPL. The bloblist is set up in TPL and 1013 passed to SPL and U-Boot proper. 1014 1015config VPL_BLOBLIST 1016 bool "Support for a bloblist in VPL" 1017 depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT 1018 default y if VPL 1019 help 1020 This enables a bloblist in VPL. The bloblist is set up in VPL and 1021 passed to SPL and U-Boot proper. 1022 1023if BLOBLIST 1024 1025choice 1026 prompt "Bloblist location" 1027 help 1028 Select the location of the bloblist, via various means. 1029 1030config BLOBLIST_FIXED 1031 bool "Place bloblist at a fixed address in memory" 1032 help 1033 Select this to used a fixed memory address for the bloblist. If the 1034 bloblist exists at this address from a previous phase, it used as is. 1035 If not it is created at this address in U-Boot. 1036 1037config BLOBLIST_ALLOC 1038 bool "Allocate bloblist" 1039 help 1040 Allocate the bloblist using malloc(). This avoids the need to 1041 specify a fixed address on systems where this is unknown or can 1042 change at runtime. 1043 1044endchoice 1045 1046config BLOBLIST_ADDR 1047 hex "Address of bloblist" 1048 default 0xb000 if SANDBOX 1049 depends on BLOBLIST_FIXED 1050 help 1051 Sets the address of the bloblist, set up by the first part of U-Boot 1052 which runs. Subsequent U-Boot phases typically use the same address. 1053 1054 This is not used if BLOBLIST_ALLOC is selected. 1055 1056config BLOBLIST_SIZE 1057 hex "Size of bloblist" 1058 default 0x400 1059 help 1060 Sets the size of the bloblist in bytes. This must include all 1061 overhead (alignment, bloblist header, record header). The bloblist 1062 is set up in the first part of U-Boot to run (TPL, SPL or U-Boot 1063 proper), and this sane bloblist is used for subsequent phases. 1064 1065config BLOBLIST_SIZE_RELOC 1066 hex "Size of bloblist after relocation" 1067 default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC 1068 default 0x0 if BLOBLIST_PASSAGE 1069 help 1070 Sets the size of the bloblist in bytes after relocation. Since U-Boot 1071 has a lot more memory available then, it is possible to use a larger 1072 size than the one set up by SPL. This bloblist is set up during the 1073 relocation process. 1074 1075endif # BLOBLIST 1076 1077if SPL_BLOBLIST 1078 1079choice 1080 prompt "Bloblist location in SPL" 1081 help 1082 Select the location of the bloblist, via various means. Typically 1083 you should use the same value for SPL as for U-Boot, since they need 1084 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1085 fresh bloblist will be created each time, since there is no shared 1086 address (between phases) for the bloblist. 1087 1088config SPL_BLOBLIST_FIXED 1089 bool "Place bloblist at a fixed address in memory" 1090 help 1091 Select this to used a fixed memory address for the bloblist. If the 1092 bloblist exists at this address from a previous phase, it used as is. 1093 If not it is created at this address in SPL. 1094 1095config SPL_BLOBLIST_ALLOC 1096 bool "Allocate bloblist" 1097 help 1098 Allocate the bloblist using malloc(). This avoids the need to 1099 specify a fixed address on systems where this is unknown or can 1100 change at runtime. 1101 1102endchoice 1103 1104endif # SPL_BLOBLIST 1105 1106if TPL_BLOBLIST 1107 1108choice 1109 prompt "Bloblist location in TPL" 1110 help 1111 Select the location of the bloblist, via various means. Typically 1112 you should use the same value for TPL as for U-Boot, since they need 1113 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1114 fresh bloblist will be created each time, since there is no shared 1115 address (between phases) for the bloblist. 1116 1117config TPL_BLOBLIST_FIXED 1118 bool "Place bloblist at a fixed address in memory" 1119 help 1120 Select this to used a fixed memory address for the bloblist. If the 1121 bloblist exists at this address from a previous phase, it used as is. 1122 If not it is created at this address in TPL. 1123 1124config TPL_BLOBLIST_ALLOC 1125 bool "Allocate bloblist" 1126 help 1127 Allocate the bloblist using malloc(). This avoids the need to 1128 specify a fixed address on systems where this is unknown or can 1129 change at runtime. 1130 1131endchoice 1132 1133endif # TPL_BLOBLIST 1134 1135if VPL_BLOBLIST 1136 1137choice 1138 prompt "Bloblist location in VPL" 1139 help 1140 Select the location of the bloblist, via various means. Typically 1141 you should use the same value for VPL as for U-Boot, since they need 1142 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1143 fresh bloblist will be created each time, since there is no shared 1144 address (between phases) for the bloblist. 1145 1146config VPL_BLOBLIST_FIXED 1147 bool "Place bloblist at a fixed address in memory" 1148 help 1149 Select this to used a fixed memory address for the bloblist. If the 1150 bloblist exists at this address from a previous phase, it used as is. 1151 If not it is created at this address in VPL. 1152 1153config VPL_BLOBLIST_ALLOC 1154 bool "Allocate bloblist" 1155 help 1156 Allocate the bloblist using malloc(). This avoids the need to 1157 specify a fixed address on systems where this is unknown or can 1158 change at runtime. 1159 1160endchoice 1161 1162endif # VPL_BLOBLIST 1163 1164endmenu 1165 1166source "common/spl/Kconfig" 1167 1168config IMAGE_SIGN_INFO 1169 bool 1170 select SHA1 1171 select SHA256 1172 help 1173 Enable image_sign_info helper functions. 1174 1175if IMAGE_SIGN_INFO 1176 1177config SPL_IMAGE_SIGN_INFO 1178 bool 1179 select SHA1 1180 select SHA256 1181 help 1182 Enable image_sign_info helper functions in SPL. 1183 1184config VPL_IMAGE_SIGN_INFO 1185 bool 1186 select SHA1 1187 select SHA256 1188 help 1189 Enable image_sign_info helper functions in SPL. 1190 1191endif 1192 1193config IO_TRACE 1194 bool 1195