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 || NET_LWIP 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 SPL_CYCLIC 630 bool "General-purpose cyclic execution mechanism (SPL)" 631 help 632 This enables a general-purpose cyclic execution infrastructure in SPL, 633 to allow "small" (run-time wise) functions to be executed at 634 a specified frequency. Things like LED blinking or watchdog 635 triggering are examples for such tasks. 636 637config CYCLIC_MAX_CPU_TIME_US 638 int "Sets the max allowed time for a cyclic function in us" 639 default 100000 if SANDBOX # sandbox video is quite slow 640 default 5000 641 help 642 The max allowed time for a cyclic function in us. If a functions 643 takes longer than this duration this function will get unregistered 644 automatically. 645 646endif # CYCLIC 647 648config EVENT 649 bool 650 help 651 This adds a framework for general purpose sending and processing of 652 events, to allow interested parties to be alerted when something 653 happens. This is an attempt to stem the flow of weak functions, 654 hooks, functions in board_f.c and board_r.c and the Kconfig options 655 below. 656 657 See doc/develop/event.rst for more information. 658 659if EVENT 660 661config EVENT_DYNAMIC 662 bool 663 help 664 Enable this to support adding an event spy at runtime, without adding 665 it to the EVENT_SPY*() linker list. This increases code size slightly 666 but provides more flexibility for boards and subsystems that need it. 667 668config EVENT_DEBUG 669 bool "Enable event debugging assistance" 670 default y if SANDBOX 671 help 672 Enable this to get useful features for seeing what is happening with 673 events, such as event-type names. This adds to the code size of 674 U-Boot so can be turned off for production builds. 675 676config SPL_EVENT 677 bool # General-purpose event-handling mechanism in SPL 678 depends on SPL 679 help 680 This adds a framework for general purpose sending and processing of 681 events, to allow interested parties to be alerted when something 682 happens. This is an attempt to stem the flow of weak functions, 683 hooks, functions in board_f.c and board_r.c and the Kconfig options 684 below. 685 686 See doc/develop/event.rst for more information. 687 688config SPL_EVENT_DYNAMIC 689 bool 690 depends on SPL_EVENT && EVENT_DYNAMIC 691 help 692 Enable this to support adding an event spy at runtime, without adding 693 it to the EVENT_SPY*() linker list. This increases code size slightly 694 but provides more flexibility for boards and subsystems that need it. 695 696endif # EVENT 697 698config ARCH_EARLY_INIT_R 699 bool 700 help 701 With this option U-Boot will call arch_early_init_r() soon after 702 relocation. Driver model is running by this point, and the cache 703 is on. Note that board_early_init_r() is called first, if 704 enabled. This can be used to set up architecture-specific devices. 705 706config ARCH_MISC_INIT 707 bool 708 help 709 Call arch-specific init after relocation, when console is ready. 710 With this option U-Boot will call arch_misc_init() after 711 relocation to allow miscellaneous arch-dependent initialisation 712 to be performed. This function should be defined by the board 713 and will be called after the console is set up, after relocation. 714 715config BOARD_EARLY_INIT_F 716 bool "Call board-specific init before relocation" 717 help 718 Some boards need to perform initialisation as soon as possible 719 after boot. With this option, U-Boot calls board_early_init_f() 720 after driver model is ready in the pre-relocation init sequence. 721 Note that the normal serial console is not yet set up, but the 722 debug UART will be available if enabled. 723 724config BOARD_EARLY_INIT_R 725 bool "Call board-specific init after relocation" 726 help 727 Some boards need to perform initialisation as directly after 728 relocation. With this option, U-Boot calls board_early_init_r() 729 in the post-relocation init sequence. 730 731config BOARD_INIT 732 bool "Call board-specific init board_init() during init-calls" 733 default y if ARM || RISCV || SANDBOX 734 help 735 Some boards need an board_init() function called during the initcall 736 phase of startup. 737 738config BOARD_POSTCLK_INIT 739 bool "Call board_postclk_init" 740 help 741 Some boards need this to initialize select items, after clocks / 742 timebase and before env / serial. 743 744config BOARD_LATE_INIT 745 bool "Execute Board late init" 746 help 747 Sometimes board require some initialization code that might 748 require once the actual init done, example saving board specific env, 749 boot-modes etc. which eventually done at late. 750 751 So this config enable the late init code with the help of board_late_init 752 function which should defined on respective boards. 753 754config CLOCKS 755 bool "Call set_cpu_clk_info" 756 depends on ARM 757 758config HWCONFIG 759 bool "hwconfig infrastructure" 760 default y if PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 761 762config SYS_FSL_CLK 763 bool 764 depends on ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 || \ 765 (FSL_ESDHC_IMX && (ARCH_MX5 || ARCH_MX6 || ARCH_MX7)) 766 default y 767 help 768 Enable to call get_clocks() in board_init_f() for platforms other 769 than PowerPC or M68k. This is a legacy option. If not TARGET_BRPPT2 770 771config LAST_STAGE_INIT 772 bool "Call board-specific as last setup step" 773 select EVENT 774 help 775 Some boards need to perform initialisation immediately before control 776 is passed to the command-line interpreter (e.g. for initializations 777 that depend on later phases in the init sequence). With this option, 778 U-Boot calls last_stage_init() before the command-line interpreter is 779 started. 780 781config MISC_INIT_R 782 bool "Execute Misc Init" 783 default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx 784 default y if ARCH_OMAP2PLUS && !AM33XX 785 help 786 Enabling this option calls 'misc_init_r' function 787 788config SYS_MALLOC_BOOTPARAMS 789 bool "Malloc a buffer to use for bootparams" 790 help 791 In some cases rather than using a known location to store the 792 bi_boot_params portion of gd we need to allocate it from our malloc pool. 793 794config SYS_BOOTPARAMS_LEN 795 hex "Size of the bootparam buffer to malloc in bytes" 796 depends on SYS_MALLOC_BOOTPARAMS 797 default 0x20000 if MIPS || RCAR_64 798 default 0x10000 799 800config ID_EEPROM 801 bool "Enable I2C connected system identifier EEPROM" 802 help 803 A number of different systems and vendors enable a vendor-specified 804 EEPROM that contains various identifying features. 805 806config SYS_EEPROM_BUS_NUM 807 int "I2C bus number of the system identifier EEPROM" 808 depends on ID_EEPROM 809 default 0 810 811choice 812 prompt "EEPROM starts with 'CCID' or 'NXID'" 813 depends on ID_EEPROM && (PPC || ARCH_LS1021A || FSL_LAYERSCAPE) 814 default SYS_I2C_EEPROM_NXID 815 help 816 Specify if the Freescale / NXP ID EEPROM starts with 'CCID' or 'NXID' 817 ASCII literal string. 818 819config SYS_I2C_EEPROM_CCID 820 bool "EEPROM starts with 'CCID'" 821 822config SYS_I2C_EEPROM_NXID 823 bool "EEPROM starts with 'NXID'" 824 825endchoice 826 827config PCI_INIT_R 828 bool "Enumerate PCI buses during init" 829 depends on PCI 830 help 831 With this option U-Boot will call pci_init() soon after relocation, 832 which will enumerate PCI buses. This is needed, for instance, in the 833 case of DM PCI-based Ethernet devices, which will not be detected 834 without having the enumeration performed earlier. 835 836config RESET_PHY_R 837 bool "Reset ethernet PHY during init" 838 help 839 Implement reset_phy() in board code if required to reset the ethernet 840 PHY. 841 842endmenu 843 844endmenu # Init options 845 846menu "Security support" 847 848config HASH 849 bool # "Support hashing API (SHA1, SHA256, etc.)" 850 help 851 This provides a way to hash data in memory using various supported 852 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 853 and the algorithms it supports are defined in common/hash.c. See 854 also CMD_HASH for command-line access. 855 856config HASH_CRC8 857 bool "Make crc8 available via the hash API" 858 depends on HASH && CRC8 859 help 860 Most times, the crc8() function is called directly. To make it also 861 available via the hash API, e.g. in hash_block(), enable this 862 option. 863 864config AVB_VERIFY 865 bool "Build Android Verified Boot operations" 866 depends on LIBAVB 867 depends on MMC 868 depends on PARTITION_UUIDS 869 depends on FASTBOOT 870 help 871 This option enables compilation of bootloader-dependent operations, 872 used by Android Verified Boot 2.0 library (libavb). Includes: 873 * Helpers to process strings in order to build OS bootargs. 874 * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c. 875 * Helpers to alloc/init/free avb ops. 876 877if AVB_VERIFY 878 879config AVB_BUF_ADDR 880 hex "Define AVB buffer address" 881 default FASTBOOT_BUF_ADDR 882 help 883 AVB requires a buffer for memory transactions. This variable defines the 884 buffer address. 885 886config AVB_BUF_SIZE 887 hex "Define AVB buffer SIZE" 888 default FASTBOOT_BUF_SIZE 889 help 890 AVB requires a buffer for memory transactions. This variable defines the 891 buffer size. 892 893endif # AVB_VERIFY 894 895config SCP03 896 bool "Build SCP03 - Secure Channel Protocol O3 - controls" 897 depends on OPTEE || SANDBOX 898 depends on TEE 899 help 900 This option allows U-Boot to enable and or provision SCP03 on an OPTEE 901 controlled Secured Element. 902 903config SPL_HASH 904 bool # "Support hashing API (SHA1, SHA256, etc.)" 905 help 906 This provides a way to hash data in memory using various supported 907 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 908 and the algorithms it supports are defined in common/hash.c. See 909 also CMD_HASH for command-line access. 910 911config TPL_HASH 912 bool # "Support hashing API (SHA1, SHA256, etc.)" 913 help 914 This provides a way to hash data in memory using various supported 915 algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h 916 and the algorithms it supports are defined in common/hash.c. See 917 also CMD_HASH for command-line access. 918 919config STACKPROTECTOR 920 bool "Stack Protector buffer overflow detection" 921 help 922 Enable stack smash detection through compiler's stack-protector 923 canary logic 924 925config MMU_PGPROT 926 bool "Enable RO, RW and RX mappings" 927 help 928 U-Boot maps all pages as RWX. If selected pages will 929 be marked as RO(.rodata), RX(.text), RW(.data) right after 930 we relocate. Since code sections needs to be page aligned 931 the final binary size will increase. The mappings can be dumped 932 using the 'meminfo' command. 933 934 Enabling this feature can expose bugs in U-Boot where we have 935 code that violates read-only permissions for example. Use this 936 feature with caution. 937 938config SPL_STACKPROTECTOR 939 bool "Stack Protector buffer overflow detection for SPL" 940 depends on STACKPROTECTOR && SPL 941 942config TPL_STACKPROTECTOR 943 bool "Stack Protector buffer overflow detection for TPL" 944 depends on STACKPROTECTOR && TPL 945 946config BOARD_RNG_SEED 947 bool "Provide /chosen/rng-seed property to the linux kernel" 948 help 949 Selecting this option requires the board to define a 950 board_rng_seed() function, which should return a buffer 951 which will be used to populate the /chosen/rng-seed property 952 in the device tree for the OS being booted. 953 954 It is up to the board code (and more generally the whole 955 BSP) where and how to store (or generate) such a seed, how 956 to ensure a given seed is only used once, how to create a 957 new seed for use on subsequent boots, and whether or not the 958 kernel should account any entropy from the given seed. 959 960 Default seed size (64 bytes) can be overridden by a decimal 961 environment variable rng_seed_size. 962 963endmenu 964 965menu "Update support" 966 967config UPDATE_COMMON 968 bool 969 select DFU_WRITE_ALT 970 imply CMD_TFTPBOOT 971 972config UPDATE_TFTP 973 bool "Auto-update using fitImage via TFTP" 974 depends on FIT && OF_LIBFDT && !MTD_NOR_FLASH 975 select UPDATE_COMMON 976 help 977 This option allows performing update of NOR with data in fitImage 978 sent via TFTP boot. 979 980config UPDATE_TFTP_CNT_MAX 981 int "The number of connection retries during auto-update" 982 default 0 983 depends on UPDATE_TFTP || DFU_TFTP 984 985config UPDATE_TFTP_MSEC_MAX 986 int "Delay in mSec to wait for the TFTP server during auto-update" 987 default 100 988 depends on UPDATE_TFTP || DFU_TFTP 989 990config UPDATE_LOAD_ADDR 991 hex "Address in memory to load the update to" 992 depends on UPDATE_TFTP || DFU_TFTP 993 default 0x100000 994 help 995 This option defines the location in memory to be used to load the 996 update to, if 'loadaddr' is not set in the environment. 997 998config UPDATE_FIT 999 bool "Firmware update using fitImage" 1000 depends on FIT && OF_LIBFDT 1001 depends on DFU 1002 select UPDATE_COMMON 1003 help 1004 This option allows performing update of DFU-capable storage with 1005 data in fitImage. 1006 1007config ANDROID_AB 1008 bool "Android A/B updates" 1009 help 1010 If enabled, adds support for the new Android A/B update model. This 1011 allows the bootloader to select which slot to boot from based on the 1012 information provided by userspace via the Android boot_ctrl HAL. This 1013 allows a bootloader to try a new version of the system but roll back 1014 to previous version if the new one didn't boot all the way. 1015 1016config ANDROID_AB_BACKUP_OFFSET 1017 hex "Offset of backup bootloader control" 1018 depends on ANDROID_AB 1019 default 0x0 1020 help 1021 If non-zero, a backup bootloader message starting at this offset in 1022 the partition will tried in the event that the primary one (starting 1023 at offset 0) fails its checksum. The offset is in bytes and must be 1024 multiple of the block size. 1025 1026endmenu 1027 1028menu "Blob list" 1029 1030config BLOBLIST 1031 bool "Support for a bloblist" 1032 select CRC32 1033 help 1034 This enables support for a bloblist in U-Boot, which can be passed 1035 from TPL to SPL to U-Boot proper (and potentially to Linux). The 1036 blob list supports multiple binary blobs of data, each with a tag, 1037 so that different U-Boot components can store data which can survive 1038 through to the next phase of the boot. 1039 1040config SPL_BLOBLIST 1041 bool "Support for a bloblist in SPL" 1042 depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT 1043 select SPL_CRC32 1044 default y if SPL 1045 help 1046 This enables a bloblist in SPL. If this is the first part of U-Boot 1047 to run, then the bloblist is set up in SPL and passed to U-Boot 1048 proper. If TPL also has a bloblist, then SPL uses the one from there. 1049 1050config TPL_BLOBLIST 1051 bool "Support for a bloblist in TPL" 1052 depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT 1053 select TPL_CRC32 1054 default y if TPL 1055 help 1056 This enables a bloblist in TPL. The bloblist is set up in TPL and 1057 passed to SPL and U-Boot proper. 1058 1059config VPL_BLOBLIST 1060 bool "Support for a bloblist in VPL" 1061 depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT 1062 default y if VPL 1063 help 1064 This enables a bloblist in VPL. The bloblist is set up in VPL and 1065 passed to SPL and U-Boot proper. 1066 1067if BLOBLIST 1068 1069choice 1070 prompt "Bloblist location" 1071 default BLOBLIST_FIXED if SANDBOX 1072 default BLOBLIST_ALLOC 1073 help 1074 Select the location of the bloblist, via various means. 1075 1076config BLOBLIST_FIXED 1077 bool "Place bloblist at a fixed address in memory" 1078 help 1079 Select this to use a fixed memory address for the bloblist. If the 1080 bloblist exists at this address from a previous phase, it is used as is. 1081 If not it is created at this address in U-Boot. 1082 1083config BLOBLIST_ALLOC 1084 bool "Allocate bloblist" 1085 help 1086 Allocate the bloblist using malloc(). This avoids the need to 1087 specify a fixed address on systems where this is unknown or can 1088 change at runtime. 1089 1090config BLOBLIST_PASSAGE_MANDATORY 1091 bool "Use bloblist in-place mandatorily" 1092 help 1093 By default U-Boot will use a bloblist in the incoming standard passage. 1094 This option controls whether U-Boot tries to load a static bloblist or 1095 allocate one if a valid incoming bloblist does not exist. 1096 Select this option to mark incoming standard passage as mandatory and 1097 U-Boot will report an error when a valid incoming bloblist does not 1098 exist. 1099 1100endchoice 1101 1102config BLOBLIST_ADDR 1103 hex "Address of bloblist" 1104 default 0x100 if SANDBOX 1105 depends on BLOBLIST_FIXED 1106 help 1107 Sets the address of the bloblist, set up by the first part of U-Boot 1108 which runs. Subsequent U-Boot phases typically use the same address. 1109 1110 This is not used if BLOBLIST_ALLOC is selected. 1111 1112config BLOBLIST_SIZE 1113 hex "Size of bloblist" 1114 default 0x0 if BLOBLIST_PASSAGE_MANDATORY 1115 default 0x400 1116 help 1117 Sets the size of the bloblist in bytes. This must include all 1118 overhead (alignment, bloblist header, record header). The bloblist 1119 is set up in the first part of U-Boot to run (TPL, SPL or U-Boot 1120 proper), and this same bloblist is used for subsequent phases. 1121 1122config BLOBLIST_SIZE_RELOC 1123 hex "Size of bloblist after relocation" 1124 default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC 1125 default 0x20000 if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE) 1126 help 1127 Sets the size of the bloblist in bytes after relocation. Since U-Boot 1128 has a lot more memory available then, it is possible to use a larger 1129 size than the one set up by SPL. This bloblist is set up during the 1130 relocation process. 1131 1132endif # BLOBLIST 1133 1134if SPL_BLOBLIST 1135 1136choice 1137 prompt "Bloblist location in SPL" 1138 help 1139 Select the location of the bloblist, via various means. Typically 1140 you should use the same value for SPL as for U-Boot, since they need 1141 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1142 fresh bloblist will be created each time, since there is no shared 1143 address (between phases) for the bloblist. 1144 1145config SPL_BLOBLIST_FIXED 1146 bool "Place bloblist at a fixed address in memory" 1147 help 1148 Select this to used a fixed memory address for the bloblist. If the 1149 bloblist exists at this address from a previous phase, it used as is. 1150 If not it is created at this address in SPL. 1151 1152config SPL_BLOBLIST_ALLOC 1153 bool "Allocate bloblist" 1154 help 1155 Allocate the bloblist using malloc(). This avoids the need to 1156 specify a fixed address on systems where this is unknown or can 1157 change at runtime. 1158 1159endchoice 1160 1161endif # SPL_BLOBLIST 1162 1163if TPL_BLOBLIST 1164 1165choice 1166 prompt "Bloblist location in TPL" 1167 help 1168 Select the location of the bloblist, via various means. Typically 1169 you should use the same value for TPL as for U-Boot, since they need 1170 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1171 fresh bloblist will be created each time, since there is no shared 1172 address (between phases) for the bloblist. 1173 1174config TPL_BLOBLIST_FIXED 1175 bool "Place bloblist at a fixed address in memory" 1176 help 1177 Select this to used a fixed memory address for the bloblist. If the 1178 bloblist exists at this address from a previous phase, it used as is. 1179 If not it is created at this address in TPL. 1180 1181config TPL_BLOBLIST_ALLOC 1182 bool "Allocate bloblist" 1183 help 1184 Allocate the bloblist using malloc(). This avoids the need to 1185 specify a fixed address on systems where this is unknown or can 1186 change at runtime. 1187 1188endchoice 1189 1190endif # TPL_BLOBLIST 1191 1192if VPL_BLOBLIST 1193 1194choice 1195 prompt "Bloblist location in VPL" 1196 help 1197 Select the location of the bloblist, via various means. Typically 1198 you should use the same value for VPL as for U-Boot, since they need 1199 to look in the same place. But if BLOBLIST_ALLOC is used, then a 1200 fresh bloblist will be created each time, since there is no shared 1201 address (between phases) for the bloblist. 1202 1203config VPL_BLOBLIST_FIXED 1204 bool "Place bloblist at a fixed address in memory" 1205 help 1206 Select this to used a fixed memory address for the bloblist. If the 1207 bloblist exists at this address from a previous phase, it used as is. 1208 If not it is created at this address in VPL. 1209 1210config VPL_BLOBLIST_ALLOC 1211 bool "Allocate bloblist" 1212 help 1213 Allocate the bloblist using malloc(). This avoids the need to 1214 specify a fixed address on systems where this is unknown or can 1215 change at runtime. 1216 1217endchoice 1218 1219endif # VPL_BLOBLIST 1220 1221endmenu 1222 1223source "common/spl/Kconfig" 1224 1225config IMAGE_SIGN_INFO 1226 bool 1227 select SHA1 1228 select SHA256 1229 help 1230 Enable image_sign_info helper functions. 1231 1232if IMAGE_SIGN_INFO 1233 1234config SPL_IMAGE_SIGN_INFO 1235 bool 1236 select SHA1 1237 select SHA256 1238 help 1239 Enable image_sign_info helper functions in SPL. 1240 1241config VPL_IMAGE_SIGN_INFO 1242 bool 1243 select SHA1 1244 select SHA256 1245 help 1246 Enable image_sign_info helper functions in SPL. 1247 1248endif 1249 1250config IO_TRACE 1251 bool 1252