Merge branch '2021.01-rc' of https://github.com/lftan/u-boot
[pandora-u-boot.git] / lib / Kconfig
1 menu "Library routines"
2
3 config 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 config SYS_NUM_ADDR_MAP
10         int "Size of the address-map table"
11         depends on ADDR_MAP
12         default 16
13         help
14           Sets the number of entries in the virtual-physical mapping table.
15
16 config BCH
17         bool "Enable Software based BCH ECC"
18         help
19           Enables software based BCH ECC algorithm present in lib/bch.c
20           This is used by SoC platforms which do not have built-in ELM
21           hardware engine required for BCH ECC correction.
22
23 config BINMAN_FDT
24         bool "Allow access to binman information in the device tree"
25         depends on BINMAN && OF_CONTROL
26         default y
27         help
28           This enables U-Boot to access information about binman entries,
29           stored in the device tree in a binman node. Typical uses are to
30           locate entries in the firmware image. See binman.h for the available
31           functionality.
32
33 config CC_OPTIMIZE_LIBS_FOR_SPEED
34         bool "Optimize libraries for speed"
35         help
36           Enabling this option will pass "-O2" to gcc when compiling
37           under "lib" directory.
38
39           If unsure, say N.
40
41 config DYNAMIC_CRC_TABLE
42         bool "Enable Dynamic tables for CRC"
43         help
44           Enable this option to calculate entries for CRC tables at runtime.
45           This can be helpful when reducing the size of the build image
46
47 config HAVE_ARCH_IOMAP
48         bool
49         help
50           Enable this option if architecture provides io{read,write}{8,16,32}
51           I/O accessor functions.
52
53 config HAVE_PRIVATE_LIBGCC
54         bool
55
56 config LIB_UUID
57         bool
58
59 config PRINTF
60         bool
61         default y
62
63 config SPL_PRINTF
64         bool
65         select SPL_SPRINTF
66         select SPL_STRTO if !SPL_USE_TINY_PRINTF
67
68 config TPL_PRINTF
69         bool
70         select TPL_SPRINTF
71         select TPL_STRTO if !TPL_USE_TINY_PRINTF
72
73 config SPRINTF
74         bool
75         default y
76
77 config SPL_SPRINTF
78         bool
79
80 config TPL_SPRINTF
81         bool
82
83 config SSCANF
84         bool
85         default n
86
87 config STRTO
88         bool
89         default y
90
91 config SPL_STRTO
92         bool
93
94 config TPL_STRTO
95         bool
96
97 config IMAGE_SPARSE
98         bool
99
100 config IMAGE_SPARSE_FILLBUF_SIZE
101         hex "Android sparse image CHUNK_TYPE_FILL buffer size"
102         default 0x80000
103         depends on IMAGE_SPARSE
104         help
105           Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
106           chunks.
107
108 config USE_PRIVATE_LIBGCC
109         bool "Use private libgcc"
110         depends on HAVE_PRIVATE_LIBGCC
111         default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
112         help
113           This option allows you to use the built-in libgcc implementation
114           of U-Boot instead of the one provided by the compiler.
115           If unsure, say N.
116
117 config SYS_HZ
118         int
119         default 1000
120         help
121           The frequency of the timer returned by get_timer().
122           get_timer() must operate in milliseconds and this option must be
123           set to 1000.
124
125 config SPL_USE_TINY_PRINTF
126         bool "Enable tiny printf() version in SPL"
127         depends on SPL
128         default y
129         help
130           This option enables a tiny, stripped down printf version.
131           This should only be used in space limited environments,
132           like SPL versions with hard memory limits. This version
133           reduces the code size by about 2.5KiB on armv7.
134
135           The supported format specifiers are %c, %s, %u/%d and %x.
136
137 config TPL_USE_TINY_PRINTF
138         bool "Enable tiny printf() version in TPL"
139         depends on TPL
140         default y if SPL_USE_TINY_PRINTF
141         help
142           This option enables a tiny, stripped down printf version.
143           This should only be used in space limited environments,
144           like SPL versions with hard memory limits. This version
145           reduces the code size by about 2.5KiB on armv7.
146
147           The supported format specifiers are %c, %s, %u/%d and %x.
148
149 config PANIC_HANG
150         bool "Do not reset the system on fatal error"
151         help
152           Define this option to stop the system in case of a fatal error,
153           so that you have to reset it manually. This is probably NOT a good
154           idea for an embedded system where you want the system to reboot
155           automatically as fast as possible, but it may be useful during
156           development since you can try to debug the conditions that lead to
157           the situation.
158
159 config REGEX
160         bool "Enable regular expression support"
161         default y if NET
162         help
163           If this variable is defined, U-Boot is linked against the
164           SLRE (Super Light Regular Expression) library, which adds
165           regex support to some commands, for example "env grep" and
166           "setexpr".
167
168 choice
169         prompt "Pseudo-random library support type"
170         depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
171                    RNG_SANDBOX || UT_LIB && AES
172         default LIB_RAND
173         help
174           Select the library to provide pseudo-random number generator
175           functions.  LIB_HW_RAND supports certain hardware engines that
176           provide this functionality.  If in doubt, select LIB_RAND.
177
178 config LIB_RAND
179         bool "Pseudo-random library support"
180
181 config LIB_HW_RAND
182         bool "HW Engine for random library support"
183
184 endchoice
185
186 config SPL_TINY_MEMSET
187         bool "Use a very small memset() in SPL"
188         help
189           The faster memset() is the arch-specific one (if available) enabled
190           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
191           better performance by writing a word at a time. But in very
192           size-constrained environments even this may be too big. Enable this
193           option to reduce code size slightly at the cost of some speed.
194
195 config TPL_TINY_MEMSET
196         bool "Use a very small memset() in TPL"
197         help
198           The faster memset() is the arch-specific one (if available) enabled
199           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
200           better performance by writing a word at a time. But in very
201           size-constrained environments even this may be too big. Enable this
202           option to reduce code size slightly at the cost of some speed.
203
204 config RBTREE
205         bool
206
207 config BITREVERSE
208         bool "Bit reverse library from Linux"
209
210 config TRACE
211         bool "Support for tracing of function calls and timing"
212         imply CMD_TRACE
213         help
214           Enables function tracing within U-Boot. This allows recording of call
215           traces including timing information. The command can write data to
216           memory for exporting for analysis (e.g. using bootchart).
217           See doc/README.trace for full details.
218
219 config TRACE_BUFFER_SIZE
220         hex "Size of trace buffer in U-Boot"
221         depends on TRACE
222         default 0x01000000
223         help
224           Sets the size of the trace buffer in U-Boot. This is allocated from
225           memory during relocation. If this buffer is too small, the trace
226           history will be truncated, with later records omitted.
227
228           If early trace is enabled (i.e. before relocation), this buffer must
229           be large enough to include all the data from the early trace buffer as
230           well, since this is copied over to the main buffer during relocation.
231
232           A trace record is emitted for each function call and each record is
233           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
234           the size is too small then 'trace stats' will show a message saying
235           how many records were dropped due to buffer overflow.
236
237 config TRACE_CALL_DEPTH_LIMIT
238         int "Trace call depth limit"
239         depends on TRACE
240         default 15
241         help
242           Sets the maximum call depth up to which function calls are recorded.
243
244 config TRACE_EARLY
245         bool "Enable tracing before relocation"
246         depends on TRACE
247         help
248           Sometimes it is helpful to trace execution of U-Boot before
249           relocation. This is possible by using a arch-specific, fixed buffer
250           position in memory. Enable this option to start tracing as early as
251           possible after U-Boot starts.
252
253 config TRACE_EARLY_SIZE
254         hex "Size of early trace buffer in U-Boot"
255         depends on TRACE_EARLY
256         default 0x00100000
257         help
258           Sets the size of the early trace buffer in bytes. This is used to hold
259           tracing information before relocation.
260
261 config TRACE_EARLY_CALL_DEPTH_LIMIT
262         int "Early trace call depth limit"
263         depends on TRACE_EARLY
264         default 200
265         help
266           Sets the maximum call depth up to which function calls are recorded
267           during early tracing.
268
269 config TRACE_EARLY_ADDR
270         hex "Address of early trace buffer in U-Boot"
271         depends on TRACE_EARLY
272         default 0x00100000
273         help
274           Sets the address of the early trace buffer in U-Boot. This memory
275           must be accessible before relocation.
276
277           A trace record is emitted for each function call and each record is
278           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
279           the size is too small then the message which says the amount of early
280           data being coped will the the same as the
281
282 source lib/dhry/Kconfig
283
284 menu "Security support"
285
286 config AES
287         bool "Support the AES algorithm"
288         help
289           This provides a means to encrypt and decrypt data using the AES
290           (Advanced Encryption Standard). This algorithm uses a symetric key
291           and is widely used as a streaming cipher. Different key lengths are
292           supported by the algorithm but only a 128-bit key is supported at
293           present.
294
295 source lib/rsa/Kconfig
296 source lib/crypto/Kconfig
297
298 config TPM
299         bool "Trusted Platform Module (TPM) Support"
300         depends on DM
301         help
302           This enables support for TPMs which can be used to provide security
303           features for your board. The TPM can be connected via LPC or I2C
304           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
305           command to interactive the TPM. Driver model support is provided
306           for the low-level TPM interface, but only one TPM is supported at
307           a time by the TPM library.
308
309 config SPL_TPM
310         bool "Trusted Platform Module (TPM) Support in SPL"
311         depends on SPL_DM
312         help
313           This enables support for TPMs which can be used to provide security
314           features for your board. The TPM can be connected via LPC or I2C
315           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
316           command to interactive the TPM. Driver model support is provided
317           for the low-level TPM interface, but only one TPM is supported at
318           a time by the TPM library.
319
320 config TPL_TPM
321         bool "Trusted Platform Module (TPM) Support in TPL"
322         depends on TPL_DM
323         help
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.
330
331 endmenu
332
333 menu "Android Verified Boot"
334
335 config LIBAVB
336         bool "Android Verified Boot 2.0 support"
337         depends on ANDROID_BOOT_IMAGE
338         default n
339         help
340           This enables support of Android Verified Boot 2.0 which can be used
341           to assure the end user of the integrity of the software running on a
342           device. Introduces such features as boot chain of trust, rollback
343           protection etc.
344
345 endmenu
346
347 menu "Hashing Support"
348
349 config SHA1
350         bool "Enable SHA1 support"
351         help
352           This option enables support of hashing using SHA1 algorithm.
353           The hash is calculated in software.
354           The SHA1 algorithm produces a 160-bit (20-byte) hash value
355           (digest).
356
357 config SHA256
358         bool "Enable SHA256 support"
359         help
360           This option enables support of hashing using SHA256 algorithm.
361           The hash is calculated in software.
362           The SHA256 algorithm produces a 256-bit (32-byte) hash value
363           (digest).
364
365 config SHA512_ALGO
366         bool "Enable SHA512 algorithm"
367         help
368           This option enables support of internal SHA512 algorithm.
369
370 config SHA512
371         bool "Enable SHA512 support"
372         depends on SHA512_ALGO
373         help
374           This option enables support of hashing using SHA512 algorithm.
375           The hash is calculated in software.
376           The SHA512 algorithm produces a 512-bit (64-byte) hash value
377           (digest).
378
379 config SHA384
380         bool "Enable SHA384 support"
381         depends on SHA512_ALGO
382         help
383           This option enables support of hashing using SHA384 algorithm.
384           The hash is calculated in software.
385           The SHA384 algorithm produces a 384-bit (48-byte) hash value
386           (digest).
387
388 config SHA_HW_ACCEL
389         bool "Enable hashing using hardware"
390         help
391           This option enables hardware acceleration
392           for SHA1/SHA256 hashing.
393           This affects the 'hash' command and also the
394           hash_lookup_algo() function.
395
396 config SHA_PROG_HW_ACCEL
397         bool "Enable Progressive hashing support using hardware"
398         depends on SHA_HW_ACCEL
399         help
400           This option enables hardware-acceleration for
401           SHA1/SHA256 progressive hashing.
402           Data can be streamed in a block at a time and the hashing
403           is performed in hardware.
404
405 config MD5
406         bool "Support MD5 algorithm"
407         help
408           This option enables MD5 support. MD5 is an algorithm designed
409           in 1991 that produces a 16-byte digest (or checksum) from its input
410           data. It has a number of vulnerabilities which preclude its use in
411           security applications, but it can be useful for providing a quick
412           checksum of a block of data.
413
414 config SPL_MD5
415         bool "Support MD5 algorithm in SPL"
416         help
417           This option enables MD5 support in SPL. MD5 is an algorithm designed
418           in 1991 that produces a 16-byte digest (or checksum) from its input
419           data. It has a number of vulnerabilities which preclude its use in
420           security applications, but it can be useful for providing a quick
421           checksum of a block of data.
422
423 config CRC32C
424         bool
425
426 config XXHASH
427         bool
428
429 endmenu
430
431 menu "Compression Support"
432
433 config LZ4
434         bool "Enable LZ4 decompression support"
435         help
436           If this option is set, support for LZ4 compressed images
437           is included. The LZ4 algorithm can run in-place as long as the
438           compressed image is loaded to the end of the output buffer, and
439           trades lower compression ratios for much faster decompression.
440           
441           NOTE: This implements the release version of the LZ4 frame
442           format as generated by default by the 'lz4' command line tool.
443           This is not the same as the outdated, less efficient legacy
444           frame format currently (2015) implemented in the Linux kernel
445           (generated by 'lz4 -l'). The two formats are incompatible.
446
447 config LZMA
448         bool "Enable LZMA decompression support"
449         help
450           This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
451           a dictionary compression algorithm that provides a high compression
452           ratio and fairly fast decompression speed. See also
453           CONFIG_CMD_LZMADEC which provides a decode command.
454
455 config LZO
456         bool "Enable LZO decompression support"
457         help
458           This enables support for LZO compression algorithm.r
459
460 config GZIP
461         bool "Enable gzip decompression support"
462         select ZLIB
463         default y
464         help
465           This enables support for GZIP compression algorithm.
466
467 config ZLIB_UNCOMPRESS
468         bool "Enables zlib's uncompress() functionality"
469         help
470           This enables an extra zlib functionality: the uncompress() function,
471           which decompresses data from a buffer into another, knowing their
472           sizes. Unlike gunzip(), there is no header parsing.
473
474 config GZIP_COMPRESSED
475         bool
476         select ZLIB
477
478 config BZIP2
479         bool "Enable bzip2 decompression support"
480         help
481           This enables support for BZIP2 compression algorithm.
482
483 config ZLIB
484         bool
485         default y
486         help
487           This enables ZLIB compression lib.
488
489 config ZSTD
490         bool "Enable Zstandard decompression support"
491         select XXHASH
492         help
493           This enables Zstandard decompression library.
494
495 config SPL_LZ4
496         bool "Enable LZ4 decompression support in SPL"
497         help
498           This enables support for the LZ4 decompression algorithm in SPL. LZ4
499           is a lossless data compression algorithm that is focused on
500           fast compression and decompression speed. It belongs to the LZ77
501           family of byte-oriented compression schemes.
502
503 config SPL_LZMA
504         bool "Enable LZMA decompression support for SPL build"
505         help
506           This enables support for LZMA compression algorithm for SPL boot.
507
508 config SPL_LZO
509         bool "Enable LZO decompression support in SPL"
510         help
511           This enables support for LZO compression algorithm in the SPL.
512
513 config SPL_GZIP
514         bool "Enable gzip decompression support for SPL build"
515         select SPL_ZLIB
516         help
517           This enables support for GZIP compression altorithm for SPL boot.
518
519 config SPL_ZLIB
520         bool
521         help
522           This enables compression lib for SPL boot.
523
524 config SPL_ZSTD
525         bool "Enable Zstandard decompression support in SPL"
526         select XXHASH
527         help
528           This enables Zstandard decompression library in the SPL.
529
530 endmenu
531
532 config ERRNO_STR
533         bool "Enable function for getting errno-related string message"
534         help
535           The function errno_str(int errno), returns a pointer to the errno
536           corresponding text message:
537           - if errno is null or positive number - a pointer to "Success" message
538           - if errno is negative - a pointer to errno related message
539
540 config HEXDUMP
541         bool "Enable hexdump"
542         help
543           This enables functions for printing dumps of binary data.
544
545 config SPL_HEXDUMP
546         bool "Enable hexdump in SPL"
547         depends on HEXDUMP
548         default y
549         help
550           This enables functions for printing dumps of binary data in
551           SPL.
552
553 config OF_LIBFDT
554         bool "Enable the FDT library"
555         default y if OF_CONTROL
556         help
557           This enables the FDT library (libfdt). It provides functions for
558           accessing binary device tree images in memory, such as adding and
559           removing nodes and properties, scanning through the tree and finding
560           particular compatible nodes. The library operates on a flattened
561           version of the device tree.
562
563 config OF_LIBFDT_ASSUME_MASK
564         hex "Mask of conditions to assume for libfdt"
565         depends on OF_LIBFDT || FIT
566         default 0
567         help
568           Use this to change the assumptions made by libfdt about the
569           device tree it is working with. A value of 0 means that no assumptions
570           are made, and libfdt is able to deal with malicious data. A value of
571           0xff means all assumptions are made and any invalid data may cause
572           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
573
574 config OF_LIBFDT_OVERLAY
575         bool "Enable the FDT library overlay support"
576         depends on OF_LIBFDT
577         default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
578         help
579           This enables the FDT library (libfdt) overlay support.
580
581 config SPL_OF_LIBFDT
582         bool "Enable the FDT library for SPL"
583         default y if SPL_OF_CONTROL
584         help
585           This enables the FDT library (libfdt). It provides functions for
586           accessing binary device tree images in memory, such as adding and
587           removing nodes and properties, scanning through the tree and finding
588           particular compatible nodes. The library operates on a flattened
589           version of the device tree.
590
591 config SPL_OF_LIBFDT_ASSUME_MASK
592         hex "Mask of conditions to assume for libfdt"
593         depends on SPL_OF_LIBFDT || FIT
594         default 0xff
595         help
596           Use this to change the assumptions made by libfdt in SPL about the
597           device tree it is working with. A value of 0 means that no assumptions
598           are made, and libfdt is able to deal with malicious data. A value of
599           0xff means all assumptions are made and any invalid data may cause
600           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
601
602 config TPL_OF_LIBFDT
603         bool "Enable the FDT library for TPL"
604         default y if TPL_OF_CONTROL
605         help
606           This enables the FDT library (libfdt). It provides functions for
607           accessing binary device tree images in memory, such as adding and
608           removing nodes and properties, scanning through the tree and finding
609           particular compatible nodes. The library operates on a flattened
610           version of the device tree.
611
612 config TPL_OF_LIBFDT_ASSUME_MASK
613         hex "Mask of conditions to assume for libfdt"
614         depends on TPL_OF_LIBFDT || FIT
615         default 0xff
616         help
617           Use this to change the assumptions made by libfdt in TPL about the
618           device tree it is working with. A value of 0 means that no assumptions
619           are made, and libfdt is able to deal with malicious data. A value of
620           0xff means all assumptions are made and any invalid data may cause
621           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
622
623 config FDT_FIXUP_PARTITIONS
624         bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
625         depends on OF_LIBFDT
626         depends on CMD_MTDPARTS
627         help
628           Allow overwriting defined partitions in the device tree blob
629           using partition info defined in the 'mtdparts' environment
630           variable.
631
632 menu "System tables"
633         depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
634
635 config GENERATE_SMBIOS_TABLE
636         bool "Generate an SMBIOS (System Management BIOS) table"
637         default y
638         depends on X86 || EFI_LOADER
639         help
640           The System Management BIOS (SMBIOS) specification addresses how
641           motherboard and system vendors present management information about
642           their products in a standard format by extending the BIOS interface
643           on Intel architecture systems.
644
645           Check http://www.dmtf.org/standards/smbios for details.
646
647 config SMBIOS_MANUFACTURER
648         string "SMBIOS Manufacturer"
649         depends on GENERATE_SMBIOS_TABLE
650         default SYS_VENDOR
651         help
652           The board manufacturer to store in SMBIOS structures.
653           Change this to override the default one (CONFIG_SYS_VENDOR).
654
655 config SMBIOS_PRODUCT_NAME
656         string "SMBIOS Product Name"
657         depends on GENERATE_SMBIOS_TABLE
658         default SYS_BOARD
659         help
660           The product name to store in SMBIOS structures.
661           Change this to override the default one (CONFIG_SYS_BOARD).
662
663 endmenu
664
665 config ASN1_COMPILER
666         bool
667
668 config ASN1_DECODER
669         bool
670         help
671           Enable asn1 decoder library.
672
673 config OID_REGISTRY
674         bool
675         help
676           Enable fast lookup object identifier registry.
677
678 source lib/efi/Kconfig
679 source lib/efi_loader/Kconfig
680 source lib/optee/Kconfig
681
682 config TEST_FDTDEC
683         bool "enable fdtdec test"
684         depends on OF_LIBFDT
685
686 config LIB_DATE
687         bool
688
689 config LIB_ELF
690         bool
691         help
692           Supoort basic elf loading/validating functions.
693           This supports fir 32 bit and 64 bit versions.
694
695 endmenu