1menu "Library routines" 2 3config ADDR_MAP 4 bool "Enable support for non-identity virtual-physical mappings" 5 help 6 Enables helper code for implementing non-identity virtual-physical 7 memory mappings for 32bit CPUs. 8 9 This library only works in the post-relocation phase. 10 11config SYS_NUM_ADDR_MAP 12 int "Size of the address-map table" 13 depends on ADDR_MAP 14 default 16 15 help 16 Sets the number of entries in the virtual-physical mapping table. 17 18config SYS_TIMER_COUNTS_DOWN 19 bool "System timer counts down rather than up" 20 21config PHYSMEM 22 bool "Access to physical memory region (> 4G)" 23 help 24 Some basic support is provided for operations on memory not 25 normally accessible to 32-bit U-Boot - e.g. some architectures 26 support access to more than 4G of memory on 32-bit 27 machines using physical address extension or similar. 28 Enable this to access this basic support, which only supports clearing 29 the memory. 30 31config BCH 32 bool "Enable Software based BCH ECC" 33 help 34 Enables software based BCH ECC algorithm present in lib/bch.c 35 This is used by SoC platforms which do not have built-in ELM 36 hardware engine required for BCH ECC correction. 37 38config BINMAN_FDT 39 bool "Allow access to binman information in the device tree" 40 depends on BINMAN && DM && OF_CONTROL 41 default y if OF_SEPARATE || OF_EMBED 42 help 43 This enables U-Boot to access information about binman entries, 44 stored in the device tree in a binman node. Typical uses are to 45 locate entries in the firmware image. See binman.h for the available 46 functionality. 47 48config BINMAN_DTB 49 string "binman DTB description" 50 depends on BINMAN 51 help 52 This enables option to point to different DTB file with binman node which 53 is outside of DTB used by the firmware. Use this option if information 54 about generated images shouldn't be the part of target binary. Or on system 55 with limited storage. 56 57config CC_OPTIMIZE_LIBS_FOR_SPEED 58 bool "Optimize libraries for speed" 59 help 60 Enabling this option will pass "-O2" to gcc when compiling 61 under "lib" directory. 62 63 If unsure, say N. 64 65config CHARSET 66 bool 67 68config DYNAMIC_CRC_TABLE 69 bool "Enable Dynamic tables for CRC" 70 help 71 Enable this option to calculate entries for CRC tables at runtime. 72 This can be helpful when reducing the size of the build image 73 74config HAVE_ARCH_IOMAP 75 bool 76 help 77 Enable this option if architecture provides io{read,write}{8,16,32} 78 I/O accessor functions. 79 80config HAVE_PRIVATE_LIBGCC 81 bool 82 83config LIB_UUID 84 bool 85 select SHA1 86 87config RANDOM_UUID 88 bool "GPT Random UUID generation" 89 select LIB_UUID 90 help 91 Enable the generation of partitions with random UUIDs if none 92 are provided. 93 94config SPL_LIB_UUID 95 depends on SPL 96 bool 97 98config SEMIHOSTING 99 bool "Support semihosting" 100 depends on ARM || RISCV 101 help 102 Semihosting is a method for a target to communicate with a host 103 debugger. It uses special instructions which the debugger will trap 104 on and interpret. This allows U-Boot to read/write files, print to 105 the console, and execute arbitrary commands on the host system. 106 107 Enabling this option will add support for reading and writing files 108 on the host system. If you don't have a debugger attached then trying 109 to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. 110 111config SEMIHOSTING_FALLBACK 112 bool "Recover gracefully when semihosting fails" 113 depends on SEMIHOSTING 114 default y 115 help 116 Normally, if U-Boot makes a semihosting call and no debugger is 117 attached, then it will panic due to a synchronous abort 118 exception. This config adds an exception handler which will allow 119 U-Boot to recover. Say 'y' if unsure. 120 121config SPL_SEMIHOSTING 122 bool "Support semihosting in SPL" 123 depends on SPL && (ARM || RISCV) 124 help 125 Semihosting is a method for a target to communicate with a host 126 debugger. It uses special instructions which the debugger will trap 127 on and interpret. This allows U-Boot to read/write files, print to 128 the console, and execute arbitrary commands on the host system. 129 130 Enabling this option will add support for reading and writing files 131 on the host system. If you don't have a debugger attached then trying 132 to do this will likely cause U-Boot to hang. Say 'n' if you are unsure. 133 134config SPL_SEMIHOSTING_FALLBACK 135 bool "Recover gracefully when semihosting fails in SPL" 136 depends on SPL_SEMIHOSTING 137 select ARMV8_SPL_EXCEPTION_VECTORS if ARM64 138 default y 139 help 140 Normally, if U-Boot makes a semihosting call and no debugger is 141 attached, then it will panic due to a synchronous abort 142 exception. This config adds an exception handler which will allow 143 U-Boot to recover. Say 'y' if unsure. 144 145config PRINTF 146 bool 147 default y 148 149config SPL_PRINTF 150 bool 151 select SPL_SPRINTF 152 select SPL_STRTO if !SPL_USE_TINY_PRINTF 153 154config TPL_PRINTF 155 bool 156 select TPL_SPRINTF 157 select TPL_STRTO if !TPL_USE_TINY_PRINTF 158 159config VPL_PRINTF 160 bool 161 select VPL_SPRINTF 162 select VPL_STRTO if !VPL_USE_TINY_PRINTF 163 164config SPRINTF 165 bool 166 default y 167 168config SPL_SPRINTF 169 bool 170 171config TPL_SPRINTF 172 bool 173 174config VPL_SPRINTF 175 bool 176 177config SSCANF 178 bool 179 180config STRTO 181 bool 182 default y 183 184config SPL_STRTO 185 bool 186 187config TPL_STRTO 188 bool 189 190config VPL_STRTO 191 bool 192 193config IMAGE_SPARSE 194 bool 195 196config IMAGE_SPARSE_FILLBUF_SIZE 197 hex "Android sparse image CHUNK_TYPE_FILL buffer size" 198 default 0x80000 199 depends on IMAGE_SPARSE 200 help 201 Set the size of the fill buffer used when processing CHUNK_TYPE_FILL 202 chunks. 203 204config USE_PRIVATE_LIBGCC 205 bool "Use private libgcc" 206 depends on HAVE_PRIVATE_LIBGCC 207 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS) 208 help 209 This option allows you to use the built-in libgcc implementation 210 of U-Boot instead of the one provided by the compiler. 211 If unsure, say N. 212 213config SYS_HZ 214 int 215 default 1000 216 help 217 The frequency of the timer returned by get_timer(). 218 get_timer() must operate in milliseconds and this option must be 219 set to 1000. 220 221config SPL_USE_TINY_PRINTF 222 bool "Enable tiny printf() version in SPL" 223 depends on SPL 224 default y 225 help 226 This option enables a tiny, stripped down printf version. 227 This should only be used in space limited environments, 228 like SPL versions with hard memory limits. This version 229 reduces the code size by about 2.5KiB on armv7. 230 231 The supported format specifiers are %c, %s, %u/%d and %x. 232 233config TPL_USE_TINY_PRINTF 234 bool "Enable tiny printf() version in TPL" 235 depends on TPL 236 default y if SPL_USE_TINY_PRINTF 237 help 238 This option enables a tiny, stripped down printf version. 239 This should only be used in space limited environments, 240 like SPL versions with hard memory limits. This version 241 reduces the code size by about 2.5KiB on armv7. 242 243 The supported format specifiers are %c, %s, %u/%d and %x. 244 245config VPL_USE_TINY_PRINTF 246 bool "Enable tiny printf() version for VPL" 247 depends on VPL 248 help 249 This option enables a tiny, stripped down printf version. 250 This should only be used in space limited environments, 251 like SPL versions with hard memory limits. This version 252 reduces the code size by about 2.5KiB on armv7. 253 254 The supported format specifiers are %c, %s, %u/%d and %x. 255 256config SPL_USE_TINY_PRINTF_POINTER_SUPPORT 257 bool "Extend tiny printf with the pointer formatting %p" 258 depends on SPL_USE_TINY_PRINTF 259 help 260 This option enables the formatting of pointers %p. It supports 261 %p and %pa / %pap. If this option is selected by SPL_NET 262 it also supports the formatting with %pm, %pM and %pI4. 263 264config PANIC_HANG 265 bool "Do not reset the system on fatal error" 266 help 267 Define this option to stop the system in case of a fatal error, 268 so that you have to reset it manually. This is probably NOT a good 269 idea for an embedded system where you want the system to reboot 270 automatically as fast as possible, but it may be useful during 271 development since you can try to debug the conditions that lead to 272 the situation. 273 274config REGEX 275 bool "Enable regular expression support" 276 default y if NET 277 help 278 If this variable is defined, U-Boot is linked against the 279 SLRE (Super Light Regular Expression) library, which adds 280 regex support to some commands, for example "env grep" and 281 "setexpr". 282 283choice 284 prompt "Pseudo-random library support type" 285 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \ 286 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE || CMD_BOOTP || \ 287 CMD_DHCP || CMD_DHCP6 288 default LIB_RAND 289 help 290 Select the library to provide pseudo-random number generator 291 functions. LIB_HW_RAND supports certain hardware engines that 292 provide this functionality. If in doubt, select LIB_RAND. 293 294config LIB_RAND 295 bool "Pseudo-random library support" 296 297config LIB_HW_RAND 298 bool "HW Engine for random library support" 299 300endchoice 301 302config SUPPORT_ACPI 303 bool 304 help 305 Enable this if your arch or board can support generating ACPI 306 (Advanced Configuration and Power Interface) tables. In this case 307 U-Boot can generate these tables and pass them to the Operating 308 System. 309 310config ACPI 311 bool "Enable support for ACPI libraries" 312 depends on SUPPORT_ACPI 313 help 314 Provides library functions for dealing with ACPI tables. This does 315 not necessarily include generation of tables 316 (see GENERATE_ACPI_TABLE), but allows for tables to be located. 317 318config SPL_ACPI 319 bool "Enable support for ACPI libraries in SPL" 320 depends on SPL && SUPPORT_ACPI 321 help 322 Provides library functions for dealing with ACPI tables in SPL. This 323 does not necessarily include generation of tables 324 (see GENERATE_ACPI_TABLE), but allows for tables to be located. 325 326config GENERATE_ACPI_TABLE 327 bool "Generate an ACPI (Advanced Configuration and Power Interface) table" 328 depends on ACPI 329 select BLOBLIST 330 select QFW if QEMU 331 help 332 The Advanced Configuration and Power Interface (ACPI) specification 333 provides an open standard for device configuration and management 334 by the operating system. It defines platform-independent interfaces 335 for configuration and power management monitoring. 336 337config ACPI_PARKING_PROTOCOL 338 bool "Support ACPI parking protocol method" 339 depends on GENERATE_ACPI_TABLE 340 depends on ARMV8_MULTIENTRY 341 depends on BLOBLIST_TABLES 342 default y if !SEC_FIRMWARE_ARMV8_PSCI && !ARMV8_PSCI 343 help 344 Say Y here to support "ACPI parking protocol" enable method 345 for booting Linux. 346 347 To use this feature, you must do: 348 - Bring secondary CPUs into U-Boot proper in a board-specific 349 manner. This must be done *after* relocation. Otherwise, the 350 secondary CPUs will spin in unprotected memory-area because the 351 master CPU protects the relocated spin code. 352 353config SPL_TINY_MEMSET 354 bool "Use a very small memset() in SPL" 355 depends on SPL 356 help 357 The faster memset() is the arch-specific one (if available) enabled 358 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get 359 better performance by writing a word at a time. But in very 360 size-constrained environments even this may be too big. Enable this 361 option to reduce code size slightly at the cost of some speed. 362 363config TPL_TINY_MEMSET 364 bool "Use a very small memset() in TPL" 365 depends on TPL 366 help 367 The faster memset() is the arch-specific one (if available) enabled 368 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get 369 better performance by writing a word at a time. But in very 370 size-constrained environments even this may be too big. Enable this 371 option to reduce code size slightly at the cost of some speed. 372 373config RBTREE 374 bool 375 376config BITREVERSE 377 bool "Bit reverse library from Linux" 378 379config TRACE 380 bool "Support for tracing of function calls and timing" 381 imply CMD_TRACE 382 imply TIMER_EARLY 383 help 384 Enables function tracing within U-Boot. This allows recording of call 385 traces including timing information. The command can write data to 386 memory for exporting for analysis (e.g. using bootchart). 387 See doc/develop/trace.rst for full details. 388 389config TRACE_BUFFER_SIZE 390 hex "Size of trace buffer in U-Boot" 391 depends on TRACE 392 default 0x01000000 393 help 394 Sets the size of the trace buffer in U-Boot. This is allocated from 395 memory during relocation. If this buffer is too small, the trace 396 history will be truncated, with later records omitted. 397 398 If early trace is enabled (i.e. before relocation), this buffer must 399 be large enough to include all the data from the early trace buffer as 400 well, since this is copied over to the main buffer during relocation. 401 402 A trace record is emitted for each function call and each record is 403 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If 404 the size is too small then 'trace stats' will show a message saying 405 how many records were dropped due to buffer overflow. 406 407config TRACE_CALL_DEPTH_LIMIT 408 int "Trace call depth limit" 409 depends on TRACE 410 default 15 411 help 412 Sets the maximum call depth up to which function calls are recorded. 413 414config TRACE_EARLY 415 bool "Enable tracing before relocation" 416 depends on TRACE 417 help 418 Sometimes it is helpful to trace execution of U-Boot before 419 relocation. This is possible by using a arch-specific, fixed buffer 420 position in memory. Enable this option to start tracing as early as 421 possible after U-Boot starts. 422 423config TRACE_EARLY_SIZE 424 hex "Size of early trace buffer in U-Boot" 425 depends on TRACE_EARLY 426 default 0x00100000 427 help 428 Sets the size of the early trace buffer in bytes. This is used to hold 429 tracing information before relocation. 430 431config TRACE_EARLY_CALL_DEPTH_LIMIT 432 int "Early trace call depth limit" 433 depends on TRACE_EARLY 434 default 15 435 help 436 Sets the maximum call depth up to which function calls are recorded 437 during early tracing. 438 439config TRACE_EARLY_ADDR 440 hex "Address of early trace buffer in U-Boot" 441 depends on TRACE_EARLY 442 default 0x00200000 443 help 444 Sets the address of the early trace buffer in U-Boot. This memory 445 must be accessible before relocation. 446 447 A trace record is emitted for each function call and each record is 448 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If 449 the size is too small then the message which says the amount of early 450 data being coped will the the same as the 451 452config CIRCBUF 453 bool "Enable circular buffer support" 454 455source "lib/dhry/Kconfig" 456 457menu "Alternative crypto libraries" 458 459source "lib/mbedtls/Kconfig" 460 461endmenu 462 463menu "Security support" 464 465config AES 466 bool "Support the AES algorithm" 467 help 468 This provides a means to encrypt and decrypt data using the AES 469 (Advanced Encryption Standard). This algorithm uses a symetric key 470 and is widely used as a streaming cipher. Different key lengths are 471 supported by the algorithm but only a 128-bit key is supported at 472 present. 473 474source "lib/ecdsa/Kconfig" 475source "lib/rsa/Kconfig" 476source "lib/crypto/Kconfig" 477source "lib/crypt/Kconfig" 478 479config TPM 480 bool "Trusted Platform Module (TPM) Support" 481 depends on DM 482 imply DM_RNG 483 select SHA1 484 help 485 This enables support for TPMs which can be used to provide security 486 features for your board. The TPM can be connected via LPC or I2C 487 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 488 command to interactive the TPM. Driver model support is provided 489 for the low-level TPM interface, but only one TPM is supported at 490 a time by the TPM library. 491 For size reasons only SHA1 is selected which is supported on TPM1.2. 492 If you want a fully functional TPM enable all hashing algorithms. 493 If you enabled measured boot all hashing algorithms are selected. 494 495config SPL_TPM 496 bool "Trusted Platform Module (TPM) Support in SPL" 497 depends on SPL_DM 498 imply SPL_CRC8 499 help 500 This enables support for TPMs which can be used to provide security 501 features for your board. The TPM can be connected via LPC or I2C 502 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 503 command to interactive the TPM. Driver model support is provided 504 for the low-level TPM interface, but only one TPM is supported at 505 a time by the TPM library. 506 507config TPL_TPM 508 bool "Trusted Platform Module (TPM) Support in TPL" 509 depends on TPL_DM 510 help 511 This enables support for TPMs which can be used to provide security 512 features for your board. The TPM can be connected via LPC or I2C 513 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 514 command to interactive the TPM. Driver model support is provided 515 for the low-level TPM interface, but only one TPM is supported at 516 a time by the TPM library. 517 518config VPL_TPM 519 bool "Trusted Platform Module (TPM) Support in VPL" 520 depends on VPL_DM 521 help 522 This enables support for TPMs which can be used to provide security 523 features for your board. The TPM can be connected via LPC or I2C 524 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 525 command to interactive the TPM. Driver model support is provided 526 for the low-level TPM interface, but only one TPM is supported at 527 a time by the TPM library. 528 529config TPM_PCR_ALLOCATE 530 bool "Re-configurate TPM algorithms in run-time (PCR allocate)" 531 depends on TPM_V2 && (MEASURED_BOOT || EFI_TCG2_PROTOCOL) 532 help 533 This enables a detection for the dismatches of algorithms among TPM 534 device, eventlog from previous boot stage and U-Boot support. 535 A PCR allocate command will be sent to reconfigurate the TPM device 536 in run-time to make sure algorithms in TPM device, eventlog and 537 U-Boot are aligned with each other. 538 A system reboot will be proceeded after then to activate the new 539 algorithms. 540 541endmenu 542 543menu "Android Verified Boot" 544 545config LIBAVB 546 bool "Android Verified Boot 2.0 support" 547 depends on ANDROID_BOOT_IMAGE 548 help 549 This enables support of Android Verified Boot 2.0 which can be used 550 to assure the end user of the integrity of the software running on a 551 device. Introduces such features as boot chain of trust, rollback 552 protection etc. 553 554endmenu 555 556menu "Hashing Support" 557 558config BLAKE2 559 bool "Enable BLAKE2 support" 560 help 561 This option enables support of hashing using BLAKE2B algorithm. 562 The hash is calculated in software. 563 The BLAKE2 algorithm produces a hash value (digest) between 1 and 564 64 bytes. 565 566config SHA1 567 bool "Enable SHA1 support" 568 help 569 This option enables support of hashing using SHA1 algorithm. 570 The hash is calculated in software. 571 The SHA1 algorithm produces a 160-bit (20-byte) hash value 572 (digest). 573 574config SHA256 575 bool "Enable SHA256 support" 576 help 577 This option enables support of hashing using SHA256 algorithm. 578 The hash is calculated in software. 579 The SHA256 algorithm produces a 256-bit (32-byte) hash value 580 (digest). 581 582config SHA512 583 bool "Enable SHA512 support" 584 default y if TI_SECURE_DEVICE && FIT_SIGNATURE 585 help 586 This option enables support of hashing using SHA512 algorithm. 587 The hash is calculated in software. 588 The SHA512 algorithm produces a 512-bit (64-byte) hash value 589 (digest). 590 591config SHA384 592 bool "Enable SHA384 support" 593 select SHA512 594 help 595 This option enables support of hashing using SHA384 algorithm. 596 The hash is calculated in software. This is also selects SHA512, 597 because these implementations share the bulk of the code.. 598 The SHA384 algorithm produces a 384-bit (48-byte) hash value 599 (digest). 600 601config SHA_HW_ACCEL 602 bool "Enable hardware acceleration for SHA hash functions" 603 help 604 This option enables hardware acceleration for the SHA1 and SHA256 605 hashing algorithms. This affects the 'hash' command and also the 606 hash_lookup_algo() function. 607 608if SPL 609 610config SPL_CRC32 611 bool "Enable CRC32 support in SPL" 612 default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION 613 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST 614 help 615 This option enables support of hashing using CRC32 algorithm. 616 The CRC32 algorithm produces 32-bit checksum value. For FIT 617 images, this is the least secure type of checksum, suitable for 618 detected accidental image corruption. For secure applications you 619 should consider SHA256 or SHA384. 620 621config SPL_SHA1 622 bool "Enable SHA1 support in SPL" 623 default y if SHA1 624 help 625 This option enables support of hashing using SHA1 algorithm. 626 The hash is calculated in software. 627 The SHA1 algorithm produces a 160-bit (20-byte) hash value 628 (digest). 629 630config SPL_SHA256 631 bool "Enable SHA256 support in SPL" 632 default y if SHA256 633 help 634 This option enables support of hashing using SHA256 algorithm. 635 The hash is calculated in software. 636 The SHA256 algorithm produces a 256-bit (32-byte) hash value 637 (digest). 638 639config SPL_SHA512 640 bool "Enable SHA512 support in SPL" 641 default y if SHA512 642 help 643 This option enables support of hashing using SHA512 algorithm. 644 The hash is calculated in software. 645 The SHA512 algorithm produces a 512-bit (64-byte) hash value 646 (digest). 647 648config SPL_SHA384 649 bool "Enable SHA384 support in SPL" 650 default y if SHA384 651 select SPL_SHA512 652 help 653 This option enables support of hashing using SHA384 algorithm. 654 The hash is calculated in software. This is also selects SHA512, 655 because these implementations share the bulk of the code.. 656 The SHA384 algorithm produces a 384-bit (48-byte) hash value 657 (digest). 658 659config SPL_SHA_HW_ACCEL 660 bool "Enable hardware acceleration for SHA hash functions" 661 default y if SHA_HW_ACCEL 662 help 663 This option enables hardware acceleration for the SHA1 and SHA256 664 hashing algorithms. This affects the 'hash' command and also the 665 hash_lookup_algo() function. 666 667config SPL_SHA_PROG_HW_ACCEL 668 bool "Enable Progressive hashing support using hardware in SPL" 669 depends on SHA_PROG_HW_ACCEL 670 default y 671 help 672 This option enables hardware-acceleration for SHA progressive 673 hashing. 674 Data can be streamed in a block at a time and the hashing is 675 performed in hardware. 676 677endif 678 679config VPL_SHA1 680 bool "Enable SHA1 support in VPL" 681 depends on VPL 682 default y if SHA1 683 help 684 This option enables support of hashing using SHA1 algorithm. 685 The hash is calculated in software. 686 The SHA1 algorithm produces a 160-bit (20-byte) hash value 687 (digest). 688 689config VPL_SHA256 690 bool "Enable SHA256 support in VPL" 691 depends on VPL 692 default y if SHA256 693 help 694 This option enables support of hashing using SHA256 algorithm. 695 The hash is calculated in software. 696 The SHA256 algorithm produces a 256-bit (32-byte) hash value 697 (digest). 698 699if SHA_HW_ACCEL 700 701config SHA512_HW_ACCEL 702 bool "Enable hardware acceleration for SHA512" 703 depends on SHA512 704 help 705 This option enables hardware acceleration for the SHA384 and SHA512 706 hashing algorithms. This affects the 'hash' command and also the 707 hash_lookup_algo() function. 708 709config SHA_PROG_HW_ACCEL 710 bool "Enable Progressive hashing support using hardware" 711 help 712 This option enables hardware-acceleration for SHA progressive 713 hashing. 714 Data can be streamed in a block at a time and the hashing is 715 performed in hardware. 716 717endif 718 719config MD5 720 bool "Support MD5 algorithm" 721 help 722 This option enables MD5 support. MD5 is an algorithm designed 723 in 1991 that produces a 16-byte digest (or checksum) from its input 724 data. It has a number of vulnerabilities which preclude its use in 725 security applications, but it can be useful for providing a quick 726 checksum of a block of data. 727 728config SPL_MD5 729 bool "Support MD5 algorithm in SPL" 730 depends on SPL 731 help 732 This option enables MD5 support in SPL. MD5 is an algorithm designed 733 in 1991 that produces a 16-byte digest (or checksum) from its input 734 data. It has a number of vulnerabilities which preclude its use in 735 security applications, but it can be useful for providing a quick 736 checksum of a block of data. 737 738config CRC8 739 def_bool y 740 help 741 Enables CRC8 support in U-Boot. This is normally required. CRC8 is 742 a simple and fast checksumming algorithm which does a bytewise 743 checksum with feedback to produce an 8-bit result. The code is small 744 and it does not require a lookup table (unlike CRC32). 745 746config SPL_CRC8 747 bool "Support CRC8 in SPL" 748 depends on SPL 749 help 750 Enables CRC8 support in SPL. This is not normally required. CRC8 is 751 a simple and fast checksumming algorithm which does a bytewise 752 checksum with feedback to produce an 8-bit result. The code is small 753 and it does not require a lookup table (unlike CRC32). 754 755config TPL_CRC8 756 bool "Support CRC8 in TPL" 757 depends on TPL 758 help 759 Enables CRC8 support in TPL. This is not normally required. CRC8 is 760 a simple and fast checksumming algorithm which does a bytewise 761 checksum with feedback to produce an 8-bit result. The code is small 762 and it does not require a lookup table (unlike CRC32). 763 764config VPL_CRC8 765 bool "Support CRC8 in VPL" 766 depends on VPL 767 help 768 Enables CRC8 support in VPL. This is not normally required. CRC8 is 769 a simple and fast checksumming algorithm which does a bytewise 770 checksum with feedback to produce an 8-bit result. The code is small 771 and it does not require a lookup table (unlike CRC32). 772 773config CRC16 774 bool "Support CRC16" 775 default y 776 help 777 Enables CRC16 support. This is normally required. Two algorithms are 778 provided: 779 780 - CCITT, with a polynomical x^16 + x^12 + x^5 + 1 781 - standard, with polynomial x^16 + x^15 + x^2 + 1 (0x8005) 782 783config SPL_CRC16 784 bool "Support CRC16 in SPL" 785 depends on SPL 786 help 787 Enables CRC16 support in SPL. This is not normally required. 788 789config CRC32 790 def_bool y 791 help 792 Enables CRC32 support in U-Boot. This is normally required. 793 794config CRC32C 795 bool 796 797config XXHASH 798 bool 799 800endmenu 801 802menu "Compression Support" 803 804config LZ4 805 bool "Enable LZ4 decompression support" 806 help 807 If this option is set, support for LZ4 compressed images 808 is included. The LZ4 algorithm can run in-place as long as the 809 compressed image is loaded to the end of the output buffer, and 810 trades lower compression ratios for much faster decompression. 811 812 NOTE: This implements the release version of the LZ4 frame 813 format as generated by default by the 'lz4' command line tool. 814 This is not the same as the outdated, less efficient legacy 815 frame format currently (2015) implemented in the Linux kernel 816 (generated by 'lz4 -l'). The two formats are incompatible. 817 818config LZMA 819 bool "Enable LZMA decompression support" 820 help 821 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm), 822 a dictionary compression algorithm that provides a high compression 823 ratio and fairly fast decompression speed. See also 824 CONFIG_CMD_LZMADEC which provides a decode command. 825 826config LZO 827 bool "Enable LZO decompression support" 828 help 829 This enables support for the LZO compression algorithm. 830 831config GZIP 832 bool "Enable gzip decompression support" 833 select ZLIB 834 default y 835 help 836 This enables support for GZIP compression algorithm. 837 838config ZLIB_UNCOMPRESS 839 bool "Enables zlib's uncompress() functionality" 840 help 841 This enables an extra zlib functionality: the uncompress() function, 842 which decompresses data from a buffer into another, knowing their 843 sizes. Unlike gunzip(), there is no header parsing. 844 845config GZIP_COMPRESSED 846 bool 847 select ZLIB 848 849config BZIP2 850 bool "Enable bzip2 decompression support" 851 help 852 This enables support for BZIP2 compression algorithm. 853 854config ZLIB 855 bool 856 default y 857 help 858 This enables ZLIB compression lib. 859 860config ZSTD 861 bool "Enable Zstandard decompression support" 862 select XXHASH 863 help 864 This enables Zstandard decompression library. 865 866if ZSTD 867 868config ZSTD_LIB_MINIFY 869 bool "Minify Zstandard code" 870 default y 871 help 872 This disables various optional components and changes the 873 compilation flags to prioritize space-saving. 874 875 For detailed info, see zstd's lib/README.md 876 877 https://github.com/facebook/zstd/blob/dev/lib/README.md 878 879endif 880 881config SPL_BZIP2 882 bool "Enable bzip2 decompression support for SPL build" 883 depends on SPL 884 help 885 This enables support for bzip2 compression algorithm for SPL boot. 886 887config SPL_LZ4 888 bool "Enable LZ4 decompression support in SPL" 889 depends on SPL 890 help 891 This enables support for the LZ4 decompression algorithm in SPL. LZ4 892 is a lossless data compression algorithm that is focused on 893 fast compression and decompression speed. It belongs to the LZ77 894 family of byte-oriented compression schemes. 895 896config TPL_LZ4 897 bool "Enable LZ4 decompression support in TPL" 898 depends on TPL 899 help 900 This enables support for the LZ4 decompression algorithm in TPL. LZ4 901 is a lossless data compression algorithm that is focused on 902 fast compression and decompression speed. It belongs to the LZ77 903 family of byte-oriented compression schemes. 904 905config VPL_LZ4 906 bool "Enable LZ4 decompression support in VPL" 907 depends on VPL 908 help 909 This enables support for the LZ4 decompression algorithm in VPL. LZ4 910 is a lossless data compression algorithm that is focused on 911 fast compression and decompression speed. It belongs to the LZ77 912 family of byte-oriented compression schemes. 913 914config SPL_LZMA 915 bool "Enable LZMA decompression support for SPL build" 916 depends on SPL 917 help 918 This enables support for LZMA compression algorithm for SPL boot. 919 920config TPL_LZMA 921 bool "Enable LZMA decompression support for TPL build" 922 depends on TPL 923 help 924 This enables support for LZMA compression algorithm for TPL boot. 925 926config VPL_LZMA 927 bool "Enable LZMA decompression support for VPL build" 928 default y if LZMA 929 help 930 This enables support for LZMA compression algorithm for VPL boot. 931 932config SPL_LZO 933 bool "Enable LZO decompression support in SPL" 934 depends on SPL 935 help 936 This enables support for LZO compression algorithm in the SPL. 937 938config SPL_GZIP 939 bool "Enable gzip decompression support for SPL build" 940 select SPL_ZLIB 941 help 942 This enables support for the GZIP compression algorithm for SPL boot. 943 944config TPL_GZIP 945 bool "Enable gzip decompression support for SPL build" 946 select TPL_ZLIB 947 help 948 This enables support for the GZIP compression algorithm for TPL 949 950config SPL_ZLIB 951 bool 952 help 953 This enables compression lib for SPL boot. 954 955config TPL_ZLIB 956 bool 957 help 958 This enables compression lib for TPL 959 960config SPL_ZSTD 961 bool "Enable Zstandard decompression support in SPL" 962 depends on SPL 963 select XXHASH 964 help 965 This enables Zstandard decompression library in the SPL. 966 967endmenu 968 969config ERRNO_STR 970 bool "Enable function for getting errno-related string message" 971 help 972 The function errno_str(int errno), returns a pointer to the errno 973 corresponding text message: 974 - if errno is null or positive number - a pointer to "Success" message 975 - if errno is negative - a pointer to errno related message 976 977config HEXDUMP 978 bool "Enable hexdump" 979 help 980 This enables functions for printing dumps of binary data. 981 982config SPL_HEXDUMP 983 bool "Enable hexdump in SPL" 984 depends on SPL && HEXDUMP 985 help 986 This enables functions for printing dumps of binary data in 987 SPL. 988 989config GETOPT 990 bool "Enable getopt" 991 help 992 This enables functions for parsing command-line options. 993 994config OF_LIBFDT 995 bool "Enable the FDT library" 996 default y if OF_CONTROL 997 help 998 This enables the FDT library (libfdt). It provides functions for 999 accessing binary device tree images in memory, such as adding and 1000 removing nodes and properties, scanning through the tree and finding 1001 particular compatible nodes. The library operates on a flattened 1002 version of the device tree. 1003 1004config OF_LIBFDT_ASSUME_MASK 1005 hex "Mask of conditions to assume for libfdt" 1006 depends on OF_LIBFDT || FIT 1007 default 0x0 1008 help 1009 Use this to change the assumptions made by libfdt about the 1010 device tree it is working with. A value of 0 means that no assumptions 1011 are made, and libfdt is able to deal with malicious data. A value of 1012 0xff means all assumptions are made and any invalid data may cause 1013 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1014 1015config OF_LIBFDT_OVERLAY 1016 bool "Enable the FDT library overlay support" 1017 depends on OF_LIBFDT 1018 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE 1019 help 1020 This enables the FDT library (libfdt) overlay support. 1021 1022config SYS_FDT_PAD 1023 hex "Free space added to device-tree before booting" 1024 depends on OF_LIBFDT 1025 default 0x13000 if FMAN_ENET || QE || U_QE 1026 default 0x3000 1027 help 1028 The operating system may need a free area at the end of the device- 1029 tree for fix-ups. This setting defines by how many bytes U-Boot 1030 extends the device-tree before booting. 1031 1032config SPL_OF_LIBFDT 1033 bool "Enable the FDT library for SPL" 1034 depends on SPL_LIBGENERIC_SUPPORT 1035 default y if SPL_OF_CONTROL 1036 help 1037 This enables the FDT library (libfdt). It provides functions for 1038 accessing binary device tree images in memory, such as adding and 1039 removing nodes and properties, scanning through the tree and finding 1040 particular compatible nodes. The library operates on a flattened 1041 version of the device tree. 1042 1043config SPL_OF_LIBFDT_ASSUME_MASK 1044 hex "Mask of conditions to assume for libfdt" 1045 depends on SPL_OF_LIBFDT || (FIT && SPL) 1046 default 0xff 1047 help 1048 Use this to change the assumptions made by libfdt in SPL about the 1049 device tree it is working with. A value of 0 means that no assumptions 1050 are made, and libfdt is able to deal with malicious data. A value of 1051 0xff means all assumptions are made and any invalid data may cause 1052 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1053 1054config TPL_OF_LIBFDT 1055 bool "Enable the FDT library for TPL" 1056 depends on TPL_LIBGENERIC_SUPPORT 1057 default y if TPL_OF_CONTROL 1058 help 1059 This enables the FDT library (libfdt). It provides functions for 1060 accessing binary device tree images in memory, such as adding and 1061 removing nodes and properties, scanning through the tree and finding 1062 particular compatible nodes. The library operates on a flattened 1063 version of the device tree. 1064 1065config TPL_OF_LIBFDT_ASSUME_MASK 1066 hex "Mask of conditions to assume for libfdt" 1067 depends on TPL_OF_LIBFDT || (FIT && TPL) 1068 default 0xff 1069 help 1070 Use this to change the assumptions made by libfdt in TPL about the 1071 device tree it is working with. A value of 0 means that no assumptions 1072 are made, and libfdt is able to deal with malicious data. A value of 1073 0xff means all assumptions are made and any invalid data may cause 1074 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1075 1076config VPL_OF_LIBFDT 1077 bool "Enable the FDT library for VPL" 1078 depends on VPL 1079 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA 1080 help 1081 This enables the FDT library (libfdt). It provides functions for 1082 accessing binary device tree images in memory, such as adding and 1083 removing nodes and properties, scanning through the tree and finding 1084 particular compatible nodes. The library operates on a flattened 1085 version of the device tree. 1086 1087config VPL_OF_LIBFDT_ASSUME_MASK 1088 hex "Mask of conditions to assume for libfdt" 1089 depends on VPL_OF_LIBFDT || (FIT && VPL) 1090 default 0xff 1091 help 1092 Use this to change the assumptions made by libfdt in SPL about the 1093 device tree it is working with. A value of 0 means that no assumptions 1094 are made, and libfdt is able to deal with malicious data. A value of 1095 0xff means all assumptions are made and any invalid data may cause 1096 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1097 1098menu "System tables" 1099 depends on (!EFI_CLIENT && !SYS_COREBOOT) || (ARM && EFI_LOADER) 1100 1101config BLOBLIST_TABLES 1102 bool "Put tables in a bloblist" 1103 depends on BLOBLIST 1104 default y if X86 1105 default y if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE) 1106 default n 1107 help 1108 On x86 normally tables are placed at address 0xf0000 and can be up 1109 to 64KB long. With this option, tables are instead placed in the 1110 bloblist with a pointer from 0xf0000. The size can then be larger 1111 and the tables can be placed high in memory. 1112 On other architectures the tables are always placed in high memory. 1113 1114config GENERATE_SMBIOS_TABLE 1115 bool "Generate an SMBIOS (System Management BIOS) table" 1116 depends on SMBIOS 1117 default y 1118 help 1119 The System Management BIOS (SMBIOS) specification addresses how 1120 motherboard and system vendors present management information about 1121 their products in a standard format by extending the BIOS interface 1122 on Intel architecture systems. 1123 1124 Check http://www.dmtf.org/standards/smbios for details. 1125 1126 See also SYSINFO_SMBIOS which allows SMBIOS values to be provided in 1127 the devicetree. 1128 1129config GENERATE_SMBIOS_TABLE_VERBOSE 1130 bool "Generate a verbose SMBIOS (System Management BIOS) table" 1131 depends on GENERATE_SMBIOS_TABLE 1132 help 1133 Provide verbose SMBIOS information. 1134 1135endmenu 1136 1137config LIB_RATIONAL 1138 bool "enable continued fraction calculation routines" 1139 1140config SPL_LIB_RATIONAL 1141 bool "enable continued fraction calculation routines for SPL" 1142 depends on SPL 1143 1144config ASN1_COMPILER 1145 bool 1146 help 1147 ASN.1 (Abstract Syntax Notation One) is a standard interface 1148 description language for defining data structures that can be 1149 serialized and deserialized in a cross-platform way. It is 1150 broadly used in telecommunications and computer networking, 1151 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1152 This option enables the support of the asn1 compiler. 1153 1154config ASN1_DECODER 1155 bool 1156 help 1157 ASN.1 (Abstract Syntax Notation One) is a standard interface 1158 description language for defining data structures that can be 1159 serialized and deserialized in a cross-platform way. It is 1160 broadly used in telecommunications and computer networking, 1161 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1162 This option enables the support of the asn1 decoder. 1163 1164config SPL_ASN1_DECODER 1165 bool 1166 help 1167 ASN.1 (Abstract Syntax Notation One) is a standard interface 1168 description language for defining data structures that can be 1169 serialized and deserialized in a cross-platform way. It is 1170 broadly used in telecommunications and computer networking, 1171 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1172 This option enables the support of the asn1 decoder in the SPL. 1173 1174config OID_REGISTRY 1175 bool 1176 help 1177 In computing, object identifiers or OIDs are an identifier mechanism 1178 standardized by the International Telecommunication Union (ITU) and 1179 ISO/IEC for naming any object, concept, or "thing" with a globally 1180 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier). 1181 Enable fast lookup object identifier registry. 1182 1183config SPL_OID_REGISTRY 1184 bool 1185 help 1186 In computing, object identifiers or OIDs are an identifier mechanism 1187 standardized by the International Telecommunication Union (ITU) and 1188 ISO/IEC for naming any object, concept, or "thing" with a globally 1189 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier). 1190 Enable fast lookup object identifier registry in the SPL. 1191 1192config SMBIOS 1193 bool "SMBIOS support" 1194 depends on X86 || EFI_LOADER 1195 default y 1196 select LAST_STAGE_INIT 1197 help 1198 Indicates that this platform can support System Management BIOS 1199 (SMBIOS) tables. These provide various pieces of information about 1200 the board, such as the manufacturer and the model name. 1201 1202 See GENERATE_SMBIOS_TABLE which controls whether U-Boot actually 1203 creates these tables, rather than them coming from a previous firmware 1204 stage. 1205 1206config SMBIOS_PARSER 1207 bool "SMBIOS parser" 1208 help 1209 A simple parser for SMBIOS data. 1210 1211source "lib/optee/Kconfig" 1212 1213config TEST_FDTDEC 1214 bool "enable fdtdec test" 1215 depends on OF_LIBFDT 1216 1217config LIB_DATE 1218 bool 1219 1220config LIB_ELF 1221 bool 1222 help 1223 Support basic elf loading/validating functions. 1224 This supports for 32 bit and 64 bit versions. 1225 1226config LMB 1227 bool "Enable the logical memory blocks library (lmb)" 1228 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \ 1229 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA 1230 select ARCH_MISC_INIT if PPC 1231 help 1232 Support the library logical memory blocks. This will require 1233 a malloc() implementation for defining the data structures 1234 needed for maintaining the LMB memory map. 1235 1236config SPL_LMB 1237 bool "Enable LMB module for SPL" 1238 depends on SPL && SPL_FRAMEWORK && SPL_SYS_MALLOC 1239 help 1240 Enable support for Logical Memory Block library routines in 1241 SPL. This will require a malloc() implementation for defining 1242 the data structures needed for maintaining the LMB memory map. 1243 1244config LMB_ARCH_MEM_MAP 1245 bool "Add an architecture specific memory map" 1246 depends on LMB 1247 default y if FSL_LAYERSCAPE || X86 1248 help 1249 Some architectures have special or unique aspects which need 1250 consideration when adding memory ranges to the list of available 1251 memory map. Enable this config in such scenarios which allow 1252 architectures and boards to define their own memory map. 1253 1254config SPL_LMB_ARCH_MEM_MAP 1255 bool "Add an architecture specific memory map" 1256 depends on SPL_LMB 1257 help 1258 Some architectures have special or unique scenarios which need 1259 consideration when adding memory ranges to the list of available 1260 memory map. Enable this config in such scenarios which allow 1261 architectures and boards to define their own memory map. 1262 1263config PHANDLE_CHECK_SEQ 1264 bool "Enable phandle check while getting sequence number" 1265 help 1266 When there are multiple device tree nodes with same name, 1267 enable this config option to distinguish them using 1268 phandles in fdtdec_get_alias_seq() function. 1269 1270config UTHREAD 1271 bool "Enable thread support" 1272 depends on HAVE_INITJMP 1273 help 1274 Implement a simple form of cooperative multi-tasking based on 1275 context-switching via initjmp(), setjmp() and longjmp(). The 1276 uthread_ interface enables the main thread of execution to create 1277 one or more secondary threads and schedule them until they all have 1278 returned. At any point a thread may suspend its execution and 1279 schedule another thread, which allows for the efficient multiplexing 1280 of leghthy operations. 1281 1282config UTHREAD_STACK_SIZE 1283 int "Default uthread stack size" 1284 depends on UTHREAD 1285 default 32768 1286 help 1287 The default stack size for uthreads. Each uthread has its own stack. 1288 When the stack_sz argument to uthread_create() is zero then this 1289 value is used. 1290 1291endmenu 1292 1293source "lib/fwu_updates/Kconfig" 1294