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