spl: Ensure all SPL symbols in Kconfig have some SPL dependency
[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         depends on SPL
243         help
244           The faster memset() is the arch-specific one (if available) enabled
245           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
246           better performance by writing a word at a time. But in very
247           size-constrained environments even this may be too big. Enable this
248           option to reduce code size slightly at the cost of some speed.
249
250 config TPL_TINY_MEMSET
251         bool "Use a very small memset() in TPL"
252         depends on TPL
253         help
254           The faster memset() is the arch-specific one (if available) enabled
255           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
256           better performance by writing a word at a time. But in very
257           size-constrained environments even this may be too big. Enable this
258           option to reduce code size slightly at the cost of some speed.
259
260 config RBTREE
261         bool
262
263 config BITREVERSE
264         bool "Bit reverse library from Linux"
265
266 config TRACE
267         bool "Support for tracing of function calls and timing"
268         imply CMD_TRACE
269         select TIMER_EARLY
270         help
271           Enables function tracing within U-Boot. This allows recording of call
272           traces including timing information. The command can write data to
273           memory for exporting for analysis (e.g. using bootchart).
274           See doc/README.trace for full details.
275
276 config TRACE_BUFFER_SIZE
277         hex "Size of trace buffer in U-Boot"
278         depends on TRACE
279         default 0x01000000
280         help
281           Sets the size of the trace buffer in U-Boot. This is allocated from
282           memory during relocation. If this buffer is too small, the trace
283           history will be truncated, with later records omitted.
284
285           If early trace is enabled (i.e. before relocation), this buffer must
286           be large enough to include all the data from the early trace buffer as
287           well, since this is copied over to the main buffer during relocation.
288
289           A trace record is emitted for each function call and each record is
290           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
291           the size is too small then 'trace stats' will show a message saying
292           how many records were dropped due to buffer overflow.
293
294 config TRACE_CALL_DEPTH_LIMIT
295         int "Trace call depth limit"
296         depends on TRACE
297         default 15
298         help
299           Sets the maximum call depth up to which function calls are recorded.
300
301 config TRACE_EARLY
302         bool "Enable tracing before relocation"
303         depends on TRACE
304         help
305           Sometimes it is helpful to trace execution of U-Boot before
306           relocation. This is possible by using a arch-specific, fixed buffer
307           position in memory. Enable this option to start tracing as early as
308           possible after U-Boot starts.
309
310 config TRACE_EARLY_SIZE
311         hex "Size of early trace buffer in U-Boot"
312         depends on TRACE_EARLY
313         default 0x00100000
314         help
315           Sets the size of the early trace buffer in bytes. This is used to hold
316           tracing information before relocation.
317
318 config TRACE_EARLY_CALL_DEPTH_LIMIT
319         int "Early trace call depth limit"
320         depends on TRACE_EARLY
321         default 200
322         help
323           Sets the maximum call depth up to which function calls are recorded
324           during early tracing.
325
326 config TRACE_EARLY_ADDR
327         hex "Address of early trace buffer in U-Boot"
328         depends on TRACE_EARLY
329         default 0x00100000
330         help
331           Sets the address of the early trace buffer in U-Boot. This memory
332           must be accessible before relocation.
333
334           A trace record is emitted for each function call and each record is
335           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
336           the size is too small then the message which says the amount of early
337           data being coped will the the same as the
338
339 config CIRCBUF
340         bool "Enable circular buffer support"
341
342 source lib/dhry/Kconfig
343
344 menu "Security support"
345
346 config AES
347         bool "Support the AES algorithm"
348         help
349           This provides a means to encrypt and decrypt data using the AES
350           (Advanced Encryption Standard). This algorithm uses a symetric key
351           and is widely used as a streaming cipher. Different key lengths are
352           supported by the algorithm but only a 128-bit key is supported at
353           present.
354
355 source lib/ecdsa/Kconfig
356 source lib/rsa/Kconfig
357 source lib/crypto/Kconfig
358 source lib/crypt/Kconfig
359
360 config TPM
361         bool "Trusted Platform Module (TPM) Support"
362         depends on DM
363         help
364           This enables support for TPMs which can be used to provide security
365           features for your board. The TPM can be connected via LPC or I2C
366           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
367           command to interactive the TPM. Driver model support is provided
368           for the low-level TPM interface, but only one TPM is supported at
369           a time by the TPM library.
370
371 config SPL_TPM
372         bool "Trusted Platform Module (TPM) Support in SPL"
373         depends on SPL_DM
374         help
375           This enables support for TPMs which can be used to provide security
376           features for your board. The TPM can be connected via LPC or I2C
377           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
378           command to interactive the TPM. Driver model support is provided
379           for the low-level TPM interface, but only one TPM is supported at
380           a time by the TPM library.
381
382 config TPL_TPM
383         bool "Trusted Platform Module (TPM) Support in TPL"
384         depends on TPL_DM
385         help
386           This enables support for TPMs which can be used to provide security
387           features for your board. The TPM can be connected via LPC or I2C
388           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
389           command to interactive the TPM. Driver model support is provided
390           for the low-level TPM interface, but only one TPM is supported at
391           a time by the TPM library.
392
393 config VPL_TPM
394         bool "Trusted Platform Module (TPM) Support in VPL"
395         depends on VPL_DM
396         help
397           This enables support for TPMs which can be used to provide security
398           features for your board. The TPM can be connected via LPC or I2C
399           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
400           command to interactive the TPM. Driver model support is provided
401           for the low-level TPM interface, but only one TPM is supported at
402           a time by the TPM library.
403
404 endmenu
405
406 menu "Android Verified Boot"
407
408 config LIBAVB
409         bool "Android Verified Boot 2.0 support"
410         depends on ANDROID_BOOT_IMAGE
411         help
412           This enables support of Android Verified Boot 2.0 which can be used
413           to assure the end user of the integrity of the software running on a
414           device. Introduces such features as boot chain of trust, rollback
415           protection etc.
416
417 endmenu
418
419 menu "Hashing Support"
420
421 config BLAKE2
422         bool "Enable BLAKE2 support"
423         help
424           This option enables support of hashing using BLAKE2B algorithm.
425           The hash is calculated in software.
426           The BLAKE2 algorithm produces a hash value (digest) between 1 and
427           64 bytes.
428
429 config SHA1
430         bool "Enable SHA1 support"
431         help
432           This option enables support of hashing using SHA1 algorithm.
433           The hash is calculated in software.
434           The SHA1 algorithm produces a 160-bit (20-byte) hash value
435           (digest).
436
437 config SHA256
438         bool "Enable SHA256 support"
439         help
440           This option enables support of hashing using SHA256 algorithm.
441           The hash is calculated in software.
442           The SHA256 algorithm produces a 256-bit (32-byte) hash value
443           (digest).
444
445 config SHA512
446         bool "Enable SHA512 support"
447         help
448           This option enables support of hashing using SHA512 algorithm.
449           The hash is calculated in software.
450           The SHA512 algorithm produces a 512-bit (64-byte) hash value
451           (digest).
452
453 config SHA384
454         bool "Enable SHA384 support"
455         select SHA512
456         help
457           This option enables support of hashing using SHA384 algorithm.
458           The hash is calculated in software. This is also selects SHA512,
459           because these implementations share the bulk of the code..
460           The SHA384 algorithm produces a 384-bit (48-byte) hash value
461           (digest).
462
463 config SHA_HW_ACCEL
464         bool "Enable hardware acceleration for SHA hash functions"
465         help
466           This option enables hardware acceleration for the SHA1 and SHA256
467           hashing algorithms. This affects the 'hash' command and also the
468           hash_lookup_algo() function.
469
470 if SPL
471
472 config SPL_SHA1
473         bool "Enable SHA1 support in SPL"
474         default y if SHA1
475         help
476           This option enables support of hashing using SHA1 algorithm.
477           The hash is calculated in software.
478           The SHA1 algorithm produces a 160-bit (20-byte) hash value
479           (digest).
480
481 config SPL_SHA256
482         bool "Enable SHA256 support in SPL"
483         default y if SHA256
484         help
485           This option enables support of hashing using SHA256 algorithm.
486           The hash is calculated in software.
487           The SHA256 algorithm produces a 256-bit (32-byte) hash value
488           (digest).
489
490 config SPL_SHA512
491         bool "Enable SHA512 support in SPL"
492         default y if SHA512
493         help
494           This option enables support of hashing using SHA512 algorithm.
495           The hash is calculated in software.
496           The SHA512 algorithm produces a 512-bit (64-byte) hash value
497           (digest).
498
499 config SPL_SHA384
500         bool "Enable SHA384 support in SPL"
501         default y if SHA384
502         select SPL_SHA512
503         help
504           This option enables support of hashing using SHA384 algorithm.
505           The hash is calculated in software. This is also selects SHA512,
506           because these implementations share the bulk of the code..
507           The SHA384 algorithm produces a 384-bit (48-byte) hash value
508           (digest).
509
510 config SPL_SHA_HW_ACCEL
511         bool "Enable hardware acceleration for SHA hash functions"
512         default y if SHA_HW_ACCEL
513         help
514           This option enables hardware acceleration for the SHA1 and SHA256
515           hashing algorithms. This affects the 'hash' command and also the
516           hash_lookup_algo() function.
517
518 config SPL_SHA_PROG_HW_ACCEL
519         bool "Enable Progressive hashing support using hardware in SPL"
520         depends on SHA_PROG_HW_ACCEL
521         default y
522         help
523           This option enables hardware-acceleration for SHA progressive
524           hashing.
525           Data can be streamed in a block at a time and the hashing is
526           performed in hardware.
527
528 endif
529
530 if SHA_HW_ACCEL
531
532 config SHA512_HW_ACCEL
533         bool "Enable hardware acceleration for SHA512"
534         depends on SHA512
535         help
536           This option enables hardware acceleration for the SHA384 and SHA512
537           hashing algorithms. This affects the 'hash' command and also the
538           hash_lookup_algo() function.
539
540 config SHA_PROG_HW_ACCEL
541         bool "Enable Progressive hashing support using hardware"
542         help
543           This option enables hardware-acceleration for SHA progressive
544           hashing.
545           Data can be streamed in a block at a time and the hashing is
546           performed in hardware.
547
548 endif
549
550 config MD5
551         bool "Support MD5 algorithm"
552         help
553           This option enables MD5 support. MD5 is an algorithm designed
554           in 1991 that produces a 16-byte digest (or checksum) from its input
555           data. It has a number of vulnerabilities which preclude its use in
556           security applications, but it can be useful for providing a quick
557           checksum of a block of data.
558
559 config SPL_MD5
560         bool "Support MD5 algorithm in SPL"
561         depends on SPL
562         help
563           This option enables MD5 support in SPL. MD5 is an algorithm designed
564           in 1991 that produces a 16-byte digest (or checksum) from its input
565           data. It has a number of vulnerabilities which preclude its use in
566           security applications, but it can be useful for providing a quick
567           checksum of a block of data.
568
569 config CRC32
570         def_bool y
571         help
572           Enables CRC32 support in U-Boot. This is normally required.
573
574 config CRC32C
575         bool
576
577 config XXHASH
578         bool
579
580 endmenu
581
582 menu "Compression Support"
583
584 config LZ4
585         bool "Enable LZ4 decompression support"
586         help
587           If this option is set, support for LZ4 compressed images
588           is included. The LZ4 algorithm can run in-place as long as the
589           compressed image is loaded to the end of the output buffer, and
590           trades lower compression ratios for much faster decompression.
591
592           NOTE: This implements the release version of the LZ4 frame
593           format as generated by default by the 'lz4' command line tool.
594           This is not the same as the outdated, less efficient legacy
595           frame format currently (2015) implemented in the Linux kernel
596           (generated by 'lz4 -l'). The two formats are incompatible.
597
598 config LZMA
599         bool "Enable LZMA decompression support"
600         help
601           This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
602           a dictionary compression algorithm that provides a high compression
603           ratio and fairly fast decompression speed. See also
604           CONFIG_CMD_LZMADEC which provides a decode command.
605
606 config LZO
607         bool "Enable LZO decompression support"
608         help
609           This enables support for the LZO compression algorithm.
610
611 config GZIP
612         bool "Enable gzip decompression support"
613         select ZLIB
614         default y
615         help
616           This enables support for GZIP compression algorithm.
617
618 config ZLIB_UNCOMPRESS
619         bool "Enables zlib's uncompress() functionality"
620         help
621           This enables an extra zlib functionality: the uncompress() function,
622           which decompresses data from a buffer into another, knowing their
623           sizes. Unlike gunzip(), there is no header parsing.
624
625 config GZIP_COMPRESSED
626         bool
627         select ZLIB
628
629 config BZIP2
630         bool "Enable bzip2 decompression support"
631         help
632           This enables support for BZIP2 compression algorithm.
633
634 config ZLIB
635         bool
636         default y
637         help
638           This enables ZLIB compression lib.
639
640 config ZSTD
641         bool "Enable Zstandard decompression support"
642         select XXHASH
643         help
644           This enables Zstandard decompression library.
645
646 config SPL_LZ4
647         bool "Enable LZ4 decompression support in SPL"
648         depends on SPL
649         help
650           This enables support for the LZ4 decompression algorithm in SPL. LZ4
651           is a lossless data compression algorithm that is focused on
652           fast compression and decompression speed. It belongs to the LZ77
653           family of byte-oriented compression schemes.
654
655 config SPL_LZMA
656         bool "Enable LZMA decompression support for SPL build"
657         depends on SPL
658         help
659           This enables support for LZMA compression algorithm for SPL boot.
660
661 config VPL_LZMA
662         bool "Enable LZMA decompression support for VPL build"
663         default y if LZMA
664         help
665           This enables support for LZMA compression algorithm for VPL boot.
666
667 config SPL_LZO
668         bool "Enable LZO decompression support in SPL"
669         depends on SPL
670         help
671           This enables support for LZO compression algorithm in the SPL.
672
673 config SPL_GZIP
674         bool "Enable gzip decompression support for SPL build"
675         select SPL_ZLIB
676         help
677           This enables support for the GZIP compression algorithm for SPL boot.
678
679 config SPL_ZLIB
680         bool
681         help
682           This enables compression lib for SPL boot.
683
684 config SPL_ZSTD
685         bool "Enable Zstandard decompression support in SPL"
686         depends on SPL
687         select XXHASH
688         help
689           This enables Zstandard decompression library in the SPL.
690
691 endmenu
692
693 config ERRNO_STR
694         bool "Enable function for getting errno-related string message"
695         help
696           The function errno_str(int errno), returns a pointer to the errno
697           corresponding text message:
698           - if errno is null or positive number - a pointer to "Success" message
699           - if errno is negative - a pointer to errno related message
700
701 config HEXDUMP
702         bool "Enable hexdump"
703         help
704           This enables functions for printing dumps of binary data.
705
706 config SPL_HEXDUMP
707         bool "Enable hexdump in SPL"
708         depends on SPL && HEXDUMP
709         help
710           This enables functions for printing dumps of binary data in
711           SPL.
712
713 config GETOPT
714         bool "Enable getopt"
715         help
716           This enables functions for parsing command-line options.
717
718 config OF_LIBFDT
719         bool "Enable the FDT library"
720         default y if OF_CONTROL
721         help
722           This enables the FDT library (libfdt). It provides functions for
723           accessing binary device tree images in memory, such as adding and
724           removing nodes and properties, scanning through the tree and finding
725           particular compatible nodes. The library operates on a flattened
726           version of the device tree.
727
728 config OF_LIBFDT_ASSUME_MASK
729         hex "Mask of conditions to assume for libfdt"
730         depends on OF_LIBFDT || FIT
731         default 0
732         help
733           Use this to change the assumptions made by libfdt about the
734           device tree it is working with. A value of 0 means that no assumptions
735           are made, and libfdt is able to deal with malicious data. A value of
736           0xff means all assumptions are made and any invalid data may cause
737           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
738
739 config OF_LIBFDT_OVERLAY
740         bool "Enable the FDT library overlay support"
741         depends on OF_LIBFDT
742         default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
743         help
744           This enables the FDT library (libfdt) overlay support.
745
746 config SPL_OF_LIBFDT
747         bool "Enable the FDT library for SPL"
748         depends on SPL_LIBGENERIC_SUPPORT
749         default y if SPL_OF_CONTROL
750         help
751           This enables the FDT library (libfdt). It provides functions for
752           accessing binary device tree images in memory, such as adding and
753           removing nodes and properties, scanning through the tree and finding
754           particular compatible nodes. The library operates on a flattened
755           version of the device tree.
756
757 config SPL_OF_LIBFDT_ASSUME_MASK
758         hex "Mask of conditions to assume for libfdt"
759         depends on SPL_OF_LIBFDT || (FIT && SPL)
760         default 0xff
761         help
762           Use this to change the assumptions made by libfdt in SPL about the
763           device tree it is working with. A value of 0 means that no assumptions
764           are made, and libfdt is able to deal with malicious data. A value of
765           0xff means all assumptions are made and any invalid data may cause
766           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
767
768 config TPL_OF_LIBFDT
769         bool "Enable the FDT library for TPL"
770         depends on TPL_LIBGENERIC_SUPPORT
771         default y if TPL_OF_CONTROL
772         help
773           This enables the FDT library (libfdt). It provides functions for
774           accessing binary device tree images in memory, such as adding and
775           removing nodes and properties, scanning through the tree and finding
776           particular compatible nodes. The library operates on a flattened
777           version of the device tree.
778
779 config TPL_OF_LIBFDT_ASSUME_MASK
780         hex "Mask of conditions to assume for libfdt"
781         depends on TPL_OF_LIBFDT || (FIT && TPL)
782         default 0xff
783         help
784           Use this to change the assumptions made by libfdt in TPL about the
785           device tree it is working with. A value of 0 means that no assumptions
786           are made, and libfdt is able to deal with malicious data. A value of
787           0xff means all assumptions are made and any invalid data may cause
788           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
789
790 config VPL_OF_LIBFDT
791         bool "Enable the FDT library for VPL"
792         depends on VPL
793         default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
794         help
795           This enables the FDT library (libfdt). It provides functions for
796           accessing binary device tree images in memory, such as adding and
797           removing nodes and properties, scanning through the tree and finding
798           particular compatible nodes. The library operates on a flattened
799           version of the device tree.
800
801 config VPL_OF_LIBFDT_ASSUME_MASK
802         hex "Mask of conditions to assume for libfdt"
803         depends on VPL_OF_LIBFDT || (FIT && VPL)
804         default 0xff
805         help
806           Use this to change the assumptions made by libfdt in SPL about the
807           device tree it is working with. A value of 0 means that no assumptions
808           are made, and libfdt is able to deal with malicious data. A value of
809           0xff means all assumptions are made and any invalid data may cause
810           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
811
812 config FDT_FIXUP_PARTITIONS
813         bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
814         depends on OF_LIBFDT
815         depends on CMD_MTDPARTS
816         help
817           Allow overwriting defined partitions in the device tree blob
818           using partition info defined in the 'mtdparts' environment
819           variable.
820
821 menu "System tables"
822         depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
823
824 config BLOBLIST_TABLES
825         bool "Put tables in a bloblist"
826         depends on X86 && BLOBLIST
827         help
828           Normally tables are placed at address 0xf0000 and can be up to 64KB
829           long. With this option, tables are instead placed in the bloblist
830           with a pointer from 0xf0000. The size can then be larger and the
831           tables can be placed high in memory.
832
833 config GENERATE_SMBIOS_TABLE
834         bool "Generate an SMBIOS (System Management BIOS) table"
835         default y
836         depends on X86 || EFI_LOADER
837         help
838           The System Management BIOS (SMBIOS) specification addresses how
839           motherboard and system vendors present management information about
840           their products in a standard format by extending the BIOS interface
841           on Intel architecture systems.
842
843           Check http://www.dmtf.org/standards/smbios for details.
844
845           See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
846           the devicetree.
847
848 config LIB_RATIONAL
849         bool "enable continued fraction calculation routines"
850
851 config SPL_LIB_RATIONAL
852         bool "enable continued fraction calculation routines for SPL"
853         depends on SPL
854
855 endmenu
856
857 config ASN1_COMPILER
858         bool
859         help
860           ASN.1 (Abstract Syntax Notation One) is a standard interface
861           description language for defining data structures that can be
862           serialized and deserialized in a cross-platform way. It is
863           broadly used in telecommunications and computer networking,
864           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
865           This option enables the support of the asn1 compiler.
866
867 config ASN1_DECODER
868         bool
869         help
870           ASN.1 (Abstract Syntax Notation One) is a standard interface
871           description language for defining data structures that can be
872           serialized and deserialized in a cross-platform way. It is
873           broadly used in telecommunications and computer networking,
874           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
875           This option enables the support of the asn1 decoder.
876
877 config SPL_ASN1_DECODER
878         bool
879         help
880           ASN.1 (Abstract Syntax Notation One) is a standard interface
881           description language for defining data structures that can be
882           serialized and deserialized in a cross-platform way. It is
883           broadly used in telecommunications and computer networking,
884           and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
885           This option enables the support of the asn1 decoder in the SPL.
886
887 config OID_REGISTRY
888         bool
889         help
890           In computing, object identifiers or OIDs are an identifier mechanism
891           standardized by the International Telecommunication Union (ITU) and
892           ISO/IEC for naming any object, concept, or "thing" with a globally
893           unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
894           Enable fast lookup object identifier registry.
895
896 config SPL_OID_REGISTRY
897         bool
898         help
899           In computing, object identifiers or OIDs are an identifier mechanism
900           standardized by the International Telecommunication Union (ITU) and
901           ISO/IEC for naming any object, concept, or "thing" with a globally
902           unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
903           Enable fast lookup object identifier registry in the SPL.
904
905 config SMBIOS_PARSER
906         bool "SMBIOS parser"
907         help
908           A simple parser for SMBIOS data.
909
910 source lib/efi/Kconfig
911 source lib/efi_loader/Kconfig
912 source lib/optee/Kconfig
913
914 config TEST_FDTDEC
915         bool "enable fdtdec test"
916         depends on OF_LIBFDT
917
918 config LIB_DATE
919         bool
920
921 config LIB_ELF
922         bool
923         help
924           Support basic elf loading/validating functions.
925           This supports for 32 bit and 64 bit versions.
926
927 config LMB
928         bool "Enable the logical memory blocks library (lmb)"
929         default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
930                      NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
931         help
932           Support the library logical memory blocks.
933
934 config LMB_USE_MAX_REGIONS
935         bool "Use a common number of memory and reserved regions in lmb lib"
936         depends on LMB
937         default y
938         help
939           Define the number of supported memory regions in the library logical
940           memory blocks.
941           This feature allow to reduce the lmb library size by using compiler
942           optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
943
944 config LMB_MAX_REGIONS
945         int "Number of memory and reserved regions in lmb lib"
946         depends on LMB && LMB_USE_MAX_REGIONS
947         default 8
948         help
949           Define the number of supported regions, memory and reserved, in the
950           library logical memory blocks.
951
952 config LMB_MEMORY_REGIONS
953         int "Number of memory regions in lmb lib"
954         depends on LMB && !LMB_USE_MAX_REGIONS
955         default 8
956         help
957           Define the number of supported memory regions in the library logical
958           memory blocks.
959           The minimal value is CONFIG_NR_DRAM_BANKS.
960
961 config LMB_RESERVED_REGIONS
962         int "Number of reserved regions in lmb lib"
963         depends on LMB && !LMB_USE_MAX_REGIONS
964         default 8
965         help
966           Define the number of supported reserved regions in the library logical
967           memory blocks.
968
969 endmenu