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