1 menu "Library routines"
4 bool "Enable support for non-identity virtual-physical mappings"
6 Enables helper code for implementing non-identity virtual-physical
7 memory mappings for 32bit CPUs.
9 This library only works in the post-relocation phase.
11 config SYS_NUM_ADDR_MAP
12 int "Size of the address-map table"
16 Sets the number of entries in the virtual-physical mapping table.
19 bool "Access to physical memory region (> 4G)"
21 Some basic support is provided for operations on memory not
22 normally accessible to 32-bit U-Boot - e.g. some architectures
23 support access to more than 4G of memory on 32-bit
24 machines using physical address extension or similar.
25 Enable this to access this basic support, which only supports clearing
29 bool "Enable Software based BCH ECC"
31 Enables software based BCH ECC algorithm present in lib/bch.c
32 This is used by SoC platforms which do not have built-in ELM
33 hardware engine required for BCH ECC correction.
36 bool "Allow access to binman information in the device tree"
37 depends on BINMAN && DM && OF_CONTROL
38 default y if OF_SEPARATE || OF_EMBED
40 This enables U-Boot to access information about binman entries,
41 stored in the device tree in a binman node. Typical uses are to
42 locate entries in the firmware image. See binman.h for the available
45 config CC_OPTIMIZE_LIBS_FOR_SPEED
46 bool "Optimize libraries for speed"
48 Enabling this option will pass "-O2" to gcc when compiling
49 under "lib" directory.
55 default y if UT_UNICODE || EFI_LOADER || UFS || EFI_APP
57 Enables support for various conversions between different
58 character sets, such as between unicode representations and
59 different 'code pages'.
61 config DYNAMIC_CRC_TABLE
62 bool "Enable Dynamic tables for CRC"
64 Enable this option to calculate entries for CRC tables at runtime.
65 This can be helpful when reducing the size of the build image
67 config HAVE_ARCH_IOMAP
70 Enable this option if architecture provides io{read,write}{8,16,32}
71 I/O accessor functions.
73 config HAVE_PRIVATE_LIBGCC
86 select SPL_STRTO if !SPL_USE_TINY_PRINTF
91 select TPL_STRTO if !TPL_USE_TINY_PRINTF
119 config IMAGE_SPARSE_FILLBUF_SIZE
120 hex "Android sparse image CHUNK_TYPE_FILL buffer size"
122 depends on IMAGE_SPARSE
124 Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
127 config USE_PRIVATE_LIBGCC
128 bool "Use private libgcc"
129 depends on HAVE_PRIVATE_LIBGCC
130 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
132 This option allows you to use the built-in libgcc implementation
133 of U-Boot instead of the one provided by the compiler.
140 The frequency of the timer returned by get_timer().
141 get_timer() must operate in milliseconds and this option must be
144 config SPL_USE_TINY_PRINTF
145 bool "Enable tiny printf() version in SPL"
149 This option enables a tiny, stripped down printf version.
150 This should only be used in space limited environments,
151 like SPL versions with hard memory limits. This version
152 reduces the code size by about 2.5KiB on armv7.
154 The supported format specifiers are %c, %s, %u/%d and %x.
156 config TPL_USE_TINY_PRINTF
157 bool "Enable tiny printf() version in TPL"
159 default y if SPL_USE_TINY_PRINTF
161 This option enables a tiny, stripped down printf version.
162 This should only be used in space limited environments,
163 like SPL versions with hard memory limits. This version
164 reduces the code size by about 2.5KiB on armv7.
166 The supported format specifiers are %c, %s, %u/%d and %x.
169 bool "Do not reset the system on fatal error"
171 Define this option to stop the system in case of a fatal error,
172 so that you have to reset it manually. This is probably NOT a good
173 idea for an embedded system where you want the system to reboot
174 automatically as fast as possible, but it may be useful during
175 development since you can try to debug the conditions that lead to
179 bool "Enable regular expression support"
182 If this variable is defined, U-Boot is linked against the
183 SLRE (Super Light Regular Expression) library, which adds
184 regex support to some commands, for example "env grep" and
188 prompt "Pseudo-random library support type"
189 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
190 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
193 Select the library to provide pseudo-random number generator
194 functions. LIB_HW_RAND supports certain hardware engines that
195 provide this functionality. If in doubt, select LIB_RAND.
198 bool "Pseudo-random library support"
201 bool "HW Engine for random library support"
205 config SPL_TINY_MEMSET
206 bool "Use a very small memset() in SPL"
208 The faster memset() is the arch-specific one (if available) enabled
209 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
210 better performance by writing a word at a time. But in very
211 size-constrained environments even this may be too big. Enable this
212 option to reduce code size slightly at the cost of some speed.
214 config TPL_TINY_MEMSET
215 bool "Use a very small memset() in TPL"
217 The faster memset() is the arch-specific one (if available) enabled
218 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
219 better performance by writing a word at a time. But in very
220 size-constrained environments even this may be too big. Enable this
221 option to reduce code size slightly at the cost of some speed.
227 bool "Bit reverse library from Linux"
230 bool "Support for tracing of function calls and timing"
234 Enables function tracing within U-Boot. This allows recording of call
235 traces including timing information. The command can write data to
236 memory for exporting for analysis (e.g. using bootchart).
237 See doc/README.trace for full details.
239 config TRACE_BUFFER_SIZE
240 hex "Size of trace buffer in U-Boot"
244 Sets the size of the trace buffer in U-Boot. This is allocated from
245 memory during relocation. If this buffer is too small, the trace
246 history will be truncated, with later records omitted.
248 If early trace is enabled (i.e. before relocation), this buffer must
249 be large enough to include all the data from the early trace buffer as
250 well, since this is copied over to the main buffer during relocation.
252 A trace record is emitted for each function call and each record is
253 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
254 the size is too small then 'trace stats' will show a message saying
255 how many records were dropped due to buffer overflow.
257 config TRACE_CALL_DEPTH_LIMIT
258 int "Trace call depth limit"
262 Sets the maximum call depth up to which function calls are recorded.
265 bool "Enable tracing before relocation"
268 Sometimes it is helpful to trace execution of U-Boot before
269 relocation. This is possible by using a arch-specific, fixed buffer
270 position in memory. Enable this option to start tracing as early as
271 possible after U-Boot starts.
273 config TRACE_EARLY_SIZE
274 hex "Size of early trace buffer in U-Boot"
275 depends on TRACE_EARLY
278 Sets the size of the early trace buffer in bytes. This is used to hold
279 tracing information before relocation.
281 config TRACE_EARLY_CALL_DEPTH_LIMIT
282 int "Early trace call depth limit"
283 depends on TRACE_EARLY
286 Sets the maximum call depth up to which function calls are recorded
287 during early tracing.
289 config TRACE_EARLY_ADDR
290 hex "Address of early trace buffer in U-Boot"
291 depends on TRACE_EARLY
294 Sets the address of the early trace buffer in U-Boot. This memory
295 must be accessible before relocation.
297 A trace record is emitted for each function call and each record is
298 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
299 the size is too small then the message which says the amount of early
300 data being coped will the the same as the
303 bool "Enable circular buffer support"
305 source lib/dhry/Kconfig
307 menu "Security support"
310 bool "Support the AES algorithm"
312 This provides a means to encrypt and decrypt data using the AES
313 (Advanced Encryption Standard). This algorithm uses a symetric key
314 and is widely used as a streaming cipher. Different key lengths are
315 supported by the algorithm but only a 128-bit key is supported at
318 source lib/ecdsa/Kconfig
319 source lib/rsa/Kconfig
320 source lib/crypto/Kconfig
321 source lib/crypt/Kconfig
324 bool "Trusted Platform Module (TPM) Support"
327 This enables support for TPMs which can be used to provide security
328 features for your board. The TPM can be connected via LPC or I2C
329 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
330 command to interactive the TPM. Driver model support is provided
331 for the low-level TPM interface, but only one TPM is supported at
332 a time by the TPM library.
335 bool "Trusted Platform Module (TPM) Support in SPL"
338 This enables support for TPMs which can be used to provide security
339 features for your board. The TPM can be connected via LPC or I2C
340 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
341 command to interactive the TPM. Driver model support is provided
342 for the low-level TPM interface, but only one TPM is supported at
343 a time by the TPM library.
346 bool "Trusted Platform Module (TPM) Support in TPL"
349 This enables support for TPMs which can be used to provide security
350 features for your board. The TPM can be connected via LPC or I2C
351 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
352 command to interactive the TPM. Driver model support is provided
353 for the low-level TPM interface, but only one TPM is supported at
354 a time by the TPM library.
358 menu "Android Verified Boot"
361 bool "Android Verified Boot 2.0 support"
362 depends on ANDROID_BOOT_IMAGE
364 This enables support of Android Verified Boot 2.0 which can be used
365 to assure the end user of the integrity of the software running on a
366 device. Introduces such features as boot chain of trust, rollback
371 menu "Hashing Support"
374 bool "Enable BLAKE2 support"
376 This option enables support of hashing using BLAKE2B algorithm.
377 The hash is calculated in software.
378 The BLAKE2 algorithm produces a hash value (digest) between 1 and
382 bool "Enable SHA1 support"
384 This option enables support of hashing using SHA1 algorithm.
385 The hash is calculated in software.
386 The SHA1 algorithm produces a 160-bit (20-byte) hash value
390 bool "Enable SHA256 support"
392 This option enables support of hashing using SHA256 algorithm.
393 The hash is calculated in software.
394 The SHA256 algorithm produces a 256-bit (32-byte) hash value
398 bool "Enable SHA512 support"
400 This option enables support of hashing using SHA512 algorithm.
401 The hash is calculated in software.
402 The SHA512 algorithm produces a 512-bit (64-byte) hash value
406 bool "Enable SHA384 support"
409 This option enables support of hashing using SHA384 algorithm.
410 The hash is calculated in software. This is also selects SHA512,
411 because these implementations share the bulk of the code..
412 The SHA384 algorithm produces a 384-bit (48-byte) hash value
416 bool "Enable hardware acceleration for SHA hash functions"
418 This option enables hardware acceleration for the SHA1 and SHA256
419 hashing algorithms. This affects the 'hash' command and also the
420 hash_lookup_algo() function.
425 bool "Enable SHA1 support in SPL"
428 This option enables support of hashing using SHA1 algorithm.
429 The hash is calculated in software.
430 The SHA1 algorithm produces a 160-bit (20-byte) hash value
434 bool "Enable SHA256 support in SPL"
437 This option enables support of hashing using SHA256 algorithm.
438 The hash is calculated in software.
439 The SHA256 algorithm produces a 256-bit (32-byte) hash value
443 bool "Enable SHA512 support in SPL"
446 This option enables support of hashing using SHA512 algorithm.
447 The hash is calculated in software.
448 The SHA512 algorithm produces a 512-bit (64-byte) hash value
452 bool "Enable SHA384 support in SPL"
456 This option enables support of hashing using SHA384 algorithm.
457 The hash is calculated in software. This is also selects SHA512,
458 because these implementations share the bulk of the code..
459 The SHA384 algorithm produces a 384-bit (48-byte) hash value
462 config SPL_SHA_HW_ACCEL
463 bool "Enable hardware acceleration for SHA hash functions"
464 default y if SHA_HW_ACCEL
466 This option enables hardware acceleration for the SHA1 and SHA256
467 hashing algorithms. This affects the 'hash' command and also the
468 hash_lookup_algo() function.
470 config SPL_SHA_PROG_HW_ACCEL
471 bool "Enable Progressive hashing support using hardware in SPL"
472 depends on SHA_PROG_HW_ACCEL
475 This option enables hardware-acceleration for SHA progressive
477 Data can be streamed in a block at a time and the hashing is
478 performed in hardware.
484 config SHA512_HW_ACCEL
485 bool "Enable hardware acceleration for SHA512"
488 This option enables hardware acceleration for the SHA384 and SHA512
489 hashing algorithms. This affects the 'hash' command and also the
490 hash_lookup_algo() function.
492 config SHA_PROG_HW_ACCEL
493 bool "Enable Progressive hashing support using hardware"
495 This option enables hardware-acceleration for SHA progressive
497 Data can be streamed in a block at a time and the hashing is
498 performed in hardware.
503 bool "Support MD5 algorithm"
505 This option enables MD5 support. MD5 is an algorithm designed
506 in 1991 that produces a 16-byte digest (or checksum) from its input
507 data. It has a number of vulnerabilities which preclude its use in
508 security applications, but it can be useful for providing a quick
509 checksum of a block of data.
512 bool "Support MD5 algorithm in SPL"
514 This option enables MD5 support in SPL. MD5 is an algorithm designed
515 in 1991 that produces a 16-byte digest (or checksum) from its input
516 data. It has a number of vulnerabilities which preclude its use in
517 security applications, but it can be useful for providing a quick
518 checksum of a block of data.
523 Enables CRC32 support in U-Boot. This is normally required.
533 menu "Compression Support"
536 bool "Enable LZ4 decompression support"
538 If this option is set, support for LZ4 compressed images
539 is included. The LZ4 algorithm can run in-place as long as the
540 compressed image is loaded to the end of the output buffer, and
541 trades lower compression ratios for much faster decompression.
543 NOTE: This implements the release version of the LZ4 frame
544 format as generated by default by the 'lz4' command line tool.
545 This is not the same as the outdated, less efficient legacy
546 frame format currently (2015) implemented in the Linux kernel
547 (generated by 'lz4 -l'). The two formats are incompatible.
550 bool "Enable LZMA decompression support"
552 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
553 a dictionary compression algorithm that provides a high compression
554 ratio and fairly fast decompression speed. See also
555 CONFIG_CMD_LZMADEC which provides a decode command.
558 bool "Enable LZO decompression support"
560 This enables support for the LZO compression algorithm.
563 bool "Enable gzip decompression support"
567 This enables support for GZIP compression algorithm.
569 config ZLIB_UNCOMPRESS
570 bool "Enables zlib's uncompress() functionality"
572 This enables an extra zlib functionality: the uncompress() function,
573 which decompresses data from a buffer into another, knowing their
574 sizes. Unlike gunzip(), there is no header parsing.
576 config GZIP_COMPRESSED
581 bool "Enable bzip2 decompression support"
583 This enables support for BZIP2 compression algorithm.
589 This enables ZLIB compression lib.
592 bool "Enable Zstandard decompression support"
595 This enables Zstandard decompression library.
598 bool "Enable LZ4 decompression support in SPL"
600 This enables support for the LZ4 decompression algorithm in SPL. LZ4
601 is a lossless data compression algorithm that is focused on
602 fast compression and decompression speed. It belongs to the LZ77
603 family of byte-oriented compression schemes.
606 bool "Enable LZMA decompression support for SPL build"
608 This enables support for LZMA compression algorithm for SPL boot.
611 bool "Enable LZO decompression support in SPL"
613 This enables support for LZO compression algorithm in the SPL.
616 bool "Enable gzip decompression support for SPL build"
619 This enables support for the GZIP compression algorithm for SPL boot.
624 This enables compression lib for SPL boot.
627 bool "Enable Zstandard decompression support in SPL"
630 This enables Zstandard decompression library in the SPL.
635 bool "Enable function for getting errno-related string message"
637 The function errno_str(int errno), returns a pointer to the errno
638 corresponding text message:
639 - if errno is null or positive number - a pointer to "Success" message
640 - if errno is negative - a pointer to errno related message
643 bool "Enable hexdump"
645 This enables functions for printing dumps of binary data.
648 bool "Enable hexdump in SPL"
649 depends on SPL && HEXDUMP
651 This enables functions for printing dumps of binary data in
657 This enables functions for parsing command-line options.
660 bool "Enable the FDT library"
661 default y if OF_CONTROL
663 This enables the FDT library (libfdt). It provides functions for
664 accessing binary device tree images in memory, such as adding and
665 removing nodes and properties, scanning through the tree and finding
666 particular compatible nodes. The library operates on a flattened
667 version of the device tree.
669 config OF_LIBFDT_ASSUME_MASK
670 hex "Mask of conditions to assume for libfdt"
671 depends on OF_LIBFDT || FIT
674 Use this to change the assumptions made by libfdt about the
675 device tree it is working with. A value of 0 means that no assumptions
676 are made, and libfdt is able to deal with malicious data. A value of
677 0xff means all assumptions are made and any invalid data may cause
678 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
680 config OF_LIBFDT_OVERLAY
681 bool "Enable the FDT library overlay support"
683 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
685 This enables the FDT library (libfdt) overlay support.
688 bool "Enable the FDT library for SPL"
689 default y if SPL_OF_CONTROL
691 This enables the FDT library (libfdt). It provides functions for
692 accessing binary device tree images in memory, such as adding and
693 removing nodes and properties, scanning through the tree and finding
694 particular compatible nodes. The library operates on a flattened
695 version of the device tree.
697 config SPL_OF_LIBFDT_ASSUME_MASK
698 hex "Mask of conditions to assume for libfdt"
699 depends on SPL_OF_LIBFDT || FIT
702 Use this to change the assumptions made by libfdt in SPL about the
703 device tree it is working with. A value of 0 means that no assumptions
704 are made, and libfdt is able to deal with malicious data. A value of
705 0xff means all assumptions are made and any invalid data may cause
706 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
709 bool "Enable the FDT library for TPL"
710 default y if TPL_OF_CONTROL
712 This enables the FDT library (libfdt). It provides functions for
713 accessing binary device tree images in memory, such as adding and
714 removing nodes and properties, scanning through the tree and finding
715 particular compatible nodes. The library operates on a flattened
716 version of the device tree.
718 config TPL_OF_LIBFDT_ASSUME_MASK
719 hex "Mask of conditions to assume for libfdt"
720 depends on TPL_OF_LIBFDT || FIT
723 Use this to change the assumptions made by libfdt in TPL about the
724 device tree it is working with. A value of 0 means that no assumptions
725 are made, and libfdt is able to deal with malicious data. A value of
726 0xff means all assumptions are made and any invalid data may cause
727 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
729 config FDT_FIXUP_PARTITIONS
730 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
732 depends on CMD_MTDPARTS
734 Allow overwriting defined partitions in the device tree blob
735 using partition info defined in the 'mtdparts' environment
739 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
741 config BLOBLIST_TABLES
742 bool "Put tables in a bloblist"
743 depends on X86 && BLOBLIST
745 Normally tables are placed at address 0xf0000 and can be up to 64KB
746 long. With this option, tables are instead placed in the bloblist
747 with a pointer from 0xf0000. The size can then be larger and the
748 tables can be placed high in memory.
750 config GENERATE_SMBIOS_TABLE
751 bool "Generate an SMBIOS (System Management BIOS) table"
753 depends on X86 || EFI_LOADER
755 The System Management BIOS (SMBIOS) specification addresses how
756 motherboard and system vendors present management information about
757 their products in a standard format by extending the BIOS interface
758 on Intel architecture systems.
760 Check http://www.dmtf.org/standards/smbios for details.
762 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
766 bool "enable continued fraction calculation routines"
768 config SPL_LIB_RATIONAL
769 bool "enable continued fraction calculation routines for SPL"
780 Enable asn1 decoder library.
785 Enable fast lookup object identifier registry.
790 A simple parser for SMBIOS data.
792 source lib/efi/Kconfig
793 source lib/efi_loader/Kconfig
794 source lib/optee/Kconfig
797 bool "enable fdtdec test"
806 Support basic elf loading/validating functions.
807 This supports for 32 bit and 64 bit versions.
810 bool "Enable the logical memory blocks library (lmb)"
811 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || NDS32 || \
812 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
814 Support the library logical memory blocks.
816 config LMB_USE_MAX_REGIONS
817 bool "Use a common number of memory and reserved regions in lmb lib"
821 Define the number of supported memory regions in the library logical
823 This feature allow to reduce the lmb library size by using compiler
824 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
826 config LMB_MAX_REGIONS
827 int "Number of memory and reserved regions in lmb lib"
828 depends on LMB && LMB_USE_MAX_REGIONS
831 Define the number of supported regions, memory and reserved, in the
832 library logical memory blocks.
834 config LMB_MEMORY_REGIONS
835 int "Number of memory regions in lmb lib"
836 depends on LMB && !LMB_USE_MAX_REGIONS
839 Define the number of supported memory regions in the library logical
841 The minimal value is CONFIG_NR_DRAM_BANKS.
843 config LMB_RESERVED_REGIONS
844 int "Number of reserved regions in lmb lib"
845 depends on LMB && !LMB_USE_MAX_REGIONS
848 Define the number of supported reserved regions in the library logical
851 config PHANDLE_CHECK_SEQ
852 bool "Enable phandle check while getting sequence number"
854 When there are multiple device tree nodes with same name,
855 enable this config option to distinguish them using
856 phandles in fdtdec_get_alias_seq() function.