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
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 SHA1 support"
373 This option enables support of hashing using SHA1 algorithm.
374 The hash is calculated in software.
375 The SHA1 algorithm produces a 160-bit (20-byte) hash value
379 bool "Enable SHA256 support"
381 This option enables support of hashing using SHA256 algorithm.
382 The hash is calculated in software.
383 The SHA256 algorithm produces a 256-bit (32-byte) hash value
387 bool "Enable SHA512 support"
389 This option enables support of hashing using SHA512 algorithm.
390 The hash is calculated in software.
391 The SHA512 algorithm produces a 512-bit (64-byte) hash value
395 bool "Enable SHA384 support"
398 This option enables support of hashing using SHA384 algorithm.
399 The hash is calculated in software. This is also selects SHA512,
400 because these implementations share the bulk of the code..
401 The SHA384 algorithm produces a 384-bit (48-byte) hash value
405 bool "Enable hardware acceleration for SHA hash functions"
407 This option enables hardware acceleration for the SHA1 and SHA256
408 hashing algorithms. This affects the 'hash' command and also the
409 hash_lookup_algo() function.
414 bool "Enable SHA1 support in SPL"
417 This option enables support of hashing using SHA1 algorithm.
418 The hash is calculated in software.
419 The SHA1 algorithm produces a 160-bit (20-byte) hash value
423 bool "Enable SHA256 support in SPL"
426 This option enables support of hashing using SHA256 algorithm.
427 The hash is calculated in software.
428 The SHA256 algorithm produces a 256-bit (32-byte) hash value
432 bool "Enable SHA512 support in SPL"
435 This option enables support of hashing using SHA512 algorithm.
436 The hash is calculated in software.
437 The SHA512 algorithm produces a 512-bit (64-byte) hash value
441 bool "Enable SHA384 support in SPL"
445 This option enables support of hashing using SHA384 algorithm.
446 The hash is calculated in software. This is also selects SHA512,
447 because these implementations share the bulk of the code..
448 The SHA384 algorithm produces a 384-bit (48-byte) hash value
451 config SPL_SHA_HW_ACCEL
452 bool "Enable hardware acceleration for SHA hash functions"
453 default y if SHA_HW_ACCEL
455 This option enables hardware acceleration for the SHA1 and SHA256
456 hashing algorithms. This affects the 'hash' command and also the
457 hash_lookup_algo() function.
459 config SPL_SHA_PROG_HW_ACCEL
460 bool "Enable Progressive hashing support using hardware in SPL"
461 depends on SHA_PROG_HW_ACCEL
464 This option enables hardware-acceleration for SHA progressive
466 Data can be streamed in a block at a time and the hashing is
467 performed in hardware.
473 config SHA512_HW_ACCEL
474 bool "Enable hardware acceleration for SHA512"
477 This option enables hardware acceleration for the SHA384 and SHA512
478 hashing algorithms. This affects the 'hash' command and also the
479 hash_lookup_algo() function.
481 config SHA_PROG_HW_ACCEL
482 bool "Enable Progressive hashing support using hardware"
484 This option enables hardware-acceleration for SHA progressive
486 Data can be streamed in a block at a time and the hashing is
487 performed in hardware.
492 bool "Support MD5 algorithm"
494 This option enables MD5 support. MD5 is an algorithm designed
495 in 1991 that produces a 16-byte digest (or checksum) from its input
496 data. It has a number of vulnerabilities which preclude its use in
497 security applications, but it can be useful for providing a quick
498 checksum of a block of data.
501 bool "Support MD5 algorithm in SPL"
503 This option enables MD5 support in SPL. MD5 is an algorithm designed
504 in 1991 that produces a 16-byte digest (or checksum) from its input
505 data. It has a number of vulnerabilities which preclude its use in
506 security applications, but it can be useful for providing a quick
507 checksum of a block of data.
512 Enables CRC32 support in U-Boot. This is normally required.
522 menu "Compression Support"
525 bool "Enable LZ4 decompression support"
527 If this option is set, support for LZ4 compressed images
528 is included. The LZ4 algorithm can run in-place as long as the
529 compressed image is loaded to the end of the output buffer, and
530 trades lower compression ratios for much faster decompression.
532 NOTE: This implements the release version of the LZ4 frame
533 format as generated by default by the 'lz4' command line tool.
534 This is not the same as the outdated, less efficient legacy
535 frame format currently (2015) implemented in the Linux kernel
536 (generated by 'lz4 -l'). The two formats are incompatible.
539 bool "Enable LZMA decompression support"
541 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
542 a dictionary compression algorithm that provides a high compression
543 ratio and fairly fast decompression speed. See also
544 CONFIG_CMD_LZMADEC which provides a decode command.
547 bool "Enable LZO decompression support"
549 This enables support for the LZO compression algorithm.
552 bool "Enable gzip decompression support"
556 This enables support for GZIP compression algorithm.
558 config ZLIB_UNCOMPRESS
559 bool "Enables zlib's uncompress() functionality"
561 This enables an extra zlib functionality: the uncompress() function,
562 which decompresses data from a buffer into another, knowing their
563 sizes. Unlike gunzip(), there is no header parsing.
565 config GZIP_COMPRESSED
570 bool "Enable bzip2 decompression support"
572 This enables support for BZIP2 compression algorithm.
578 This enables ZLIB compression lib.
581 bool "Enable Zstandard decompression support"
584 This enables Zstandard decompression library.
587 bool "Enable LZ4 decompression support in SPL"
589 This enables support for the LZ4 decompression algorithm in SPL. LZ4
590 is a lossless data compression algorithm that is focused on
591 fast compression and decompression speed. It belongs to the LZ77
592 family of byte-oriented compression schemes.
595 bool "Enable LZMA decompression support for SPL build"
597 This enables support for LZMA compression algorithm for SPL boot.
600 bool "Enable LZO decompression support in SPL"
602 This enables support for LZO compression algorithm in the SPL.
605 bool "Enable gzip decompression support for SPL build"
608 This enables support for the GZIP compression algorithm for SPL boot.
613 This enables compression lib for SPL boot.
616 bool "Enable Zstandard decompression support in SPL"
619 This enables Zstandard decompression library in the SPL.
624 bool "Enable function for getting errno-related string message"
626 The function errno_str(int errno), returns a pointer to the errno
627 corresponding text message:
628 - if errno is null or positive number - a pointer to "Success" message
629 - if errno is negative - a pointer to errno related message
632 bool "Enable hexdump"
634 This enables functions for printing dumps of binary data.
637 bool "Enable hexdump in SPL"
638 depends on SPL && HEXDUMP
640 This enables functions for printing dumps of binary data in
646 This enables functions for parsing command-line options.
649 bool "Enable the FDT library"
650 default y if OF_CONTROL
652 This enables the FDT library (libfdt). It provides functions for
653 accessing binary device tree images in memory, such as adding and
654 removing nodes and properties, scanning through the tree and finding
655 particular compatible nodes. The library operates on a flattened
656 version of the device tree.
658 config OF_LIBFDT_ASSUME_MASK
659 hex "Mask of conditions to assume for libfdt"
660 depends on OF_LIBFDT || FIT
663 Use this to change the assumptions made by libfdt about the
664 device tree it is working with. A value of 0 means that no assumptions
665 are made, and libfdt is able to deal with malicious data. A value of
666 0xff means all assumptions are made and any invalid data may cause
667 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
669 config OF_LIBFDT_OVERLAY
670 bool "Enable the FDT library overlay support"
672 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
674 This enables the FDT library (libfdt) overlay support.
677 bool "Enable the FDT library for SPL"
678 default y if SPL_OF_CONTROL
680 This enables the FDT library (libfdt). It provides functions for
681 accessing binary device tree images in memory, such as adding and
682 removing nodes and properties, scanning through the tree and finding
683 particular compatible nodes. The library operates on a flattened
684 version of the device tree.
686 config SPL_OF_LIBFDT_ASSUME_MASK
687 hex "Mask of conditions to assume for libfdt"
688 depends on SPL_OF_LIBFDT || FIT
691 Use this to change the assumptions made by libfdt in SPL about the
692 device tree it is working with. A value of 0 means that no assumptions
693 are made, and libfdt is able to deal with malicious data. A value of
694 0xff means all assumptions are made and any invalid data may cause
695 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
698 bool "Enable the FDT library for TPL"
699 default y if TPL_OF_CONTROL
701 This enables the FDT library (libfdt). It provides functions for
702 accessing binary device tree images in memory, such as adding and
703 removing nodes and properties, scanning through the tree and finding
704 particular compatible nodes. The library operates on a flattened
705 version of the device tree.
707 config TPL_OF_LIBFDT_ASSUME_MASK
708 hex "Mask of conditions to assume for libfdt"
709 depends on TPL_OF_LIBFDT || FIT
712 Use this to change the assumptions made by libfdt in TPL about the
713 device tree it is working with. A value of 0 means that no assumptions
714 are made, and libfdt is able to deal with malicious data. A value of
715 0xff means all assumptions are made and any invalid data may cause
716 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
718 config FDT_FIXUP_PARTITIONS
719 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
721 depends on CMD_MTDPARTS
723 Allow overwriting defined partitions in the device tree blob
724 using partition info defined in the 'mtdparts' environment
728 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
730 config BLOBLIST_TABLES
731 bool "Put tables in a bloblist"
732 depends on X86 && BLOBLIST
734 Normally tables are placed at address 0xf0000 and can be up to 64KB
735 long. With this option, tables are instead placed in the bloblist
736 with a pointer from 0xf0000. The size can then be larger and the
737 tables can be placed high in memory.
739 config GENERATE_SMBIOS_TABLE
740 bool "Generate an SMBIOS (System Management BIOS) table"
742 depends on X86 || EFI_LOADER
744 The System Management BIOS (SMBIOS) specification addresses how
745 motherboard and system vendors present management information about
746 their products in a standard format by extending the BIOS interface
747 on Intel architecture systems.
749 Check http://www.dmtf.org/standards/smbios for details.
751 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
755 bool "enable continued fraction calculation routines"
757 config SPL_LIB_RATIONAL
758 bool "enable continued fraction calculation routines for SPL"
769 Enable asn1 decoder library.
774 Enable fast lookup object identifier registry.
779 A simple parser for SMBIOS data.
781 source lib/efi/Kconfig
782 source lib/efi_loader/Kconfig
783 source lib/optee/Kconfig
786 bool "enable fdtdec test"
795 Support basic elf loading/validating functions.
796 This supports for 32 bit and 64 bit versions.
799 bool "Enable the logical memory blocks library (lmb)"
800 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || NDS32 || \
801 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
803 Support the library logical memory blocks.
805 config LMB_USE_MAX_REGIONS
806 bool "Use a common number of memory and reserved regions in lmb lib"
810 Define the number of supported memory regions in the library logical
812 This feature allow to reduce the lmb library size by using compiler
813 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
815 config LMB_MAX_REGIONS
816 int "Number of memory and reserved regions in lmb lib"
817 depends on LMB && LMB_USE_MAX_REGIONS
820 Define the number of supported regions, memory and reserved, in the
821 library logical memory blocks.
823 config LMB_MEMORY_REGIONS
824 int "Number of memory regions in lmb lib"
825 depends on LMB && !LMB_USE_MAX_REGIONS
828 Define the number of supported memory regions in the library logical
830 The minimal value is CONFIG_NR_DRAM_BANKS.
832 config LMB_RESERVED_REGIONS
833 int "Number of reserved regions in lmb lib"
834 depends on LMB && !LMB_USE_MAX_REGIONS
837 Define the number of supported reserved regions in the library logical
842 config PHANDLE_CHECK_SEQ
843 bool "Enable phandle check while getting sequence number"
845 When there are multiple device tree nodes with same name,
846 enable this config option to distinguish them using
847 phandles in fdtdec_get_alias_seq() function.