lmb: move MAX_LMB_REGIONS value in 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 BCH
19         bool "Enable Software based BCH ECC"
20         help
21           Enables software based BCH ECC algorithm present in lib/bch.c
22           This is used by SoC platforms which do not have built-in ELM
23           hardware engine required for BCH ECC correction.
24
25 config BINMAN_FDT
26         bool "Allow access to binman information in the device tree"
27         depends on BINMAN && DM && OF_CONTROL
28         default y
29         help
30           This enables U-Boot to access information about binman entries,
31           stored in the device tree in a binman node. Typical uses are to
32           locate entries in the firmware image. See binman.h for the available
33           functionality.
34
35 config CC_OPTIMIZE_LIBS_FOR_SPEED
36         bool "Optimize libraries for speed"
37         help
38           Enabling this option will pass "-O2" to gcc when compiling
39           under "lib" directory.
40
41           If unsure, say N.
42
43 config DYNAMIC_CRC_TABLE
44         bool "Enable Dynamic tables for CRC"
45         help
46           Enable this option to calculate entries for CRC tables at runtime.
47           This can be helpful when reducing the size of the build image
48
49 config HAVE_ARCH_IOMAP
50         bool
51         help
52           Enable this option if architecture provides io{read,write}{8,16,32}
53           I/O accessor functions.
54
55 config HAVE_PRIVATE_LIBGCC
56         bool
57
58 config LIB_UUID
59         bool
60
61 config PRINTF
62         bool
63         default y
64
65 config SPL_PRINTF
66         bool
67         select SPL_SPRINTF
68         select SPL_STRTO if !SPL_USE_TINY_PRINTF
69
70 config TPL_PRINTF
71         bool
72         select TPL_SPRINTF
73         select TPL_STRTO if !TPL_USE_TINY_PRINTF
74
75 config SPRINTF
76         bool
77         default y
78
79 config SPL_SPRINTF
80         bool
81
82 config TPL_SPRINTF
83         bool
84
85 config SSCANF
86         bool
87         default n
88
89 config STRTO
90         bool
91         default y
92
93 config SPL_STRTO
94         bool
95
96 config TPL_STRTO
97         bool
98
99 config IMAGE_SPARSE
100         bool
101
102 config IMAGE_SPARSE_FILLBUF_SIZE
103         hex "Android sparse image CHUNK_TYPE_FILL buffer size"
104         default 0x80000
105         depends on IMAGE_SPARSE
106         help
107           Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
108           chunks.
109
110 config USE_PRIVATE_LIBGCC
111         bool "Use private libgcc"
112         depends on HAVE_PRIVATE_LIBGCC
113         default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
114         help
115           This option allows you to use the built-in libgcc implementation
116           of U-Boot instead of the one provided by the compiler.
117           If unsure, say N.
118
119 config SYS_HZ
120         int
121         default 1000
122         help
123           The frequency of the timer returned by get_timer().
124           get_timer() must operate in milliseconds and this option must be
125           set to 1000.
126
127 config SPL_USE_TINY_PRINTF
128         bool "Enable tiny printf() version in SPL"
129         depends on SPL
130         default y
131         help
132           This option enables a tiny, stripped down printf version.
133           This should only be used in space limited environments,
134           like SPL versions with hard memory limits. This version
135           reduces the code size by about 2.5KiB on armv7.
136
137           The supported format specifiers are %c, %s, %u/%d and %x.
138
139 config TPL_USE_TINY_PRINTF
140         bool "Enable tiny printf() version in TPL"
141         depends on TPL
142         default y if SPL_USE_TINY_PRINTF
143         help
144           This option enables a tiny, stripped down printf version.
145           This should only be used in space limited environments,
146           like SPL versions with hard memory limits. This version
147           reduces the code size by about 2.5KiB on armv7.
148
149           The supported format specifiers are %c, %s, %u/%d and %x.
150
151 config PANIC_HANG
152         bool "Do not reset the system on fatal error"
153         help
154           Define this option to stop the system in case of a fatal error,
155           so that you have to reset it manually. This is probably NOT a good
156           idea for an embedded system where you want the system to reboot
157           automatically as fast as possible, but it may be useful during
158           development since you can try to debug the conditions that lead to
159           the situation.
160
161 config REGEX
162         bool "Enable regular expression support"
163         default y if NET
164         help
165           If this variable is defined, U-Boot is linked against the
166           SLRE (Super Light Regular Expression) library, which adds
167           regex support to some commands, for example "env grep" and
168           "setexpr".
169
170 choice
171         prompt "Pseudo-random library support type"
172         depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
173                    RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
174         default LIB_RAND
175         help
176           Select the library to provide pseudo-random number generator
177           functions.  LIB_HW_RAND supports certain hardware engines that
178           provide this functionality.  If in doubt, select LIB_RAND.
179
180 config LIB_RAND
181         bool "Pseudo-random library support"
182
183 config LIB_HW_RAND
184         bool "HW Engine for random library support"
185
186 endchoice
187
188 config SPL_TINY_MEMSET
189         bool "Use a very small memset() in SPL"
190         help
191           The faster memset() is the arch-specific one (if available) enabled
192           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
193           better performance by writing a word at a time. But in very
194           size-constrained environments even this may be too big. Enable this
195           option to reduce code size slightly at the cost of some speed.
196
197 config TPL_TINY_MEMSET
198         bool "Use a very small memset() in TPL"
199         help
200           The faster memset() is the arch-specific one (if available) enabled
201           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
202           better performance by writing a word at a time. But in very
203           size-constrained environments even this may be too big. Enable this
204           option to reduce code size slightly at the cost of some speed.
205
206 config RBTREE
207         bool
208
209 config BITREVERSE
210         bool "Bit reverse library from Linux"
211
212 config TRACE
213         bool "Support for tracing of function calls and timing"
214         imply CMD_TRACE
215         select TIMER_EARLY
216         help
217           Enables function tracing within U-Boot. This allows recording of call
218           traces including timing information. The command can write data to
219           memory for exporting for analysis (e.g. using bootchart).
220           See doc/README.trace for full details.
221
222 config TRACE_BUFFER_SIZE
223         hex "Size of trace buffer in U-Boot"
224         depends on TRACE
225         default 0x01000000
226         help
227           Sets the size of the trace buffer in U-Boot. This is allocated from
228           memory during relocation. If this buffer is too small, the trace
229           history will be truncated, with later records omitted.
230
231           If early trace is enabled (i.e. before relocation), this buffer must
232           be large enough to include all the data from the early trace buffer as
233           well, since this is copied over to the main buffer during relocation.
234
235           A trace record is emitted for each function call and each record is
236           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
237           the size is too small then 'trace stats' will show a message saying
238           how many records were dropped due to buffer overflow.
239
240 config TRACE_CALL_DEPTH_LIMIT
241         int "Trace call depth limit"
242         depends on TRACE
243         default 15
244         help
245           Sets the maximum call depth up to which function calls are recorded.
246
247 config TRACE_EARLY
248         bool "Enable tracing before relocation"
249         depends on TRACE
250         help
251           Sometimes it is helpful to trace execution of U-Boot before
252           relocation. This is possible by using a arch-specific, fixed buffer
253           position in memory. Enable this option to start tracing as early as
254           possible after U-Boot starts.
255
256 config TRACE_EARLY_SIZE
257         hex "Size of early trace buffer in U-Boot"
258         depends on TRACE_EARLY
259         default 0x00100000
260         help
261           Sets the size of the early trace buffer in bytes. This is used to hold
262           tracing information before relocation.
263
264 config TRACE_EARLY_CALL_DEPTH_LIMIT
265         int "Early trace call depth limit"
266         depends on TRACE_EARLY
267         default 200
268         help
269           Sets the maximum call depth up to which function calls are recorded
270           during early tracing.
271
272 config TRACE_EARLY_ADDR
273         hex "Address of early trace buffer in U-Boot"
274         depends on TRACE_EARLY
275         default 0x00100000
276         help
277           Sets the address of the early trace buffer in U-Boot. This memory
278           must be accessible before relocation.
279
280           A trace record is emitted for each function call and each record is
281           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
282           the size is too small then the message which says the amount of early
283           data being coped will the the same as the
284
285 source lib/dhry/Kconfig
286
287 menu "Security support"
288
289 config AES
290         bool "Support the AES algorithm"
291         help
292           This provides a means to encrypt and decrypt data using the AES
293           (Advanced Encryption Standard). This algorithm uses a symetric key
294           and is widely used as a streaming cipher. Different key lengths are
295           supported by the algorithm but only a 128-bit key is supported at
296           present.
297
298 source lib/rsa/Kconfig
299 source lib/crypto/Kconfig
300
301 config TPM
302         bool "Trusted Platform Module (TPM) Support"
303         depends on DM
304         help
305           This enables support for TPMs which can be used to provide security
306           features for your board. The TPM can be connected via LPC or I2C
307           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
308           command to interactive the TPM. Driver model support is provided
309           for the low-level TPM interface, but only one TPM is supported at
310           a time by the TPM library.
311
312 config SPL_TPM
313         bool "Trusted Platform Module (TPM) Support in SPL"
314         depends on SPL_DM
315         help
316           This enables support for TPMs which can be used to provide security
317           features for your board. The TPM can be connected via LPC or I2C
318           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
319           command to interactive the TPM. Driver model support is provided
320           for the low-level TPM interface, but only one TPM is supported at
321           a time by the TPM library.
322
323 config TPL_TPM
324         bool "Trusted Platform Module (TPM) Support in TPL"
325         depends on TPL_DM
326         help
327           This enables support for TPMs which can be used to provide security
328           features for your board. The TPM can be connected via LPC or I2C
329           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
330           command to interactive the TPM. Driver model support is provided
331           for the low-level TPM interface, but only one TPM is supported at
332           a time by the TPM library.
333
334 endmenu
335
336 menu "Android Verified Boot"
337
338 config LIBAVB
339         bool "Android Verified Boot 2.0 support"
340         depends on ANDROID_BOOT_IMAGE
341         default n
342         help
343           This enables support of Android Verified Boot 2.0 which can be used
344           to assure the end user of the integrity of the software running on a
345           device. Introduces such features as boot chain of trust, rollback
346           protection etc.
347
348 endmenu
349
350 menu "Hashing Support"
351
352 config SHA1
353         bool "Enable SHA1 support"
354         help
355           This option enables support of hashing using SHA1 algorithm.
356           The hash is calculated in software.
357           The SHA1 algorithm produces a 160-bit (20-byte) hash value
358           (digest).
359
360 config SHA256
361         bool "Enable SHA256 support"
362         help
363           This option enables support of hashing using SHA256 algorithm.
364           The hash is calculated in software.
365           The SHA256 algorithm produces a 256-bit (32-byte) hash value
366           (digest).
367
368 config SHA512_ALGO
369         bool "Enable SHA512 algorithm"
370         help
371           This option enables support of internal SHA512 algorithm.
372
373 config SHA512
374         bool "Enable SHA512 support"
375         depends on SHA512_ALGO
376         help
377           This option enables support of hashing using SHA512 algorithm.
378           The hash is calculated in software.
379           The SHA512 algorithm produces a 512-bit (64-byte) hash value
380           (digest).
381
382 config SHA384
383         bool "Enable SHA384 support"
384         depends on SHA512_ALGO
385         help
386           This option enables support of hashing using SHA384 algorithm.
387           The hash is calculated in software.
388           The SHA384 algorithm produces a 384-bit (48-byte) hash value
389           (digest).
390
391 config SHA_HW_ACCEL
392         bool "Enable hashing using hardware"
393         help
394           This option enables hardware acceleration for SHA hashing.
395           This affects the 'hash' command and also the hash_lookup_algo()
396           function.
397
398 config SHA_PROG_HW_ACCEL
399         bool "Enable Progressive hashing support using hardware"
400         depends on SHA_HW_ACCEL
401         help
402           This option enables hardware-acceleration for SHA progressive
403           hashing.
404           Data can be streamed in a block at a time and the hashing is
405           performed in hardware.
406
407 config MD5
408         bool "Support MD5 algorithm"
409         help
410           This option enables MD5 support. MD5 is an algorithm designed
411           in 1991 that produces a 16-byte digest (or checksum) from its input
412           data. It has a number of vulnerabilities which preclude its use in
413           security applications, but it can be useful for providing a quick
414           checksum of a block of data.
415
416 config SPL_MD5
417         bool "Support MD5 algorithm in SPL"
418         help
419           This option enables MD5 support in SPL. MD5 is an algorithm designed
420           in 1991 that produces a 16-byte digest (or checksum) from its input
421           data. It has a number of vulnerabilities which preclude its use in
422           security applications, but it can be useful for providing a quick
423           checksum of a block of data.
424
425 config CRC32C
426         bool
427
428 config XXHASH
429         bool
430
431 endmenu
432
433 menu "Compression Support"
434
435 config LZ4
436         bool "Enable LZ4 decompression support"
437         help
438           If this option is set, support for LZ4 compressed images
439           is included. The LZ4 algorithm can run in-place as long as the
440           compressed image is loaded to the end of the output buffer, and
441           trades lower compression ratios for much faster decompression.
442
443           NOTE: This implements the release version of the LZ4 frame
444           format as generated by default by the 'lz4' command line tool.
445           This is not the same as the outdated, less efficient legacy
446           frame format currently (2015) implemented in the Linux kernel
447           (generated by 'lz4 -l'). The two formats are incompatible.
448
449 config LZMA
450         bool "Enable LZMA decompression support"
451         help
452           This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
453           a dictionary compression algorithm that provides a high compression
454           ratio and fairly fast decompression speed. See also
455           CONFIG_CMD_LZMADEC which provides a decode command.
456
457 config LZO
458         bool "Enable LZO decompression support"
459         help
460           This enables support for LZO compression algorithm.r
461
462 config GZIP
463         bool "Enable gzip decompression support"
464         select ZLIB
465         default y
466         help
467           This enables support for GZIP compression algorithm.
468
469 config ZLIB_UNCOMPRESS
470         bool "Enables zlib's uncompress() functionality"
471         help
472           This enables an extra zlib functionality: the uncompress() function,
473           which decompresses data from a buffer into another, knowing their
474           sizes. Unlike gunzip(), there is no header parsing.
475
476 config GZIP_COMPRESSED
477         bool
478         select ZLIB
479
480 config BZIP2
481         bool "Enable bzip2 decompression support"
482         help
483           This enables support for BZIP2 compression algorithm.
484
485 config ZLIB
486         bool
487         default y
488         help
489           This enables ZLIB compression lib.
490
491 config ZSTD
492         bool "Enable Zstandard decompression support"
493         select XXHASH
494         help
495           This enables Zstandard decompression library.
496
497 config SPL_LZ4
498         bool "Enable LZ4 decompression support in SPL"
499         help
500           This enables support for the LZ4 decompression algorithm in SPL. LZ4
501           is a lossless data compression algorithm that is focused on
502           fast compression and decompression speed. It belongs to the LZ77
503           family of byte-oriented compression schemes.
504
505 config SPL_LZMA
506         bool "Enable LZMA decompression support for SPL build"
507         help
508           This enables support for LZMA compression algorithm for SPL boot.
509
510 config SPL_LZO
511         bool "Enable LZO decompression support in SPL"
512         help
513           This enables support for LZO compression algorithm in the SPL.
514
515 config SPL_GZIP
516         bool "Enable gzip decompression support for SPL build"
517         select SPL_ZLIB
518         help
519           This enables support for GZIP compression altorithm for SPL boot.
520
521 config SPL_ZLIB
522         bool
523         help
524           This enables compression lib for SPL boot.
525
526 config SPL_ZSTD
527         bool "Enable Zstandard decompression support in SPL"
528         select XXHASH
529         help
530           This enables Zstandard decompression library in the SPL.
531
532 endmenu
533
534 config ERRNO_STR
535         bool "Enable function for getting errno-related string message"
536         help
537           The function errno_str(int errno), returns a pointer to the errno
538           corresponding text message:
539           - if errno is null or positive number - a pointer to "Success" message
540           - if errno is negative - a pointer to errno related message
541
542 config HEXDUMP
543         bool "Enable hexdump"
544         help
545           This enables functions for printing dumps of binary data.
546
547 config SPL_HEXDUMP
548         bool "Enable hexdump in SPL"
549         depends on HEXDUMP
550         default y
551         help
552           This enables functions for printing dumps of binary data in
553           SPL.
554
555 config GETOPT
556         bool "Enable getopt"
557         help
558           This enables functions for parsing command-line options.
559
560 config OF_LIBFDT
561         bool "Enable the FDT library"
562         default y if OF_CONTROL
563         help
564           This enables the FDT library (libfdt). It provides functions for
565           accessing binary device tree images in memory, such as adding and
566           removing nodes and properties, scanning through the tree and finding
567           particular compatible nodes. The library operates on a flattened
568           version of the device tree.
569
570 config OF_LIBFDT_ASSUME_MASK
571         hex "Mask of conditions to assume for libfdt"
572         depends on OF_LIBFDT || FIT
573         default 0
574         help
575           Use this to change the assumptions made by libfdt about the
576           device tree it is working with. A value of 0 means that no assumptions
577           are made, and libfdt is able to deal with malicious data. A value of
578           0xff means all assumptions are made and any invalid data may cause
579           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
580
581 config OF_LIBFDT_OVERLAY
582         bool "Enable the FDT library overlay support"
583         depends on OF_LIBFDT
584         default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
585         help
586           This enables the FDT library (libfdt) overlay support.
587
588 config SPL_OF_LIBFDT
589         bool "Enable the FDT library for SPL"
590         default y if SPL_OF_CONTROL
591         help
592           This enables the FDT library (libfdt). It provides functions for
593           accessing binary device tree images in memory, such as adding and
594           removing nodes and properties, scanning through the tree and finding
595           particular compatible nodes. The library operates on a flattened
596           version of the device tree.
597
598 config SPL_OF_LIBFDT_ASSUME_MASK
599         hex "Mask of conditions to assume for libfdt"
600         depends on SPL_OF_LIBFDT || FIT
601         default 0xff
602         help
603           Use this to change the assumptions made by libfdt in SPL about the
604           device tree it is working with. A value of 0 means that no assumptions
605           are made, and libfdt is able to deal with malicious data. A value of
606           0xff means all assumptions are made and any invalid data may cause
607           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
608
609 config TPL_OF_LIBFDT
610         bool "Enable the FDT library for TPL"
611         default y if TPL_OF_CONTROL
612         help
613           This enables the FDT library (libfdt). It provides functions for
614           accessing binary device tree images in memory, such as adding and
615           removing nodes and properties, scanning through the tree and finding
616           particular compatible nodes. The library operates on a flattened
617           version of the device tree.
618
619 config TPL_OF_LIBFDT_ASSUME_MASK
620         hex "Mask of conditions to assume for libfdt"
621         depends on TPL_OF_LIBFDT || FIT
622         default 0xff
623         help
624           Use this to change the assumptions made by libfdt in TPL about the
625           device tree it is working with. A value of 0 means that no assumptions
626           are made, and libfdt is able to deal with malicious data. A value of
627           0xff means all assumptions are made and any invalid data may cause
628           unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
629
630 config FDT_FIXUP_PARTITIONS
631         bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
632         depends on OF_LIBFDT
633         depends on CMD_MTDPARTS
634         help
635           Allow overwriting defined partitions in the device tree blob
636           using partition info defined in the 'mtdparts' environment
637           variable.
638
639 menu "System tables"
640         depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
641
642 config BLOBLIST_TABLES
643         bool "Put tables in a bloblist"
644         depends on X86 && BLOBLIST
645         help
646           Normally tables are placed at address 0xf0000 and can be up to 64KB
647           long. With this option, tables are instead placed in the bloblist
648           with a pointer from 0xf0000. The size can then be larger and the
649           tables can be placed high in memory.
650
651 config GENERATE_SMBIOS_TABLE
652         bool "Generate an SMBIOS (System Management BIOS) table"
653         default y
654         depends on X86 || EFI_LOADER
655         help
656           The System Management BIOS (SMBIOS) specification addresses how
657           motherboard and system vendors present management information about
658           their products in a standard format by extending the BIOS interface
659           on Intel architecture systems.
660
661           Check http://www.dmtf.org/standards/smbios for details.
662
663           See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
664           the devicetree.
665
666 endmenu
667
668 config ASN1_COMPILER
669         bool
670
671 config ASN1_DECODER
672         bool
673         help
674           Enable asn1 decoder library.
675
676 config OID_REGISTRY
677         bool
678         help
679           Enable fast lookup object identifier registry.
680
681 config SMBIOS_PARSER
682         bool "SMBIOS parser"
683         help
684           A simple parser for SMBIOS data.
685
686 source lib/efi/Kconfig
687 source lib/efi_loader/Kconfig
688 source lib/optee/Kconfig
689
690 config TEST_FDTDEC
691         bool "enable fdtdec test"
692         depends on OF_LIBFDT
693
694 config LIB_DATE
695         bool
696
697 config LIB_ELF
698         bool
699         help
700           Support basic elf loading/validating functions.
701           This supports for 32 bit and 64 bit versions.
702
703 config LMB
704         bool "Enable the logical memory blocks library (lmb)"
705         default y if ARC || ARM || M68K || MICROBLAZE || MIPS || NDS32 || \
706                      NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
707         help
708           Support the library logical memory blocks.
709
710
711 config LMB_MAX_REGIONS
712         int "Number of memory and reserved regions in lmb lib"
713         depends on LMB
714         default 8
715         help
716           Define the number of supported regions, memory and reserved, in the
717           library logical memory blocks.
718 endmenu
719
720 config PHANDLE_CHECK_SEQ
721         bool "Enable phandle check while getting sequence number"
722         default n
723         help
724           When there are multiple device tree nodes with same name,
725           enable this config option to distinguish them using
726           phandles in fdtdec_get_alias_seq() function.