board: starfive: support Milk-V Mars board
[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           This library only works in the post-relocation phase.
10
11 config SYS_NUM_ADDR_MAP
12         int "Size of the address-map table"
13         depends on ADDR_MAP
14         default 16
15         help
16           Sets the number of entries in the virtual-physical mapping table.
17
18 config SYS_TIMER_COUNTS_DOWN
19         bool "System timer counts down rather than up"
20
21 config PHYSMEM
22         bool "Access to physical memory region (> 4G)"
23         help
24           Some basic support is provided for operations on memory not
25           normally accessible to 32-bit U-Boot - e.g. some architectures
26           support access to more than 4G of memory on 32-bit
27           machines using physical address extension or similar.
28           Enable this to access this basic support, which only supports clearing
29           the memory.
30
31 config BCH
32         bool "Enable Software based BCH ECC"
33         help
34           Enables software based BCH ECC algorithm present in lib/bch.c
35           This is used by SoC platforms which do not have built-in ELM
36           hardware engine required for BCH ECC correction.
37
38 config BINMAN_FDT
39         bool "Allow access to binman information in the device tree"
40         depends on BINMAN && DM && OF_CONTROL
41         default y if OF_SEPARATE || OF_EMBED
42         help
43           This enables U-Boot to access information about binman entries,
44           stored in the device tree in a binman node. Typical uses are to
45           locate entries in the firmware image. See binman.h for the available
46           functionality.
47
48 config CC_OPTIMIZE_LIBS_FOR_SPEED
49         bool "Optimize libraries for speed"
50         help
51           Enabling this option will pass "-O2" to gcc when compiling
52           under "lib" directory.
53
54           If unsure, say N.
55
56 config CHARSET
57         bool
58
59 config DYNAMIC_CRC_TABLE
60         bool "Enable Dynamic tables for CRC"
61         help
62           Enable this option to calculate entries for CRC tables at runtime.
63           This can be helpful when reducing the size of the build image
64
65 config HAVE_ARCH_IOMAP
66         bool
67         help
68           Enable this option if architecture provides io{read,write}{8,16,32}
69           I/O accessor functions.
70
71 config HAVE_PRIVATE_LIBGCC
72         bool
73
74 config LIB_UUID
75         bool
76
77 config RANDOM_UUID
78         bool "GPT Random UUID generation"
79         select LIB_UUID
80         help
81           Enable the generation of partitions with random UUIDs if none
82           are provided.
83
84 config SPL_LIB_UUID
85         depends on SPL
86         bool
87
88 config SEMIHOSTING
89         bool "Support semihosting"
90         depends on ARM || RISCV
91         help
92           Semihosting is a method for a target to communicate with a host
93           debugger. It uses special instructions which the debugger will trap
94           on and interpret. This allows U-Boot to read/write files, print to
95           the console, and execute arbitrary commands on the host system.
96
97           Enabling this option will add support for reading and writing files
98           on the host system. If you don't have a debugger attached then trying
99           to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
100
101 config SEMIHOSTING_FALLBACK
102         bool "Recover gracefully when semihosting fails"
103         depends on SEMIHOSTING
104         default y
105         help
106           Normally, if U-Boot makes a semihosting call and no debugger is
107           attached, then it will panic due to a synchronous abort
108           exception. This config adds an exception handler which will allow
109           U-Boot to recover. Say 'y' if unsure.
110
111 config SPL_SEMIHOSTING
112         bool "Support semihosting in SPL"
113         depends on SPL && (ARM || RISCV)
114         help
115           Semihosting is a method for a target to communicate with a host
116           debugger. It uses special instructions which the debugger will trap
117           on and interpret. This allows U-Boot to read/write files, print to
118           the console, and execute arbitrary commands on the host system.
119
120           Enabling this option will add support for reading and writing files
121           on the host system. If you don't have a debugger attached then trying
122           to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
123
124 config SPL_SEMIHOSTING_FALLBACK
125         bool "Recover gracefully when semihosting fails in SPL"
126         depends on SPL_SEMIHOSTING
127         select ARMV8_SPL_EXCEPTION_VECTORS if ARM64
128         default y
129         help
130           Normally, if U-Boot makes a semihosting call and no debugger is
131           attached, then it will panic due to a synchronous abort
132           exception. This config adds an exception handler which will allow
133           U-Boot to recover. Say 'y' if unsure.
134
135 config PRINTF
136         bool
137         default y
138
139 config SPL_PRINTF
140         bool
141         select SPL_SPRINTF
142         select SPL_STRTO if !SPL_USE_TINY_PRINTF
143
144 config TPL_PRINTF
145         bool
146         select TPL_SPRINTF
147         select TPL_STRTO if !TPL_USE_TINY_PRINTF
148
149 config VPL_PRINTF
150         bool
151         select VPL_SPRINTF
152         select VPL_STRTO if !VPL_USE_TINY_PRINTF
153
154 config SPRINTF
155         bool
156         default y
157
158 config SPL_SPRINTF
159         bool
160
161 config TPL_SPRINTF
162         bool
163
164 config VPL_SPRINTF
165         bool
166
167 config SSCANF
168         bool
169
170 config STRTO
171         bool
172         default y
173
174 config SPL_STRTO
175         bool
176
177 config TPL_STRTO
178         bool
179
180 config VPL_STRTO
181         bool
182
183 config IMAGE_SPARSE
184         bool
185
186 config IMAGE_SPARSE_FILLBUF_SIZE
187         hex "Android sparse image CHUNK_TYPE_FILL buffer size"
188         default 0x80000
189         depends on IMAGE_SPARSE
190         help
191           Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
192           chunks.
193
194 config USE_PRIVATE_LIBGCC
195         bool "Use private libgcc"
196         depends on HAVE_PRIVATE_LIBGCC
197         default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
198         help
199           This option allows you to use the built-in libgcc implementation
200           of U-Boot instead of the one provided by the compiler.
201           If unsure, say N.
202
203 config SYS_HZ
204         int
205         default 1000
206         help
207           The frequency of the timer returned by get_timer().
208           get_timer() must operate in milliseconds and this option must be
209           set to 1000.
210
211 config SPL_USE_TINY_PRINTF
212         bool "Enable tiny printf() version in SPL"
213         depends on SPL
214         default y
215         help
216           This option enables a tiny, stripped down printf version.
217           This should only be used in space limited environments,
218           like SPL versions with hard memory limits. This version
219           reduces the code size by about 2.5KiB on armv7.
220
221           The supported format specifiers are %c, %s, %u/%d and %x.
222
223 config TPL_USE_TINY_PRINTF
224         bool "Enable tiny printf() version in TPL"
225         depends on TPL
226         default y if SPL_USE_TINY_PRINTF
227         help
228           This option enables a tiny, stripped down printf version.
229           This should only be used in space limited environments,
230           like SPL versions with hard memory limits. This version
231           reduces the code size by about 2.5KiB on armv7.
232
233           The supported format specifiers are %c, %s, %u/%d and %x.
234
235 config VPL_USE_TINY_PRINTF
236         bool "Enable tiny printf() version for VPL"
237         depends on VPL
238         help
239           This option enables a tiny, stripped down printf version.
240           This should only be used in space limited environments,
241           like SPL versions with hard memory limits. This version
242           reduces the code size by about 2.5KiB on armv7.
243
244           The supported format specifiers are %c, %s, %u/%d and %x.
245
246 config PANIC_HANG
247         bool "Do not reset the system on fatal error"
248         help
249           Define this option to stop the system in case of a fatal error,
250           so that you have to reset it manually. This is probably NOT a good
251           idea for an embedded system where you want the system to reboot
252           automatically as fast as possible, but it may be useful during
253           development since you can try to debug the conditions that lead to
254           the situation.
255
256 config REGEX
257         bool "Enable regular expression support"
258         default y if NET
259         help
260           If this variable is defined, U-Boot is linked against the
261           SLRE (Super Light Regular Expression) library, which adds
262           regex support to some commands, for example "env grep" and
263           "setexpr".
264
265 choice
266         prompt "Pseudo-random library support type"
267         depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
268                    RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
269         default LIB_RAND
270         help
271           Select the library to provide pseudo-random number generator
272           functions.  LIB_HW_RAND supports certain hardware engines that
273           provide this functionality.  If in doubt, select LIB_RAND.
274
275 config LIB_RAND
276         bool "Pseudo-random library support"
277
278 config LIB_HW_RAND
279         bool "HW Engine for random library support"
280
281 endchoice
282
283 config SUPPORT_ACPI
284         bool
285         help
286           Enable this if your arch or board can support generating ACPI
287           (Advanced Configuration and Power Interface) tables. In this case
288           U-Boot can generate these tables and pass them to the Operating
289           System.
290
291 config ACPI
292         bool "Enable support for ACPI libraries"
293         depends on SUPPORT_ACPI
294         help
295           Provides library functions for dealing with ACPI tables. This does
296           not necessarily include generation of tables
297           (see GENERATE_ACPI_TABLE), but allows for tables to be located.
298
299 config SPL_ACPI
300         bool "Enable support for ACPI libraries in SPL"
301         depends on SPL && SUPPORT_ACPI
302         help
303           Provides library functions for dealing with ACPI tables in SPL. This
304           does not necessarily include generation of tables
305           (see GENERATE_ACPI_TABLE), but allows for tables to be located.
306
307 config GENERATE_ACPI_TABLE
308         bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
309         depends on ACPI
310         select QFW if QEMU
311         help
312           The Advanced Configuration and Power Interface (ACPI) specification
313           provides an open standard for device configuration and management
314           by the operating system. It defines platform-independent interfaces
315           for configuration and power management monitoring.
316
317 config SPL_TINY_MEMSET
318         bool "Use a very small memset() in SPL"
319         depends on SPL
320         help
321           The faster memset() is the arch-specific one (if available) enabled
322           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
323           better performance by writing a word at a time. But in very
324           size-constrained environments even this may be too big. Enable this
325           option to reduce code size slightly at the cost of some speed.
326
327 config TPL_TINY_MEMSET
328         bool "Use a very small memset() in TPL"
329         depends on TPL
330         help
331           The faster memset() is the arch-specific one (if available) enabled
332           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
333           better performance by writing a word at a time. But in very
334           size-constrained environments even this may be too big. Enable this
335           option to reduce code size slightly at the cost of some speed.
336
337 config RBTREE
338         bool
339
340 config BITREVERSE
341         bool "Bit reverse library from Linux"
342
343 config TRACE
344         bool "Support for tracing of function calls and timing"
345         imply CMD_TRACE
346         imply TIMER_EARLY
347         help
348           Enables function tracing within U-Boot. This allows recording of call
349           traces including timing information. The command can write data to
350           memory for exporting for analysis (e.g. using bootchart).
351           See doc/README.trace for full details.
352
353 config TRACE_BUFFER_SIZE
354         hex "Size of trace buffer in U-Boot"
355         depends on TRACE
356         default 0x01000000
357         help
358           Sets the size of the trace buffer in U-Boot. This is allocated from
359           memory during relocation. If this buffer is too small, the trace
360           history will be truncated, with later records omitted.
361
362           If early trace is enabled (i.e. before relocation), this buffer must
363           be large enough to include all the data from the early trace buffer as
364           well, since this is copied over to the main buffer during relocation.
365
366           A trace record is emitted for each function call and each record is
367           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
368           the size is too small then 'trace stats' will show a message saying
369           how many records were dropped due to buffer overflow.
370
371 config TRACE_CALL_DEPTH_LIMIT
372         int "Trace call depth limit"
373         depends on TRACE
374         default 15
375         help
376           Sets the maximum call depth up to which function calls are recorded.
377
378 config TRACE_EARLY
379         bool "Enable tracing before relocation"
380         depends on TRACE
381         help
382           Sometimes it is helpful to trace execution of U-Boot before
383           relocation. This is possible by using a arch-specific, fixed buffer
384           position in memory. Enable this option to start tracing as early as
385           possible after U-Boot starts.
386
387 config TRACE_EARLY_SIZE
388         hex "Size of early trace buffer in U-Boot"
389         depends on TRACE_EARLY
390         default 0x00100000
391         help
392           Sets the size of the early trace buffer in bytes. This is used to hold
393           tracing information before relocation.
394
395 config TRACE_EARLY_CALL_DEPTH_LIMIT
396         int "Early trace call depth limit"
397         depends on TRACE_EARLY
398         default 15
399         help
400           Sets the maximum call depth up to which function calls are recorded
401           during early tracing.
402
403 config TRACE_EARLY_ADDR
404         hex "Address of early trace buffer in U-Boot"
405         depends on TRACE_EARLY
406         default 0x00100000
407         help
408           Sets the address of the early trace buffer in U-Boot. This memory
409           must be accessible before relocation.
410
411           A trace record is emitted for each function call and each record is
412           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
413           the size is too small then the message which says the amount of early
414           data being coped will the the same as the
415
416 config CIRCBUF
417         bool "Enable circular buffer support"
418
419 source lib/dhry/Kconfig
420
421 menu "Security support"
422
423 config AES
424         bool "Support the AES algorithm"
425         help
426           This provides a means to encrypt and decrypt data using the AES
427           (Advanced Encryption Standard). This algorithm uses a symetric key
428           and is widely used as a streaming cipher. Different key lengths are
429           supported by the algorithm but only a 128-bit key is supported at
430           present.
431
432 source lib/ecdsa/Kconfig
433 source lib/rsa/Kconfig
434 source lib/crypto/Kconfig
435 source lib/crypt/Kconfig
436
437 config TPM
438         bool "Trusted Platform Module (TPM) Support"
439         depends on DM
440         imply DM_RNG
441         select SHA1
442         select SHA256
443         select SHA384
444         select SHA512
445         help
446           This enables support for TPMs which can be used to provide security
447           features for your board. The TPM can be connected via LPC or I2C
448           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
449           command to interactive the TPM. Driver model support is provided
450           for the low-level TPM interface, but only one TPM is supported at
451           a time by the TPM library.
452
453 config SPL_TPM
454         bool "Trusted Platform Module (TPM) Support in SPL"
455         depends on SPL_DM
456         imply SPL_CRC8
457         help
458           This enables support for TPMs which can be used to provide security
459           features for your board. The TPM can be connected via LPC or I2C
460           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
461           command to interactive the TPM. Driver model support is provided
462           for the low-level TPM interface, but only one TPM is supported at
463           a time by the TPM library.
464
465 config TPL_TPM
466         bool "Trusted Platform Module (TPM) Support in TPL"
467         depends on TPL_DM
468         help
469           This enables support for TPMs which can be used to provide security
470           features for your board. The TPM can be connected via LPC or I2C
471           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
472           command to interactive the TPM. Driver model support is provided
473           for the low-level TPM interface, but only one TPM is supported at
474           a time by the TPM library.
475
476 config VPL_TPM
477         bool "Trusted Platform Module (TPM) Support in VPL"
478         depends on VPL_DM
479         help
480           This enables support for TPMs which can be used to provide security
481           features for your board. The TPM can be connected via LPC or I2C
482           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
483           command to interactive the TPM. Driver model support is provided
484           for the low-level TPM interface, but only one TPM is supported at
485           a time by the TPM library.
486
487 endmenu
488
489 menu "Android Verified Boot"
490
491 config LIBAVB
492         bool "Android Verified Boot 2.0 support"
493         depends on ANDROID_BOOT_IMAGE
494         help
495           This enables support of Android Verified Boot 2.0 which can be used
496           to assure the end user of the integrity of the software running on a
497           device. Introduces such features as boot chain of trust, rollback
498           protection etc.
499
500 endmenu
501
502 menu "Hashing Support"
503
504 config BLAKE2
505         bool "Enable BLAKE2 support"
506         help
507           This option enables support of hashing using BLAKE2B algorithm.
508           The hash is calculated in software.
509           The BLAKE2 algorithm produces a hash value (digest) between 1 and
510           64 bytes.
511
512 config SHA1
513         bool "Enable SHA1 support"
514         help
515           This option enables support of hashing using SHA1 algorithm.
516           The hash is calculated in software.
517           The SHA1 algorithm produces a 160-bit (20-byte) hash value
518           (digest).
519
520 config SHA256
521         bool "Enable SHA256 support"
522         help
523           This option enables support of hashing using SHA256 algorithm.
524           The hash is calculated in software.
525           The SHA256 algorithm produces a 256-bit (32-byte) hash value
526           (digest).
527
528 config SHA512
529         bool "Enable SHA512 support"
530         default y if TI_SECURE_DEVICE && FIT_SIGNATURE
531         help
532           This option enables support of hashing using SHA512 algorithm.
533           The hash is calculated in software.
534           The SHA512 algorithm produces a 512-bit (64-byte) hash value
535           (digest).
536
537 config SHA384
538         bool "Enable SHA384 support"
539         select SHA512
540         help
541           This option enables support of hashing using SHA384 algorithm.
542           The hash is calculated in software. This is also selects SHA512,
543           because these implementations share the bulk of the code..
544           The SHA384 algorithm produces a 384-bit (48-byte) hash value
545           (digest).
546
547 config SHA_HW_ACCEL
548         bool "Enable hardware acceleration for SHA hash functions"
549         help
550           This option enables hardware acceleration for the SHA1 and SHA256
551           hashing algorithms. This affects the 'hash' command and also the
552           hash_lookup_algo() function.
553
554 if SPL
555
556 config SPL_CRC32
557         bool "Enable CRC32 support in SPL"
558         default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION
559         default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
560         help
561           This option enables support of hashing using CRC32 algorithm.
562           The CRC32 algorithm produces 32-bit checksum value. For FIT
563           images, this is the least secure type of checksum, suitable for
564           detected accidental image corruption. For secure applications you
565           should consider SHA256 or SHA384.
566
567 config SPL_SHA1
568         bool "Enable SHA1 support in SPL"
569         default y if SHA1
570         help
571           This option enables support of hashing using SHA1 algorithm.
572           The hash is calculated in software.
573           The SHA1 algorithm produces a 160-bit (20-byte) hash value
574           (digest).
575
576 config SPL_SHA256
577         bool "Enable SHA256 support in SPL"
578         default y if SHA256
579         help
580           This option enables support of hashing using SHA256 algorithm.
581           The hash is calculated in software.
582           The SHA256 algorithm produces a 256-bit (32-byte) hash value
583           (digest).
584
585 config SPL_SHA512
586         bool "Enable SHA512 support in SPL"
587         default y if SHA512
588         help
589           This option enables support of hashing using SHA512 algorithm.
590           The hash is calculated in software.
591           The SHA512 algorithm produces a 512-bit (64-byte) hash value
592           (digest).
593
594 config SPL_SHA384
595         bool "Enable SHA384 support in SPL"
596         default y if SHA384
597         select SPL_SHA512
598         help
599           This option enables support of hashing using SHA384 algorithm.
600           The hash is calculated in software. This is also selects SHA512,
601           because these implementations share the bulk of the code..
602           The SHA384 algorithm produces a 384-bit (48-byte) hash value
603           (digest).
604
605 config SPL_SHA_HW_ACCEL
606         bool "Enable hardware acceleration for SHA hash functions"
607         default y if SHA_HW_ACCEL
608         help
609           This option enables hardware acceleration for the SHA1 and SHA256
610           hashing algorithms. This affects the 'hash' command and also the
611           hash_lookup_algo() function.
612
613 config SPL_SHA_PROG_HW_ACCEL
614         bool "Enable Progressive hashing support using hardware in SPL"
615         depends on SHA_PROG_HW_ACCEL
616         default y
617         help
618           This option enables hardware-acceleration for SHA progressive
619           hashing.
620           Data can be streamed in a block at a time and the hashing is
621           performed in hardware.
622
623 endif
624
625 config VPL_SHA1
626         bool "Enable SHA1 support in VPL"
627         depends on VPL
628         default y if SHA1
629         help
630           This option enables support of hashing using SHA1 algorithm.
631           The hash is calculated in software.
632           The SHA1 algorithm produces a 160-bit (20-byte) hash value
633           (digest).
634
635 config VPL_SHA256
636         bool "Enable SHA256 support in VPL"
637         depends on VPL
638         default y if SHA256
639         help
640           This option enables support of hashing using SHA256 algorithm.
641           The hash is calculated in software.
642           The SHA256 algorithm produces a 256-bit (32-byte) hash value
643           (digest).
644
645 if SHA_HW_ACCEL
646
647 config SHA512_HW_ACCEL
648         bool "Enable hardware acceleration for SHA512"
649         depends on SHA512
650         help
651           This option enables hardware acceleration for the SHA384 and SHA512
652           hashing algorithms. This affects the 'hash' command and also the
653           hash_lookup_algo() function.
654
655 config SHA_PROG_HW_ACCEL
656         bool "Enable Progressive hashing support using hardware"
657         help
658           This option enables hardware-acceleration for SHA progressive
659           hashing.
660           Data can be streamed in a block at a time and the hashing is
661           performed in hardware.
662
663 endif
664
665 config MD5
666         bool "Support MD5 algorithm"
667         help
668           This option enables MD5 support. MD5 is an algorithm designed
669           in 1991 that produces a 16-byte digest (or checksum) from its input
670           data. It has a number of vulnerabilities which preclude its use in
671           security applications, but it can be useful for providing a quick
672           checksum of a block of data.
673
674 config SPL_MD5
675         bool "Support MD5 algorithm in SPL"
676         depends on SPL
677         help
678           This option enables MD5 support in SPL. MD5 is an algorithm designed
679           in 1991 that produces a 16-byte digest (or checksum) from its input
680           data. It has a number of vulnerabilities which preclude its use in
681           security applications, but it can be useful for providing a quick
682           checksum of a block of data.
683
684 config CRC8
685         def_bool y
686         help
687           Enables CRC8 support in U-Boot. This is normally required. CRC8 is
688           a simple and fast checksumming algorithm which does a bytewise
689           checksum with feedback to produce an 8-bit result. The code is small
690           and it does not require a lookup table (unlike CRC32).
691
692 config SPL_CRC8
693         bool "Support CRC8 in SPL"
694         depends on SPL
695         help
696           Enables CRC8 support in SPL. This is not normally required. CRC8 is
697           a simple and fast checksumming algorithm which does a bytewise
698           checksum with feedback to produce an 8-bit result. The code is small
699           and it does not require a lookup table (unlike CRC32).
700
701 config SPL_CRC16
702         bool "Support CRC16 in SPL"
703         depends on SPL
704         help
705           Enables CRC16 support in SPL. This is not normally required.
706
707 config CRC32
708         def_bool y
709         help
710           Enables CRC32 support in U-Boot. This is normally required.
711
712 config CRC32C
713         bool
714
715 config XXHASH
716         bool
717
718 endmenu
719
720 menu "Compression Support"
721
722 config LZ4
723         bool "Enable LZ4 decompression support"
724         help
725           If this option is set, support for LZ4 compressed images
726           is included. The LZ4 algorithm can run in-place as long as the
727           compressed image is loaded to the end of the output buffer, and
728           trades lower compression ratios for much faster decompression.
729
730           NOTE: This implements the release version of the LZ4 frame
731           format as generated by default by the 'lz4' command line tool.
732           This is not the same as the outdated, less efficient legacy
733           frame format currently (2015) implemented in the Linux kernel
734           (generated by 'lz4 -l'). The two formats are incompatible.
735
736 config LZMA
737         bool "Enable LZMA decompression support"
738         help
739           This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
740           a dictionary compression algorithm that provides a high compression
741           ratio and fairly fast decompression speed. See also
742           CONFIG_CMD_LZMADEC which provides a decode command.
743
744 config LZO
745         bool "Enable LZO decompression support"
746         help
747           This enables support for the LZO compression algorithm.
748
749 config GZIP
750         bool "Enable gzip decompression support"
751         select ZLIB
752         default y
753         help
754           This enables support for GZIP compression algorithm.
755
756 config ZLIB_UNCOMPRESS
757         bool "Enables zlib's uncompress() functionality"
758         help
759           This enables an extra zlib functionality: the uncompress() function,
760           which decompresses data from a buffer into another, knowing their
761           sizes. Unlike gunzip(), there is no header parsing.
762
763 config GZIP_COMPRESSED
764         bool
765         select ZLIB
766
767 config BZIP2
768         bool "Enable bzip2 decompression support"
769         help
770           This enables support for BZIP2 compression algorithm.
771
772 config ZLIB
773         bool
774         default y
775         help
776           This enables ZLIB compression lib.
777
778 config ZSTD
779         bool "Enable Zstandard decompression support"
780         select XXHASH
781         help
782           This enables Zstandard decompression library.
783
784 if ZSTD
785
786 config ZSTD_LIB_MINIFY
787         bool "Minify Zstandard code"
788         default y
789         help
790           This disables various optional components and changes the
791           compilation flags to prioritize space-saving.
792
793           For detailed info, see zstd's lib/README.md
794
795           https://github.com/facebook/zstd/blob/dev/lib/README.md
796
797 endif
798
799 config SPL_BZIP2
800         bool "Enable bzip2 decompression support for SPL build"
801         depends on SPL
802         help
803           This enables support for bzip2 compression algorithm for SPL boot.
804
805 config SPL_LZ4
806         bool "Enable LZ4 decompression support in SPL"
807         depends on SPL
808         help
809           This enables support for the LZ4 decompression algorithm in SPL. LZ4
810           is a lossless data compression algorithm that is focused on
811           fast compression and decompression speed. It belongs to the LZ77
812           family of byte-oriented compression schemes.
813
814 config SPL_LZMA
815         bool "Enable LZMA decompression support for SPL build"
816         depends on SPL
817         help
818           This enables support for LZMA compression algorithm for SPL boot.
819
820 config VPL_LZMA
821         bool "Enable LZMA decompression support for VPL build"
822         default y if LZMA
823         help
824           This enables support for LZMA compression algorithm for VPL boot.
825
826 config SPL_LZO
827         bool "Enable LZO decompression support in SPL"
828         depends on SPL
829         help
830           This enables support for LZO compression algorithm in the SPL.
831
832 config SPL_GZIP
833         bool "Enable gzip decompression support for SPL build"
834         select SPL_ZLIB
835         help
836           This enables support for the GZIP compression algorithm for SPL boot.
837
838 config SPL_ZLIB
839         bool
840         help
841           This enables compression lib for SPL boot.
842
843 config SPL_ZSTD
844         bool "Enable Zstandard decompression support in SPL"
845         depends on SPL
846         select XXHASH
847         help
848           This enables Zstandard decompression library in the SPL.
849
850 endmenu
851
852 config ERRNO_STR
853         bool "Enable function for getting errno-related string message"
854         help
855           The function errno_str(int errno), returns a pointer to the errno
856           corresponding text message:
857           - if errno is null or positive number - a pointer to "Success" message
858           - if errno is negative - a pointer to errno related message
859
860 config HEXDUMP
861         bool "Enable hexdump"
862         help
863           This enables functions for printing dumps of binary data.
864
865 config SPL_HEXDUMP
866         bool "Enable hexdump in SPL"
867         depends on SPL && HEXDUMP
868         help
869           This enables functions for printing dumps of binary data in
870           SPL.
871
872 config GETOPT
873         bool "Enable getopt"
874         help
875           This enables functions for parsing command-line options.
876
877 config OF_LIBFDT
878         bool "Enable the FDT library"
879         default y if OF_CONTROL
880         help
881           This enables the FDT library (libfdt). It provides functions for
882           accessing binary device tree images in memory, such as adding and
883           removing nodes and properties, scanning through the tree and finding
884           particular compatible nodes. The library operates on a flattened
885           version of the device tree.
886
887 config OF_LIBFDT_ASSUME_MASK
888         hex "Mask of conditions to assume for libfdt"
889         depends on OF_LIBFDT || FIT
890         default 0x0
891         help
892           Use this to change the assumptions made by libfdt about the
893           device tree it is working with. A value of 0 means that no assumptions
894           are made, and libfdt is able to deal with malicious data. A value of
895           0xff means all assumptions are made and any invalid data may cause
896           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
897
898 config OF_LIBFDT_OVERLAY
899         bool "Enable the FDT library overlay support"
900         depends on OF_LIBFDT
901         default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
902         help
903           This enables the FDT library (libfdt) overlay support.
904
905 config SYS_FDT_PAD
906         hex "Maximum size of the FDT memory area passeed to the OS"
907         depends on OF_LIBFDT
908         default 0x13000 if FMAN_ENET || QE || U_QE
909         default 0x3000
910         help
911           During OS boot, we allocate a region of memory within the bootmap
912           for the FDT. This is the size that we will expand the FDT that we
913           are using will be extended to be, in bytes.
914
915 config SPL_OF_LIBFDT
916         bool "Enable the FDT library for SPL"
917         depends on SPL_LIBGENERIC_SUPPORT
918         default y if SPL_OF_CONTROL
919         help
920           This enables the FDT library (libfdt). It provides functions for
921           accessing binary device tree images in memory, such as adding and
922           removing nodes and properties, scanning through the tree and finding
923           particular compatible nodes. The library operates on a flattened
924           version of the device tree.
925
926 config SPL_OF_LIBFDT_ASSUME_MASK
927         hex "Mask of conditions to assume for libfdt"
928         depends on SPL_OF_LIBFDT || (FIT && SPL)
929         default 0xff
930         help
931           Use this to change the assumptions made by libfdt in SPL about the
932           device tree it is working with. A value of 0 means that no assumptions
933           are made, and libfdt is able to deal with malicious data. A value of
934           0xff means all assumptions are made and any invalid data may cause
935           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
936
937 config TPL_OF_LIBFDT
938         bool "Enable the FDT library for TPL"
939         depends on TPL_LIBGENERIC_SUPPORT
940         default y if TPL_OF_CONTROL
941         help
942           This enables the FDT library (libfdt). It provides functions for
943           accessing binary device tree images in memory, such as adding and
944           removing nodes and properties, scanning through the tree and finding
945           particular compatible nodes. The library operates on a flattened
946           version of the device tree.
947
948 config TPL_OF_LIBFDT_ASSUME_MASK
949         hex "Mask of conditions to assume for libfdt"
950         depends on TPL_OF_LIBFDT || (FIT && TPL)
951         default 0xff
952         help
953           Use this to change the assumptions made by libfdt in TPL about the
954           device tree it is working with. A value of 0 means that no assumptions
955           are made, and libfdt is able to deal with malicious data. A value of
956           0xff means all assumptions are made and any invalid data may cause
957           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
958
959 config VPL_OF_LIBFDT
960         bool "Enable the FDT library for VPL"
961         depends on VPL
962         default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
963         help
964           This enables the FDT library (libfdt). It provides functions for
965           accessing binary device tree images in memory, such as adding and
966           removing nodes and properties, scanning through the tree and finding
967           particular compatible nodes. The library operates on a flattened
968           version of the device tree.
969
970 config VPL_OF_LIBFDT_ASSUME_MASK
971         hex "Mask of conditions to assume for libfdt"
972         depends on VPL_OF_LIBFDT || (FIT && VPL)
973         default 0xff
974         help
975           Use this to change the assumptions made by libfdt in SPL about the
976           device tree it is working with. A value of 0 means that no assumptions
977           are made, and libfdt is able to deal with malicious data. A value of
978           0xff means all assumptions are made and any invalid data may cause
979           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
980
981 menu "System tables"
982         depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
983
984 config BLOBLIST_TABLES
985         bool "Put tables in a bloblist"
986         depends on X86 && BLOBLIST
987         help
988           Normally tables are placed at address 0xf0000 and can be up to 64KB
989           long. With this option, tables are instead placed in the bloblist
990           with a pointer from 0xf0000. The size can then be larger and the
991           tables can be placed high in memory.
992
993 config GENERATE_SMBIOS_TABLE
994         bool "Generate an SMBIOS (System Management BIOS) table"
995         depends on SMBIOS
996         default y
997         help
998           The System Management BIOS (SMBIOS) specification addresses how
999           motherboard and system vendors present management information about
1000           their products in a standard format by extending the BIOS interface
1001           on Intel architecture systems.
1002
1003           Check http://www.dmtf.org/standards/smbios for details.
1004
1005           See also SYSINFO_SMBIOS which allows SMBIOS values to be provided in
1006           the devicetree.
1007
1008 endmenu
1009
1010 config LIB_RATIONAL
1011         bool "enable continued fraction calculation routines"
1012
1013 config SPL_LIB_RATIONAL
1014         bool "enable continued fraction calculation routines for SPL"
1015         depends on SPL
1016
1017 config ASN1_COMPILER
1018         bool
1019         help
1020           ASN.1 (Abstract Syntax Notation One) is a standard interface
1021           description language for defining data structures that can be
1022           serialized and deserialized in a cross-platform way. It is
1023           broadly used in telecommunications and computer networking,
1024           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1025           This option enables the support of the asn1 compiler.
1026
1027 config ASN1_DECODER
1028         bool
1029         help
1030           ASN.1 (Abstract Syntax Notation One) is a standard interface
1031           description language for defining data structures that can be
1032           serialized and deserialized in a cross-platform way. It is
1033           broadly used in telecommunications and computer networking,
1034           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1035           This option enables the support of the asn1 decoder.
1036
1037 config SPL_ASN1_DECODER
1038         bool
1039         help
1040           ASN.1 (Abstract Syntax Notation One) is a standard interface
1041           description language for defining data structures that can be
1042           serialized and deserialized in a cross-platform way. It is
1043           broadly used in telecommunications and computer networking,
1044           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1045           This option enables the support of the asn1 decoder in the SPL.
1046
1047 config OID_REGISTRY
1048         bool
1049         help
1050           In computing, object identifiers or OIDs are an identifier mechanism
1051           standardized by the International Telecommunication Union (ITU) and
1052           ISO/IEC for naming any object, concept, or "thing" with a globally
1053           unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
1054           Enable fast lookup object identifier registry.
1055
1056 config SPL_OID_REGISTRY
1057         bool
1058         help
1059           In computing, object identifiers or OIDs are an identifier mechanism
1060           standardized by the International Telecommunication Union (ITU) and
1061           ISO/IEC for naming any object, concept, or "thing" with a globally
1062           unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
1063           Enable fast lookup object identifier registry in the SPL.
1064
1065 config SMBIOS
1066         bool "SMBIOS support"
1067         depends on X86 || EFI_LOADER
1068         default y
1069         select LAST_STAGE_INIT
1070         help
1071           Indicates that this platform can support System Management BIOS
1072           (SMBIOS) tables. These provide various pieces of information about
1073           the board, such as the manufacturer and the model name.
1074
1075           See GENERATE_SMBIOS_TABLE which controls whether U-Boot actually
1076           creates these tables, rather than them coming from a previous firmware
1077           stage.
1078
1079 config SMBIOS_PARSER
1080         bool "SMBIOS parser"
1081         help
1082           A simple parser for SMBIOS data.
1083
1084 source lib/efi/Kconfig
1085 source lib/efi_loader/Kconfig
1086 source lib/optee/Kconfig
1087
1088 config TEST_FDTDEC
1089         bool "enable fdtdec test"
1090         depends on OF_LIBFDT
1091
1092 config LIB_DATE
1093         bool
1094
1095 config LIB_ELF
1096         bool
1097         help
1098           Support basic elf loading/validating functions.
1099           This supports for 32 bit and 64 bit versions.
1100
1101 config LMB
1102         bool "Enable the logical memory blocks library (lmb)"
1103         default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
1104                      NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
1105         help
1106           Support the library logical memory blocks.
1107
1108 config LMB_USE_MAX_REGIONS
1109         bool "Use a common number of memory and reserved regions in lmb lib"
1110         default y
1111         help
1112           Define the number of supported memory regions in the library logical
1113           memory blocks.
1114           This feature allow to reduce the lmb library size by using compiler
1115           optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
1116
1117 config LMB_MAX_REGIONS
1118         int "Number of memory and reserved regions in lmb lib"
1119         depends on LMB_USE_MAX_REGIONS
1120         default 16
1121         help
1122           Define the number of supported regions, memory and reserved, in the
1123           library logical memory blocks.
1124
1125 config LMB_MEMORY_REGIONS
1126         int "Number of memory regions in lmb lib"
1127         depends on !LMB_USE_MAX_REGIONS
1128         default 8
1129         help
1130           Define the number of supported memory regions in the library logical
1131           memory blocks.
1132           The minimal value is CONFIG_NR_DRAM_BANKS.
1133
1134 config LMB_RESERVED_REGIONS
1135         int "Number of reserved regions in lmb lib"
1136         depends on !LMB_USE_MAX_REGIONS
1137         default 8
1138         help
1139           Define the number of supported reserved regions in the library logical
1140           memory blocks.
1141
1142 config PHANDLE_CHECK_SEQ
1143         bool "Enable phandle check while getting sequence number"
1144         help
1145           When there are multiple device tree nodes with same name,
1146           enable this config option to distinguish them using
1147           phandles in fdtdec_get_alias_seq() function.
1148
1149 endmenu
1150
1151 source lib/fwu_updates/Kconfig