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