"Das U-Boot" Source Tree
at master 1260 lines 40 kB view raw
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 PANIC_HANG 257 bool "Do not reset the system on fatal error" 258 help 259 Define this option to stop the system in case of a fatal error, 260 so that you have to reset it manually. This is probably NOT a good 261 idea for an embedded system where you want the system to reboot 262 automatically as fast as possible, but it may be useful during 263 development since you can try to debug the conditions that lead to 264 the situation. 265 266config REGEX 267 bool "Enable regular expression support" 268 default y if NET 269 help 270 If this variable is defined, U-Boot is linked against the 271 SLRE (Super Light Regular Expression) library, which adds 272 regex support to some commands, for example "env grep" and 273 "setexpr". 274 275choice 276 prompt "Pseudo-random library support type" 277 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \ 278 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE 279 default LIB_RAND 280 help 281 Select the library to provide pseudo-random number generator 282 functions. LIB_HW_RAND supports certain hardware engines that 283 provide this functionality. If in doubt, select LIB_RAND. 284 285config LIB_RAND 286 bool "Pseudo-random library support" 287 288config LIB_HW_RAND 289 bool "HW Engine for random library support" 290 291endchoice 292 293config SUPPORT_ACPI 294 bool 295 help 296 Enable this if your arch or board can support generating ACPI 297 (Advanced Configuration and Power Interface) tables. In this case 298 U-Boot can generate these tables and pass them to the Operating 299 System. 300 301config ACPI 302 bool "Enable support for ACPI libraries" 303 depends on SUPPORT_ACPI 304 help 305 Provides library functions for dealing with ACPI tables. This does 306 not necessarily include generation of tables 307 (see GENERATE_ACPI_TABLE), but allows for tables to be located. 308 309config SPL_ACPI 310 bool "Enable support for ACPI libraries in SPL" 311 depends on SPL && SUPPORT_ACPI 312 help 313 Provides library functions for dealing with ACPI tables in SPL. This 314 does not necessarily include generation of tables 315 (see GENERATE_ACPI_TABLE), but allows for tables to be located. 316 317config GENERATE_ACPI_TABLE 318 bool "Generate an ACPI (Advanced Configuration and Power Interface) table" 319 depends on ACPI 320 select QFW if QEMU 321 help 322 The Advanced Configuration and Power Interface (ACPI) specification 323 provides an open standard for device configuration and management 324 by the operating system. It defines platform-independent interfaces 325 for configuration and power management monitoring. 326 327config ACPI_PARKING_PROTOCOL 328 bool "Support ACPI parking protocol method" 329 depends on GENERATE_ACPI_TABLE 330 depends on ARMV8_MULTIENTRY 331 depends on BLOBLIST_TABLES 332 default y if !SEC_FIRMWARE_ARMV8_PSCI && !ARMV8_PSCI 333 help 334 Say Y here to support "ACPI parking protocol" enable method 335 for booting Linux. 336 337 To use this feature, you must do: 338 - Bring secondary CPUs into U-Boot proper in a board-specific 339 manner. This must be done *after* relocation. Otherwise, the 340 secondary CPUs will spin in unprotected memory-area because the 341 master CPU protects the relocated spin code. 342 343config SPL_TINY_MEMSET 344 bool "Use a very small memset() in SPL" 345 depends on SPL 346 help 347 The faster memset() is the arch-specific one (if available) enabled 348 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get 349 better performance by writing a word at a time. But in very 350 size-constrained environments even this may be too big. Enable this 351 option to reduce code size slightly at the cost of some speed. 352 353config TPL_TINY_MEMSET 354 bool "Use a very small memset() in TPL" 355 depends on TPL 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 RBTREE 364 bool 365 366config BITREVERSE 367 bool "Bit reverse library from Linux" 368 369config TRACE 370 bool "Support for tracing of function calls and timing" 371 imply CMD_TRACE 372 imply TIMER_EARLY 373 help 374 Enables function tracing within U-Boot. This allows recording of call 375 traces including timing information. The command can write data to 376 memory for exporting for analysis (e.g. using bootchart). 377 See doc/develop/trace.rst for full details. 378 379config TRACE_BUFFER_SIZE 380 hex "Size of trace buffer in U-Boot" 381 depends on TRACE 382 default 0x01000000 383 help 384 Sets the size of the trace buffer in U-Boot. This is allocated from 385 memory during relocation. If this buffer is too small, the trace 386 history will be truncated, with later records omitted. 387 388 If early trace is enabled (i.e. before relocation), this buffer must 389 be large enough to include all the data from the early trace buffer as 390 well, since this is copied over to the main buffer during relocation. 391 392 A trace record is emitted for each function call and each record is 393 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If 394 the size is too small then 'trace stats' will show a message saying 395 how many records were dropped due to buffer overflow. 396 397config TRACE_CALL_DEPTH_LIMIT 398 int "Trace call depth limit" 399 depends on TRACE 400 default 15 401 help 402 Sets the maximum call depth up to which function calls are recorded. 403 404config TRACE_EARLY 405 bool "Enable tracing before relocation" 406 depends on TRACE 407 help 408 Sometimes it is helpful to trace execution of U-Boot before 409 relocation. This is possible by using a arch-specific, fixed buffer 410 position in memory. Enable this option to start tracing as early as 411 possible after U-Boot starts. 412 413config TRACE_EARLY_SIZE 414 hex "Size of early trace buffer in U-Boot" 415 depends on TRACE_EARLY 416 default 0x00100000 417 help 418 Sets the size of the early trace buffer in bytes. This is used to hold 419 tracing information before relocation. 420 421config TRACE_EARLY_CALL_DEPTH_LIMIT 422 int "Early trace call depth limit" 423 depends on TRACE_EARLY 424 default 15 425 help 426 Sets the maximum call depth up to which function calls are recorded 427 during early tracing. 428 429config TRACE_EARLY_ADDR 430 hex "Address of early trace buffer in U-Boot" 431 depends on TRACE_EARLY 432 default 0x00200000 433 help 434 Sets the address of the early trace buffer in U-Boot. This memory 435 must be accessible before relocation. 436 437 A trace record is emitted for each function call and each record is 438 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If 439 the size is too small then the message which says the amount of early 440 data being coped will the the same as the 441 442config CIRCBUF 443 bool "Enable circular buffer support" 444 445source "lib/dhry/Kconfig" 446 447menu "Alternative crypto libraries" 448source lib/mbedtls/Kconfig 449endmenu 450 451menu "Security support" 452 453config AES 454 bool "Support the AES algorithm" 455 help 456 This provides a means to encrypt and decrypt data using the AES 457 (Advanced Encryption Standard). This algorithm uses a symetric key 458 and is widely used as a streaming cipher. Different key lengths are 459 supported by the algorithm but only a 128-bit key is supported at 460 present. 461 462source "lib/ecdsa/Kconfig" 463source "lib/rsa/Kconfig" 464source "lib/crypto/Kconfig" 465source "lib/crypt/Kconfig" 466 467config TPM 468 bool "Trusted Platform Module (TPM) Support" 469 depends on DM 470 imply DM_RNG 471 select SHA1 472 help 473 This enables support for TPMs which can be used to provide security 474 features for your board. The TPM can be connected via LPC or I2C 475 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 476 command to interactive the TPM. Driver model support is provided 477 for the low-level TPM interface, but only one TPM is supported at 478 a time by the TPM library. 479 For size reasons only SHA1 is selected which is supported on TPM1.2. 480 If you want a fully functional TPM enable all hashing algorithms. 481 If you enabled measured boot all hashing algorithms are selected. 482 483config SPL_TPM 484 bool "Trusted Platform Module (TPM) Support in SPL" 485 depends on SPL_DM 486 imply SPL_CRC8 487 help 488 This enables support for TPMs which can be used to provide security 489 features for your board. The TPM can be connected via LPC or I2C 490 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 491 command to interactive the TPM. Driver model support is provided 492 for the low-level TPM interface, but only one TPM is supported at 493 a time by the TPM library. 494 495config TPL_TPM 496 bool "Trusted Platform Module (TPM) Support in TPL" 497 depends on TPL_DM 498 help 499 This enables support for TPMs which can be used to provide security 500 features for your board. The TPM can be connected via LPC or I2C 501 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 502 command to interactive the TPM. Driver model support is provided 503 for the low-level TPM interface, but only one TPM is supported at 504 a time by the TPM library. 505 506config VPL_TPM 507 bool "Trusted Platform Module (TPM) Support in VPL" 508 depends on VPL_DM 509 help 510 This enables support for TPMs which can be used to provide security 511 features for your board. The TPM can be connected via LPC or I2C 512 and a sandbox TPM is provided for testing purposes. Use the 'tpm' 513 command to interactive the TPM. Driver model support is provided 514 for the low-level TPM interface, but only one TPM is supported at 515 a time by the TPM library. 516 517config TPM_PCR_ALLOCATE 518 bool "Re-configurate TPM algorithms in run-time (PCR allocate)" 519 depends on TPM_V2 && (MEASURED_BOOT || EFI_TCG2_PROTOCOL) 520 help 521 This enables a detection for the dismatches of algorithms among TPM 522 device, eventlog from previous boot stage and U-Boot support. 523 A PCR allocate command will be sent to reconfigurate the TPM device 524 in run-time to make sure algorithms in TPM device, eventlog and 525 U-Boot are aligned with each other. 526 A system reboot will be proceeded after then to activate the new 527 algorithms. 528 529endmenu 530 531menu "Android Verified Boot" 532 533config LIBAVB 534 bool "Android Verified Boot 2.0 support" 535 depends on ANDROID_BOOT_IMAGE 536 help 537 This enables support of Android Verified Boot 2.0 which can be used 538 to assure the end user of the integrity of the software running on a 539 device. Introduces such features as boot chain of trust, rollback 540 protection etc. 541 542endmenu 543 544menu "Hashing Support" 545 546config BLAKE2 547 bool "Enable BLAKE2 support" 548 help 549 This option enables support of hashing using BLAKE2B algorithm. 550 The hash is calculated in software. 551 The BLAKE2 algorithm produces a hash value (digest) between 1 and 552 64 bytes. 553 554config SHA1 555 bool "Enable SHA1 support" 556 help 557 This option enables support of hashing using SHA1 algorithm. 558 The hash is calculated in software. 559 The SHA1 algorithm produces a 160-bit (20-byte) hash value 560 (digest). 561 562config SHA256 563 bool "Enable SHA256 support" 564 help 565 This option enables support of hashing using SHA256 algorithm. 566 The hash is calculated in software. 567 The SHA256 algorithm produces a 256-bit (32-byte) hash value 568 (digest). 569 570config SHA512 571 bool "Enable SHA512 support" 572 default y if TI_SECURE_DEVICE && FIT_SIGNATURE 573 help 574 This option enables support of hashing using SHA512 algorithm. 575 The hash is calculated in software. 576 The SHA512 algorithm produces a 512-bit (64-byte) hash value 577 (digest). 578 579config SHA384 580 bool "Enable SHA384 support" 581 select SHA512 582 help 583 This option enables support of hashing using SHA384 algorithm. 584 The hash is calculated in software. This is also selects SHA512, 585 because these implementations share the bulk of the code.. 586 The SHA384 algorithm produces a 384-bit (48-byte) hash value 587 (digest). 588 589config SHA_HW_ACCEL 590 bool "Enable hardware acceleration for SHA hash functions" 591 help 592 This option enables hardware acceleration for the SHA1 and SHA256 593 hashing algorithms. This affects the 'hash' command and also the 594 hash_lookup_algo() function. 595 596if SPL 597 598config SPL_CRC32 599 bool "Enable CRC32 support in SPL" 600 default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION 601 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST 602 help 603 This option enables support of hashing using CRC32 algorithm. 604 The CRC32 algorithm produces 32-bit checksum value. For FIT 605 images, this is the least secure type of checksum, suitable for 606 detected accidental image corruption. For secure applications you 607 should consider SHA256 or SHA384. 608 609config SPL_SHA1 610 bool "Enable SHA1 support in SPL" 611 default y if SHA1 612 help 613 This option enables support of hashing using SHA1 algorithm. 614 The hash is calculated in software. 615 The SHA1 algorithm produces a 160-bit (20-byte) hash value 616 (digest). 617 618config SPL_SHA256 619 bool "Enable SHA256 support in SPL" 620 default y if SHA256 621 help 622 This option enables support of hashing using SHA256 algorithm. 623 The hash is calculated in software. 624 The SHA256 algorithm produces a 256-bit (32-byte) hash value 625 (digest). 626 627config SPL_SHA512 628 bool "Enable SHA512 support in SPL" 629 default y if SHA512 630 help 631 This option enables support of hashing using SHA512 algorithm. 632 The hash is calculated in software. 633 The SHA512 algorithm produces a 512-bit (64-byte) hash value 634 (digest). 635 636config SPL_SHA384 637 bool "Enable SHA384 support in SPL" 638 default y if SHA384 639 select SPL_SHA512 640 help 641 This option enables support of hashing using SHA384 algorithm. 642 The hash is calculated in software. This is also selects SHA512, 643 because these implementations share the bulk of the code.. 644 The SHA384 algorithm produces a 384-bit (48-byte) hash value 645 (digest). 646 647config SPL_SHA_HW_ACCEL 648 bool "Enable hardware acceleration for SHA hash functions" 649 default y if SHA_HW_ACCEL 650 help 651 This option enables hardware acceleration for the SHA1 and SHA256 652 hashing algorithms. This affects the 'hash' command and also the 653 hash_lookup_algo() function. 654 655config SPL_SHA_PROG_HW_ACCEL 656 bool "Enable Progressive hashing support using hardware in SPL" 657 depends on SHA_PROG_HW_ACCEL 658 default y 659 help 660 This option enables hardware-acceleration for SHA progressive 661 hashing. 662 Data can be streamed in a block at a time and the hashing is 663 performed in hardware. 664 665endif 666 667config VPL_SHA1 668 bool "Enable SHA1 support in VPL" 669 depends on VPL 670 default y if SHA1 671 help 672 This option enables support of hashing using SHA1 algorithm. 673 The hash is calculated in software. 674 The SHA1 algorithm produces a 160-bit (20-byte) hash value 675 (digest). 676 677config VPL_SHA256 678 bool "Enable SHA256 support in VPL" 679 depends on VPL 680 default y if SHA256 681 help 682 This option enables support of hashing using SHA256 algorithm. 683 The hash is calculated in software. 684 The SHA256 algorithm produces a 256-bit (32-byte) hash value 685 (digest). 686 687if SHA_HW_ACCEL 688 689config SHA512_HW_ACCEL 690 bool "Enable hardware acceleration for SHA512" 691 depends on SHA512 692 help 693 This option enables hardware acceleration for the SHA384 and SHA512 694 hashing algorithms. This affects the 'hash' command and also the 695 hash_lookup_algo() function. 696 697config SHA_PROG_HW_ACCEL 698 bool "Enable Progressive hashing support using hardware" 699 help 700 This option enables hardware-acceleration for SHA progressive 701 hashing. 702 Data can be streamed in a block at a time and the hashing is 703 performed in hardware. 704 705endif 706 707config MD5 708 bool "Support MD5 algorithm" 709 help 710 This option enables MD5 support. MD5 is an algorithm designed 711 in 1991 that produces a 16-byte digest (or checksum) from its input 712 data. It has a number of vulnerabilities which preclude its use in 713 security applications, but it can be useful for providing a quick 714 checksum of a block of data. 715 716config SPL_MD5 717 bool "Support MD5 algorithm in SPL" 718 depends on SPL 719 help 720 This option enables MD5 support in SPL. MD5 is an algorithm designed 721 in 1991 that produces a 16-byte digest (or checksum) from its input 722 data. It has a number of vulnerabilities which preclude its use in 723 security applications, but it can be useful for providing a quick 724 checksum of a block of data. 725 726config CRC8 727 def_bool y 728 help 729 Enables CRC8 support in U-Boot. This is normally required. CRC8 is 730 a simple and fast checksumming algorithm which does a bytewise 731 checksum with feedback to produce an 8-bit result. The code is small 732 and it does not require a lookup table (unlike CRC32). 733 734config SPL_CRC8 735 bool "Support CRC8 in SPL" 736 depends on SPL 737 help 738 Enables CRC8 support in SPL. This is not normally required. CRC8 is 739 a simple and fast checksumming algorithm which does a bytewise 740 checksum with feedback to produce an 8-bit result. The code is small 741 and it does not require a lookup table (unlike CRC32). 742 743config TPL_CRC8 744 bool "Support CRC8 in TPL" 745 depends on TPL 746 help 747 Enables CRC8 support in TPL. This is not normally required. CRC8 is 748 a simple and fast checksumming algorithm which does a bytewise 749 checksum with feedback to produce an 8-bit result. The code is small 750 and it does not require a lookup table (unlike CRC32). 751 752config VPL_CRC8 753 bool "Support CRC8 in VPL" 754 depends on VPL 755 help 756 Enables CRC8 support in VPL. This is not normally required. CRC8 is 757 a simple and fast checksumming algorithm which does a bytewise 758 checksum with feedback to produce an 8-bit result. The code is small 759 and it does not require a lookup table (unlike CRC32). 760 761config CRC16 762 bool "Support CRC16" 763 default y 764 help 765 Enables CRC16 support. This is normally required. Two algorithms are 766 provided: 767 768 - CCITT, with a polynomical x^16 + x^12 + x^5 + 1 769 - standard, with polynomial x^16 + x^15 + x^2 + 1 (0x8005) 770 771config SPL_CRC16 772 bool "Support CRC16 in SPL" 773 depends on SPL 774 help 775 Enables CRC16 support in SPL. This is not normally required. 776 777config CRC32 778 def_bool y 779 help 780 Enables CRC32 support in U-Boot. This is normally required. 781 782config CRC32C 783 bool 784 785config XXHASH 786 bool 787 788endmenu 789 790menu "Compression Support" 791 792config LZ4 793 bool "Enable LZ4 decompression support" 794 help 795 If this option is set, support for LZ4 compressed images 796 is included. The LZ4 algorithm can run in-place as long as the 797 compressed image is loaded to the end of the output buffer, and 798 trades lower compression ratios for much faster decompression. 799 800 NOTE: This implements the release version of the LZ4 frame 801 format as generated by default by the 'lz4' command line tool. 802 This is not the same as the outdated, less efficient legacy 803 frame format currently (2015) implemented in the Linux kernel 804 (generated by 'lz4 -l'). The two formats are incompatible. 805 806config LZMA 807 bool "Enable LZMA decompression support" 808 help 809 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm), 810 a dictionary compression algorithm that provides a high compression 811 ratio and fairly fast decompression speed. See also 812 CONFIG_CMD_LZMADEC which provides a decode command. 813 814config LZO 815 bool "Enable LZO decompression support" 816 help 817 This enables support for the LZO compression algorithm. 818 819config GZIP 820 bool "Enable gzip decompression support" 821 select ZLIB 822 default y 823 help 824 This enables support for GZIP compression algorithm. 825 826config ZLIB_UNCOMPRESS 827 bool "Enables zlib's uncompress() functionality" 828 help 829 This enables an extra zlib functionality: the uncompress() function, 830 which decompresses data from a buffer into another, knowing their 831 sizes. Unlike gunzip(), there is no header parsing. 832 833config GZIP_COMPRESSED 834 bool 835 select ZLIB 836 837config BZIP2 838 bool "Enable bzip2 decompression support" 839 help 840 This enables support for BZIP2 compression algorithm. 841 842config ZLIB 843 bool 844 default y 845 help 846 This enables ZLIB compression lib. 847 848config ZSTD 849 bool "Enable Zstandard decompression support" 850 select XXHASH 851 help 852 This enables Zstandard decompression library. 853 854if ZSTD 855 856config ZSTD_LIB_MINIFY 857 bool "Minify Zstandard code" 858 default y 859 help 860 This disables various optional components and changes the 861 compilation flags to prioritize space-saving. 862 863 For detailed info, see zstd's lib/README.md 864 865 https://github.com/facebook/zstd/blob/dev/lib/README.md 866 867endif 868 869config SPL_BZIP2 870 bool "Enable bzip2 decompression support for SPL build" 871 depends on SPL 872 help 873 This enables support for bzip2 compression algorithm for SPL boot. 874 875config SPL_LZ4 876 bool "Enable LZ4 decompression support in SPL" 877 depends on SPL 878 help 879 This enables support for the LZ4 decompression algorithm in SPL. LZ4 880 is a lossless data compression algorithm that is focused on 881 fast compression and decompression speed. It belongs to the LZ77 882 family of byte-oriented compression schemes. 883 884config TPL_LZ4 885 bool "Enable LZ4 decompression support in TPL" 886 depends on TPL 887 help 888 This enables support for the LZ4 decompression algorithm in TPL. LZ4 889 is a lossless data compression algorithm that is focused on 890 fast compression and decompression speed. It belongs to the LZ77 891 family of byte-oriented compression schemes. 892 893config VPL_LZ4 894 bool "Enable LZ4 decompression support in VPL" 895 depends on VPL 896 help 897 This enables support for the LZ4 decompression algorithm in VPL. LZ4 898 is a lossless data compression algorithm that is focused on 899 fast compression and decompression speed. It belongs to the LZ77 900 family of byte-oriented compression schemes. 901 902config SPL_LZMA 903 bool "Enable LZMA decompression support for SPL build" 904 depends on SPL 905 help 906 This enables support for LZMA compression algorithm for SPL boot. 907 908config TPL_LZMA 909 bool "Enable LZMA decompression support for TPL build" 910 depends on TPL 911 help 912 This enables support for LZMA compression algorithm for TPL boot. 913 914config VPL_LZMA 915 bool "Enable LZMA decompression support for VPL build" 916 default y if LZMA 917 help 918 This enables support for LZMA compression algorithm for VPL boot. 919 920config SPL_LZO 921 bool "Enable LZO decompression support in SPL" 922 depends on SPL 923 help 924 This enables support for LZO compression algorithm in the SPL. 925 926config SPL_GZIP 927 bool "Enable gzip decompression support for SPL build" 928 select SPL_ZLIB 929 help 930 This enables support for the GZIP compression algorithm for SPL boot. 931 932config TPL_GZIP 933 bool "Enable gzip decompression support for SPL build" 934 select TPL_ZLIB 935 help 936 This enables support for the GZIP compression algorithm for TPL 937 938config SPL_ZLIB 939 bool 940 help 941 This enables compression lib for SPL boot. 942 943config TPL_ZLIB 944 bool 945 help 946 This enables compression lib for TPL 947 948config SPL_ZSTD 949 bool "Enable Zstandard decompression support in SPL" 950 depends on SPL 951 select XXHASH 952 help 953 This enables Zstandard decompression library in the SPL. 954 955endmenu 956 957config ERRNO_STR 958 bool "Enable function for getting errno-related string message" 959 help 960 The function errno_str(int errno), returns a pointer to the errno 961 corresponding text message: 962 - if errno is null or positive number - a pointer to "Success" message 963 - if errno is negative - a pointer to errno related message 964 965config HEXDUMP 966 bool "Enable hexdump" 967 help 968 This enables functions for printing dumps of binary data. 969 970config SPL_HEXDUMP 971 bool "Enable hexdump in SPL" 972 depends on SPL && HEXDUMP 973 help 974 This enables functions for printing dumps of binary data in 975 SPL. 976 977config GETOPT 978 bool "Enable getopt" 979 help 980 This enables functions for parsing command-line options. 981 982config OF_LIBFDT 983 bool "Enable the FDT library" 984 default y if OF_CONTROL 985 help 986 This enables the FDT library (libfdt). It provides functions for 987 accessing binary device tree images in memory, such as adding and 988 removing nodes and properties, scanning through the tree and finding 989 particular compatible nodes. The library operates on a flattened 990 version of the device tree. 991 992config OF_LIBFDT_ASSUME_MASK 993 hex "Mask of conditions to assume for libfdt" 994 depends on OF_LIBFDT || FIT 995 default 0x0 996 help 997 Use this to change the assumptions made by libfdt about the 998 device tree it is working with. A value of 0 means that no assumptions 999 are made, and libfdt is able to deal with malicious data. A value of 1000 0xff means all assumptions are made and any invalid data may cause 1001 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1002 1003config OF_LIBFDT_OVERLAY 1004 bool "Enable the FDT library overlay support" 1005 depends on OF_LIBFDT 1006 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE 1007 help 1008 This enables the FDT library (libfdt) overlay support. 1009 1010config SYS_FDT_PAD 1011 hex "Maximum size of the FDT memory area passeed to the OS" 1012 depends on OF_LIBFDT 1013 default 0x13000 if FMAN_ENET || QE || U_QE 1014 default 0x3000 1015 help 1016 During OS boot, we allocate a region of memory within the bootmap 1017 for the FDT. This is the size that we will expand the FDT that we 1018 are using will be extended to be, in bytes. 1019 1020config SPL_OF_LIBFDT 1021 bool "Enable the FDT library for SPL" 1022 depends on SPL_LIBGENERIC_SUPPORT 1023 default y if SPL_OF_CONTROL 1024 help 1025 This enables the FDT library (libfdt). It provides functions for 1026 accessing binary device tree images in memory, such as adding and 1027 removing nodes and properties, scanning through the tree and finding 1028 particular compatible nodes. The library operates on a flattened 1029 version of the device tree. 1030 1031config SPL_OF_LIBFDT_ASSUME_MASK 1032 hex "Mask of conditions to assume for libfdt" 1033 depends on SPL_OF_LIBFDT || (FIT && SPL) 1034 default 0xff 1035 help 1036 Use this to change the assumptions made by libfdt in SPL about the 1037 device tree it is working with. A value of 0 means that no assumptions 1038 are made, and libfdt is able to deal with malicious data. A value of 1039 0xff means all assumptions are made and any invalid data may cause 1040 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1041 1042config TPL_OF_LIBFDT 1043 bool "Enable the FDT library for TPL" 1044 depends on TPL_LIBGENERIC_SUPPORT 1045 default y if TPL_OF_CONTROL 1046 help 1047 This enables the FDT library (libfdt). It provides functions for 1048 accessing binary device tree images in memory, such as adding and 1049 removing nodes and properties, scanning through the tree and finding 1050 particular compatible nodes. The library operates on a flattened 1051 version of the device tree. 1052 1053config TPL_OF_LIBFDT_ASSUME_MASK 1054 hex "Mask of conditions to assume for libfdt" 1055 depends on TPL_OF_LIBFDT || (FIT && TPL) 1056 default 0xff 1057 help 1058 Use this to change the assumptions made by libfdt in TPL about the 1059 device tree it is working with. A value of 0 means that no assumptions 1060 are made, and libfdt is able to deal with malicious data. A value of 1061 0xff means all assumptions are made and any invalid data may cause 1062 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1063 1064config VPL_OF_LIBFDT 1065 bool "Enable the FDT library for VPL" 1066 depends on VPL 1067 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA 1068 help 1069 This enables the FDT library (libfdt). It provides functions for 1070 accessing binary device tree images in memory, such as adding and 1071 removing nodes and properties, scanning through the tree and finding 1072 particular compatible nodes. The library operates on a flattened 1073 version of the device tree. 1074 1075config VPL_OF_LIBFDT_ASSUME_MASK 1076 hex "Mask of conditions to assume for libfdt" 1077 depends on VPL_OF_LIBFDT || (FIT && VPL) 1078 default 0xff 1079 help 1080 Use this to change the assumptions made by libfdt in SPL about the 1081 device tree it is working with. A value of 0 means that no assumptions 1082 are made, and libfdt is able to deal with malicious data. A value of 1083 0xff means all assumptions are made and any invalid data may cause 1084 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h 1085 1086menu "System tables" 1087 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER) 1088 1089config BLOBLIST_TABLES 1090 bool "Put tables in a bloblist" 1091 depends on BLOBLIST 1092 default y if X86 1093 default y if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE) 1094 default n 1095 help 1096 On x86 normally tables are placed at address 0xf0000 and can be up 1097 to 64KB long. With this option, tables are instead placed in the 1098 bloblist with a pointer from 0xf0000. The size can then be larger 1099 and the tables can be placed high in memory. 1100 On other architectures the tables are always placed in high memory. 1101 1102config GENERATE_SMBIOS_TABLE 1103 bool "Generate an SMBIOS (System Management BIOS) table" 1104 depends on SMBIOS 1105 default y 1106 help 1107 The System Management BIOS (SMBIOS) specification addresses how 1108 motherboard and system vendors present management information about 1109 their products in a standard format by extending the BIOS interface 1110 on Intel architecture systems. 1111 1112 Check http://www.dmtf.org/standards/smbios for details. 1113 1114 See also SYSINFO_SMBIOS which allows SMBIOS values to be provided in 1115 the devicetree. 1116 1117config GENERATE_SMBIOS_TABLE_VERBOSE 1118 bool "Generate a verbose SMBIOS (System Management BIOS) table" 1119 depends on GENERATE_SMBIOS_TABLE 1120 help 1121 Provide verbose SMBIOS information. 1122 1123endmenu 1124 1125config LIB_RATIONAL 1126 bool "enable continued fraction calculation routines" 1127 1128config SPL_LIB_RATIONAL 1129 bool "enable continued fraction calculation routines for SPL" 1130 depends on SPL 1131 1132config ASN1_COMPILER 1133 bool 1134 help 1135 ASN.1 (Abstract Syntax Notation One) is a standard interface 1136 description language for defining data structures that can be 1137 serialized and deserialized in a cross-platform way. It is 1138 broadly used in telecommunications and computer networking, 1139 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1140 This option enables the support of the asn1 compiler. 1141 1142config ASN1_DECODER 1143 bool 1144 help 1145 ASN.1 (Abstract Syntax Notation One) is a standard interface 1146 description language for defining data structures that can be 1147 serialized and deserialized in a cross-platform way. It is 1148 broadly used in telecommunications and computer networking, 1149 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1150 This option enables the support of the asn1 decoder. 1151 1152config SPL_ASN1_DECODER 1153 bool 1154 help 1155 ASN.1 (Abstract Syntax Notation One) is a standard interface 1156 description language for defining data structures that can be 1157 serialized and deserialized in a cross-platform way. It is 1158 broadly used in telecommunications and computer networking, 1159 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1). 1160 This option enables the support of the asn1 decoder in the SPL. 1161 1162config OID_REGISTRY 1163 bool 1164 help 1165 In computing, object identifiers or OIDs are an identifier mechanism 1166 standardized by the International Telecommunication Union (ITU) and 1167 ISO/IEC for naming any object, concept, or "thing" with a globally 1168 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier). 1169 Enable fast lookup object identifier registry. 1170 1171config SPL_OID_REGISTRY 1172 bool 1173 help 1174 In computing, object identifiers or OIDs are an identifier mechanism 1175 standardized by the International Telecommunication Union (ITU) and 1176 ISO/IEC for naming any object, concept, or "thing" with a globally 1177 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier). 1178 Enable fast lookup object identifier registry in the SPL. 1179 1180config SMBIOS 1181 bool "SMBIOS support" 1182 depends on X86 || EFI_LOADER 1183 default y 1184 select LAST_STAGE_INIT 1185 help 1186 Indicates that this platform can support System Management BIOS 1187 (SMBIOS) tables. These provide various pieces of information about 1188 the board, such as the manufacturer and the model name. 1189 1190 See GENERATE_SMBIOS_TABLE which controls whether U-Boot actually 1191 creates these tables, rather than them coming from a previous firmware 1192 stage. 1193 1194config SMBIOS_PARSER 1195 bool "SMBIOS parser" 1196 help 1197 A simple parser for SMBIOS data. 1198 1199source "lib/optee/Kconfig" 1200 1201config TEST_FDTDEC 1202 bool "enable fdtdec test" 1203 depends on OF_LIBFDT 1204 1205config LIB_DATE 1206 bool 1207 1208config LIB_ELF 1209 bool 1210 help 1211 Support basic elf loading/validating functions. 1212 This supports for 32 bit and 64 bit versions. 1213 1214config LMB 1215 bool "Enable the logical memory blocks library (lmb)" 1216 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \ 1217 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA 1218 select ARCH_MISC_INIT if PPC 1219 help 1220 Support the library logical memory blocks. This will require 1221 a malloc() implementation for defining the data structures 1222 needed for maintaining the LMB memory map. 1223 1224config SPL_LMB 1225 bool "Enable LMB module for SPL" 1226 depends on SPL && SPL_FRAMEWORK && SPL_SYS_MALLOC 1227 help 1228 Enable support for Logical Memory Block library routines in 1229 SPL. This will require a malloc() implementation for defining 1230 the data structures needed for maintaining the LMB memory map. 1231 1232config LMB_ARCH_MEM_MAP 1233 bool "Add an architecture specific memory map" 1234 depends on LMB 1235 default y if FSL_LAYERSCAPE || X86 1236 help 1237 Some architectures have special or unique aspects which need 1238 consideration when adding memory ranges to the list of available 1239 memory map. Enable this config in such scenarios which allow 1240 architectures and boards to define their own memory map. 1241 1242config SPL_LMB_ARCH_MEM_MAP 1243 bool "Add an architecture specific memory map" 1244 depends on SPL_LMB 1245 help 1246 Some architectures have special or unique scenarios which need 1247 consideration when adding memory ranges to the list of available 1248 memory map. Enable this config in such scenarios which allow 1249 architectures and boards to define their own memory map. 1250 1251config PHANDLE_CHECK_SEQ 1252 bool "Enable phandle check while getting sequence number" 1253 help 1254 When there are multiple device tree nodes with same name, 1255 enable this config option to distinguish them using 1256 phandles in fdtdec_get_alias_seq() function. 1257 1258endmenu 1259 1260source "lib/fwu_updates/Kconfig"