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