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