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
302 source lib/dhry/Kconfig
304 menu "Security support"
307 bool "Support the AES algorithm"
309 This provides a means to encrypt and decrypt data using the AES
310 (Advanced Encryption Standard). This algorithm uses a symetric key
311 and is widely used as a streaming cipher. Different key lengths are
312 supported by the algorithm but only a 128-bit key is supported at
315 source lib/ecdsa/Kconfig
316 source lib/rsa/Kconfig
317 source lib/crypto/Kconfig
318 source lib/crypt/Kconfig
321 bool "Trusted Platform Module (TPM) Support"
324 This enables support for TPMs which can be used to provide security
325 features for your board. The TPM can be connected via LPC or I2C
326 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
327 command to interactive the TPM. Driver model support is provided
328 for the low-level TPM interface, but only one TPM is supported at
329 a time by the TPM library.
332 bool "Trusted Platform Module (TPM) Support in SPL"
335 This enables support for TPMs which can be used to provide security
336 features for your board. The TPM can be connected via LPC or I2C
337 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
338 command to interactive the TPM. Driver model support is provided
339 for the low-level TPM interface, but only one TPM is supported at
340 a time by the TPM library.
343 bool "Trusted Platform Module (TPM) Support in TPL"
346 This enables support for TPMs which can be used to provide security
347 features for your board. The TPM can be connected via LPC or I2C
348 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
349 command to interactive the TPM. Driver model support is provided
350 for the low-level TPM interface, but only one TPM is supported at
351 a time by the TPM library.
355 menu "Android Verified Boot"
358 bool "Android Verified Boot 2.0 support"
359 depends on ANDROID_BOOT_IMAGE
361 This enables support of Android Verified Boot 2.0 which can be used
362 to assure the end user of the integrity of the software running on a
363 device. Introduces such features as boot chain of trust, rollback
368 menu "Hashing Support"
371 bool "Enable BLAKE2 support"
373 This option enables support of hashing using BLAKE2B algorithm.
374 The hash is calculated in software.
375 The BLAKE2 algorithm produces a hash value (digest) between 1 and
379 bool "Enable SHA1 support"
381 This option enables support of hashing using SHA1 algorithm.
382 The hash is calculated in software.
383 The SHA1 algorithm produces a 160-bit (20-byte) hash value
387 bool "Enable SHA256 support"
389 This option enables support of hashing using SHA256 algorithm.
390 The hash is calculated in software.
391 The SHA256 algorithm produces a 256-bit (32-byte) hash value
395 bool "Enable SHA512 support"
397 This option enables support of hashing using SHA512 algorithm.
398 The hash is calculated in software.
399 The SHA512 algorithm produces a 512-bit (64-byte) hash value
403 bool "Enable SHA384 support"
406 This option enables support of hashing using SHA384 algorithm.
407 The hash is calculated in software. This is also selects SHA512,
408 because these implementations share the bulk of the code..
409 The SHA384 algorithm produces a 384-bit (48-byte) hash value
413 bool "Enable hardware acceleration for SHA hash functions"
415 This option enables hardware acceleration for the SHA1 and SHA256
416 hashing algorithms. This affects the 'hash' command and also the
417 hash_lookup_algo() function.
422 bool "Enable SHA1 support in SPL"
425 This option enables support of hashing using SHA1 algorithm.
426 The hash is calculated in software.
427 The SHA1 algorithm produces a 160-bit (20-byte) hash value
431 bool "Enable SHA256 support in SPL"
434 This option enables support of hashing using SHA256 algorithm.
435 The hash is calculated in software.
436 The SHA256 algorithm produces a 256-bit (32-byte) hash value
440 bool "Enable SHA512 support in SPL"
443 This option enables support of hashing using SHA512 algorithm.
444 The hash is calculated in software.
445 The SHA512 algorithm produces a 512-bit (64-byte) hash value
449 bool "Enable SHA384 support in SPL"
453 This option enables support of hashing using SHA384 algorithm.
454 The hash is calculated in software. This is also selects SHA512,
455 because these implementations share the bulk of the code..
456 The SHA384 algorithm produces a 384-bit (48-byte) hash value
459 config SPL_SHA_HW_ACCEL
460 bool "Enable hardware acceleration for SHA hash functions"
461 default y if SHA_HW_ACCEL
463 This option enables hardware acceleration for the SHA1 and SHA256
464 hashing algorithms. This affects the 'hash' command and also the
465 hash_lookup_algo() function.
467 config SPL_SHA_PROG_HW_ACCEL
468 bool "Enable Progressive hashing support using hardware in SPL"
469 depends on SHA_PROG_HW_ACCEL
472 This option enables hardware-acceleration for SHA progressive
474 Data can be streamed in a block at a time and the hashing is
475 performed in hardware.
481 config SHA512_HW_ACCEL
482 bool "Enable hardware acceleration for SHA512"
485 This option enables hardware acceleration for the SHA384 and SHA512
486 hashing algorithms. This affects the 'hash' command and also the
487 hash_lookup_algo() function.
489 config SHA_PROG_HW_ACCEL
490 bool "Enable Progressive hashing support using hardware"
492 This option enables hardware-acceleration for SHA progressive
494 Data can be streamed in a block at a time and the hashing is
495 performed in hardware.
500 bool "Support MD5 algorithm"
502 This option enables MD5 support. MD5 is an algorithm designed
503 in 1991 that produces a 16-byte digest (or checksum) from its input
504 data. It has a number of vulnerabilities which preclude its use in
505 security applications, but it can be useful for providing a quick
506 checksum of a block of data.
509 bool "Support MD5 algorithm in SPL"
511 This option enables MD5 support in SPL. MD5 is an algorithm designed
512 in 1991 that produces a 16-byte digest (or checksum) from its input
513 data. It has a number of vulnerabilities which preclude its use in
514 security applications, but it can be useful for providing a quick
515 checksum of a block of data.
520 Enables CRC32 support in U-Boot. This is normally required.
530 menu "Compression Support"
533 bool "Enable LZ4 decompression support"
535 If this option is set, support for LZ4 compressed images
536 is included. The LZ4 algorithm can run in-place as long as the
537 compressed image is loaded to the end of the output buffer, and
538 trades lower compression ratios for much faster decompression.
540 NOTE: This implements the release version of the LZ4 frame
541 format as generated by default by the 'lz4' command line tool.
542 This is not the same as the outdated, less efficient legacy
543 frame format currently (2015) implemented in the Linux kernel
544 (generated by 'lz4 -l'). The two formats are incompatible.
547 bool "Enable LZMA decompression support"
549 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
550 a dictionary compression algorithm that provides a high compression
551 ratio and fairly fast decompression speed. See also
552 CONFIG_CMD_LZMADEC which provides a decode command.
555 bool "Enable LZO decompression support"
557 This enables support for the LZO compression algorithm.
560 bool "Enable gzip decompression support"
564 This enables support for GZIP compression algorithm.
566 config ZLIB_UNCOMPRESS
567 bool "Enables zlib's uncompress() functionality"
569 This enables an extra zlib functionality: the uncompress() function,
570 which decompresses data from a buffer into another, knowing their
571 sizes. Unlike gunzip(), there is no header parsing.
573 config GZIP_COMPRESSED
578 bool "Enable bzip2 decompression support"
580 This enables support for BZIP2 compression algorithm.
586 This enables ZLIB compression lib.
589 bool "Enable Zstandard decompression support"
592 This enables Zstandard decompression library.
595 bool "Enable LZ4 decompression support in SPL"
597 This enables support for the LZ4 decompression algorithm in SPL. LZ4
598 is a lossless data compression algorithm that is focused on
599 fast compression and decompression speed. It belongs to the LZ77
600 family of byte-oriented compression schemes.
603 bool "Enable LZMA decompression support for SPL build"
605 This enables support for LZMA compression algorithm for SPL boot.
608 bool "Enable LZO decompression support in SPL"
610 This enables support for LZO compression algorithm in the SPL.
613 bool "Enable gzip decompression support for SPL build"
616 This enables support for the GZIP compression algorithm for SPL boot.
621 This enables compression lib for SPL boot.
624 bool "Enable Zstandard decompression support in SPL"
627 This enables Zstandard decompression library in the SPL.
632 bool "Enable function for getting errno-related string message"
634 The function errno_str(int errno), returns a pointer to the errno
635 corresponding text message:
636 - if errno is null or positive number - a pointer to "Success" message
637 - if errno is negative - a pointer to errno related message
640 bool "Enable hexdump"
642 This enables functions for printing dumps of binary data.
645 bool "Enable hexdump in SPL"
646 depends on SPL && HEXDUMP
648 This enables functions for printing dumps of binary data in
654 This enables functions for parsing command-line options.
657 bool "Enable the FDT library"
658 default y if OF_CONTROL
660 This enables the FDT library (libfdt). It provides functions for
661 accessing binary device tree images in memory, such as adding and
662 removing nodes and properties, scanning through the tree and finding
663 particular compatible nodes. The library operates on a flattened
664 version of the device tree.
666 config OF_LIBFDT_ASSUME_MASK
667 hex "Mask of conditions to assume for libfdt"
668 depends on OF_LIBFDT || FIT
671 Use this to change the assumptions made by libfdt about the
672 device tree it is working with. A value of 0 means that no assumptions
673 are made, and libfdt is able to deal with malicious data. A value of
674 0xff means all assumptions are made and any invalid data may cause
675 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
677 config OF_LIBFDT_OVERLAY
678 bool "Enable the FDT library overlay support"
680 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
682 This enables the FDT library (libfdt) overlay support.
685 bool "Enable the FDT library for SPL"
686 default y if SPL_OF_CONTROL
688 This enables the FDT library (libfdt). It provides functions for
689 accessing binary device tree images in memory, such as adding and
690 removing nodes and properties, scanning through the tree and finding
691 particular compatible nodes. The library operates on a flattened
692 version of the device tree.
694 config SPL_OF_LIBFDT_ASSUME_MASK
695 hex "Mask of conditions to assume for libfdt"
696 depends on SPL_OF_LIBFDT || FIT
699 Use this to change the assumptions made by libfdt in SPL about the
700 device tree it is working with. A value of 0 means that no assumptions
701 are made, and libfdt is able to deal with malicious data. A value of
702 0xff means all assumptions are made and any invalid data may cause
703 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
706 bool "Enable the FDT library for TPL"
707 default y if TPL_OF_CONTROL
709 This enables the FDT library (libfdt). It provides functions for
710 accessing binary device tree images in memory, such as adding and
711 removing nodes and properties, scanning through the tree and finding
712 particular compatible nodes. The library operates on a flattened
713 version of the device tree.
715 config TPL_OF_LIBFDT_ASSUME_MASK
716 hex "Mask of conditions to assume for libfdt"
717 depends on TPL_OF_LIBFDT || FIT
720 Use this to change the assumptions made by libfdt in TPL about the
721 device tree it is working with. A value of 0 means that no assumptions
722 are made, and libfdt is able to deal with malicious data. A value of
723 0xff means all assumptions are made and any invalid data may cause
724 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
726 config FDT_FIXUP_PARTITIONS
727 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
729 depends on CMD_MTDPARTS
731 Allow overwriting defined partitions in the device tree blob
732 using partition info defined in the 'mtdparts' environment
736 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
738 config BLOBLIST_TABLES
739 bool "Put tables in a bloblist"
740 depends on X86 && BLOBLIST
742 Normally tables are placed at address 0xf0000 and can be up to 64KB
743 long. With this option, tables are instead placed in the bloblist
744 with a pointer from 0xf0000. The size can then be larger and the
745 tables can be placed high in memory.
747 config GENERATE_SMBIOS_TABLE
748 bool "Generate an SMBIOS (System Management BIOS) table"
750 depends on X86 || EFI_LOADER
752 The System Management BIOS (SMBIOS) specification addresses how
753 motherboard and system vendors present management information about
754 their products in a standard format by extending the BIOS interface
755 on Intel architecture systems.
757 Check http://www.dmtf.org/standards/smbios for details.
759 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
763 bool "enable continued fraction calculation routines"
765 config SPL_LIB_RATIONAL
766 bool "enable continued fraction calculation routines for SPL"
777 Enable asn1 decoder library.
782 Enable fast lookup object identifier registry.
787 A simple parser for SMBIOS data.
789 source lib/efi/Kconfig
790 source lib/efi_loader/Kconfig
791 source lib/optee/Kconfig
794 bool "enable fdtdec test"
803 Support basic elf loading/validating functions.
804 This supports for 32 bit and 64 bit versions.
807 bool "Enable the logical memory blocks library (lmb)"
808 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || NDS32 || \
809 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
811 Support the library logical memory blocks.
813 config LMB_USE_MAX_REGIONS
814 bool "Use a common number of memory and reserved regions in lmb lib"
818 Define the number of supported memory regions in the library logical
820 This feature allow to reduce the lmb library size by using compiler
821 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
823 config LMB_MAX_REGIONS
824 int "Number of memory and reserved regions in lmb lib"
825 depends on LMB && LMB_USE_MAX_REGIONS
828 Define the number of supported regions, memory and reserved, in the
829 library logical memory blocks.
831 config LMB_MEMORY_REGIONS
832 int "Number of memory regions in lmb lib"
833 depends on LMB && !LMB_USE_MAX_REGIONS
836 Define the number of supported memory regions in the library logical
838 The minimal value is CONFIG_NR_DRAM_BANKS.
840 config LMB_RESERVED_REGIONS
841 int "Number of reserved regions in lmb lib"
842 depends on LMB && !LMB_USE_MAX_REGIONS
845 Define the number of supported reserved regions in the library logical
848 config PHANDLE_CHECK_SEQ
849 bool "Enable phandle check while getting sequence number"
851 When there are multiple device tree nodes with same name,
852 enable this config option to distinguish them using
853 phandles in fdtdec_get_alias_seq() function.