1menu "Library routines"
2
3config 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
11config 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
18config 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
25config 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
35config 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
43config 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
49config 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
55config HAVE_PRIVATE_LIBGCC
56	bool
57
58config LIB_UUID
59	bool
60
61config PRINTF
62	bool
63	default y
64
65config SPL_PRINTF
66	bool
67	select SPL_SPRINTF
68	select SPL_STRTO if !SPL_USE_TINY_PRINTF
69
70config TPL_PRINTF
71	bool
72	select TPL_SPRINTF
73	select TPL_STRTO if !TPL_USE_TINY_PRINTF
74
75config SPRINTF
76	bool
77	default y
78
79config SPL_SPRINTF
80	bool
81
82config TPL_SPRINTF
83	bool
84
85config SSCANF
86	bool
87	default n
88
89config STRTO
90	bool
91	default y
92
93config SPL_STRTO
94	bool
95
96config TPL_STRTO
97	bool
98
99config IMAGE_SPARSE
100	bool
101
102config 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
110config 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
119config 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
127config 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
139config 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
151config 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
161config 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
170choice
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
180config LIB_RAND
181	bool "Pseudo-random library support"
182
183config LIB_HW_RAND
184	bool "HW Engine for random library support"
185
186endchoice
187
188config 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
197config 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
206config RBTREE
207	bool
208
209config BITREVERSE
210	bool "Bit reverse library from Linux"
211
212config 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
222config 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
240config 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
247config 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
256config 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
264config 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
272config 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
285source lib/dhry/Kconfig
286
287menu "Security support"
288
289config 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
298source lib/rsa/Kconfig
299source lib/crypto/Kconfig
300
301config 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
312config 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
323config 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
334endmenu
335
336menu "Android Verified Boot"
337
338config 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
348endmenu
349
350menu "Hashing Support"
351
352config 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
360config 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
368config SHA512_ALGO
369	bool "Enable SHA512 algorithm"
370	help
371	  This option enables support of internal SHA512 algorithm.
372
373config 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
382config 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
391config SHA_HW_ACCEL
392	bool "Enable hashing using hardware"
393	help
394	  This option enables hardware acceleration
395	  for SHA1/SHA256 hashing.
396	  This affects the 'hash' command and also the
397	  hash_lookup_algo() function.
398
399config SHA_PROG_HW_ACCEL
400	bool "Enable Progressive hashing support using hardware"
401	depends on SHA_HW_ACCEL
402	help
403	  This option enables hardware-acceleration for
404	  SHA1/SHA256 progressive hashing.
405	  Data can be streamed in a block at a time and the hashing
406	  is performed in hardware.
407
408config MD5
409	bool "Support MD5 algorithm"
410	help
411	  This option enables MD5 support. MD5 is an algorithm designed
412	  in 1991 that produces a 16-byte digest (or checksum) from its input
413	  data. It has a number of vulnerabilities which preclude its use in
414	  security applications, but it can be useful for providing a quick
415	  checksum of a block of data.
416
417config SPL_MD5
418	bool "Support MD5 algorithm in SPL"
419	help
420	  This option enables MD5 support in SPL. MD5 is an algorithm designed
421	  in 1991 that produces a 16-byte digest (or checksum) from its input
422	  data. It has a number of vulnerabilities which preclude its use in
423	  security applications, but it can be useful for providing a quick
424	  checksum of a block of data.
425
426config CRC32C
427	bool
428
429config XXHASH
430	bool
431
432endmenu
433
434menu "Compression Support"
435
436config LZ4
437	bool "Enable LZ4 decompression support"
438	help
439	  If this option is set, support for LZ4 compressed images
440	  is included. The LZ4 algorithm can run in-place as long as the
441	  compressed image is loaded to the end of the output buffer, and
442	  trades lower compression ratios for much faster decompression.
443
444	  NOTE: This implements the release version of the LZ4 frame
445	  format as generated by default by the 'lz4' command line tool.
446	  This is not the same as the outdated, less efficient legacy
447	  frame format currently (2015) implemented in the Linux kernel
448	  (generated by 'lz4 -l'). The two formats are incompatible.
449
450config LZMA
451	bool "Enable LZMA decompression support"
452	help
453	  This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
454	  a dictionary compression algorithm that provides a high compression
455	  ratio and fairly fast decompression speed. See also
456	  CONFIG_CMD_LZMADEC which provides a decode command.
457
458config LZO
459	bool "Enable LZO decompression support"
460	help
461	  This enables support for LZO compression algorithm.r
462
463config GZIP
464	bool "Enable gzip decompression support"
465	select ZLIB
466	default y
467	help
468	  This enables support for GZIP compression algorithm.
469
470config ZLIB_UNCOMPRESS
471	bool "Enables zlib's uncompress() functionality"
472	help
473	  This enables an extra zlib functionality: the uncompress() function,
474	  which decompresses data from a buffer into another, knowing their
475	  sizes. Unlike gunzip(), there is no header parsing.
476
477config GZIP_COMPRESSED
478	bool
479	select ZLIB
480
481config BZIP2
482	bool "Enable bzip2 decompression support"
483	help
484	  This enables support for BZIP2 compression algorithm.
485
486config ZLIB
487	bool
488	default y
489	help
490	  This enables ZLIB compression lib.
491
492config ZSTD
493	bool "Enable Zstandard decompression support"
494	select XXHASH
495	help
496	  This enables Zstandard decompression library.
497
498config SPL_LZ4
499	bool "Enable LZ4 decompression support in SPL"
500	help
501	  This enables support for the LZ4 decompression algorithm in SPL. LZ4
502	  is a lossless data compression algorithm that is focused on
503	  fast compression and decompression speed. It belongs to the LZ77
504	  family of byte-oriented compression schemes.
505
506config SPL_LZMA
507	bool "Enable LZMA decompression support for SPL build"
508	help
509	  This enables support for LZMA compression algorithm for SPL boot.
510
511config SPL_LZO
512	bool "Enable LZO decompression support in SPL"
513	help
514	  This enables support for LZO compression algorithm in the SPL.
515
516config SPL_GZIP
517	bool "Enable gzip decompression support for SPL build"
518	select SPL_ZLIB
519	help
520	  This enables support for GZIP compression altorithm for SPL boot.
521
522config SPL_ZLIB
523	bool
524	help
525	  This enables compression lib for SPL boot.
526
527config SPL_ZSTD
528	bool "Enable Zstandard decompression support in SPL"
529	select XXHASH
530	help
531	  This enables Zstandard decompression library in the SPL.
532
533endmenu
534
535config ERRNO_STR
536	bool "Enable function for getting errno-related string message"
537	help
538	  The function errno_str(int errno), returns a pointer to the errno
539	  corresponding text message:
540	  - if errno is null or positive number - a pointer to "Success" message
541	  - if errno is negative - a pointer to errno related message
542
543config HEXDUMP
544	bool "Enable hexdump"
545	help
546	  This enables functions for printing dumps of binary data.
547
548config SPL_HEXDUMP
549	bool "Enable hexdump in SPL"
550	depends on HEXDUMP
551	default y
552	help
553	  This enables functions for printing dumps of binary data in
554	  SPL.
555
556config GETOPT
557	bool "Enable getopt"
558	help
559	  This enables functions for parsing command-line options.
560
561config OF_LIBFDT
562	bool "Enable the FDT library"
563	default y if OF_CONTROL
564	help
565	  This enables the FDT library (libfdt). It provides functions for
566	  accessing binary device tree images in memory, such as adding and
567	  removing nodes and properties, scanning through the tree and finding
568	  particular compatible nodes. The library operates on a flattened
569	  version of the device tree.
570
571config OF_LIBFDT_ASSUME_MASK
572	hex "Mask of conditions to assume for libfdt"
573	depends on OF_LIBFDT || FIT
574	default 0
575	help
576	  Use this to change the assumptions made by libfdt about the
577	  device tree it is working with. A value of 0 means that no assumptions
578	  are made, and libfdt is able to deal with malicious data. A value of
579	  0xff means all assumptions are made and any invalid data may cause
580	  unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
581
582config OF_LIBFDT_OVERLAY
583	bool "Enable the FDT library overlay support"
584	depends on OF_LIBFDT
585	default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
586	help
587	  This enables the FDT library (libfdt) overlay support.
588
589config SPL_OF_LIBFDT
590	bool "Enable the FDT library for SPL"
591	default y if SPL_OF_CONTROL
592	help
593	  This enables the FDT library (libfdt). It provides functions for
594	  accessing binary device tree images in memory, such as adding and
595	  removing nodes and properties, scanning through the tree and finding
596	  particular compatible nodes. The library operates on a flattened
597	  version of the device tree.
598
599config SPL_OF_LIBFDT_ASSUME_MASK
600	hex "Mask of conditions to assume for libfdt"
601	depends on SPL_OF_LIBFDT || FIT
602	default 0xff
603	help
604	  Use this to change the assumptions made by libfdt in SPL about the
605	  device tree it is working with. A value of 0 means that no assumptions
606	  are made, and libfdt is able to deal with malicious data. A value of
607	  0xff means all assumptions are made and any invalid data may cause
608	  unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
609
610config TPL_OF_LIBFDT
611	bool "Enable the FDT library for TPL"
612	default y if TPL_OF_CONTROL
613	help
614	  This enables the FDT library (libfdt). It provides functions for
615	  accessing binary device tree images in memory, such as adding and
616	  removing nodes and properties, scanning through the tree and finding
617	  particular compatible nodes. The library operates on a flattened
618	  version of the device tree.
619
620config TPL_OF_LIBFDT_ASSUME_MASK
621	hex "Mask of conditions to assume for libfdt"
622	depends on TPL_OF_LIBFDT || FIT
623	default 0xff
624	help
625	  Use this to change the assumptions made by libfdt in TPL about the
626	  device tree it is working with. A value of 0 means that no assumptions
627	  are made, and libfdt is able to deal with malicious data. A value of
628	  0xff means all assumptions are made and any invalid data may cause
629	  unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
630
631config FDT_FIXUP_PARTITIONS
632	bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
633	depends on OF_LIBFDT
634	depends on CMD_MTDPARTS
635	help
636	  Allow overwriting defined partitions in the device tree blob
637	  using partition info defined in the 'mtdparts' environment
638	  variable.
639
640menu "System tables"
641	depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
642
643config BLOBLIST_TABLES
644	bool "Put tables in a bloblist"
645	depends on X86
646	help
647	  Normally tables are placed at address 0xf0000 and can be up to 64KB
648	  long. With this option, tables are instead placed in the bloblist
649	  with a pointer from 0xf0000. The size can then be larger and the
650	  tables can be placed high in memory.
651
652config GENERATE_SMBIOS_TABLE
653	bool "Generate an SMBIOS (System Management BIOS) table"
654	default y
655	depends on X86 || EFI_LOADER
656	help
657	  The System Management BIOS (SMBIOS) specification addresses how
658	  motherboard and system vendors present management information about
659	  their products in a standard format by extending the BIOS interface
660	  on Intel architecture systems.
661
662	  Check http://www.dmtf.org/standards/smbios for details.
663
664	  See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
665	  the devicetree.
666
667endmenu
668
669config ASN1_COMPILER
670	bool
671
672config ASN1_DECODER
673	bool
674	help
675	  Enable asn1 decoder library.
676
677config OID_REGISTRY
678	bool
679	help
680	  Enable fast lookup object identifier registry.
681
682config SMBIOS_PARSER
683	bool "SMBIOS parser"
684	help
685	  A simple parser for SMBIOS data.
686
687source lib/efi/Kconfig
688source lib/efi_loader/Kconfig
689source lib/optee/Kconfig
690
691config TEST_FDTDEC
692	bool "enable fdtdec test"
693	depends on OF_LIBFDT
694
695config LIB_DATE
696	bool
697
698config LIB_ELF
699	bool
700	help
701	  Support basic elf loading/validating functions.
702	  This supports for 32 bit and 64 bit versions.
703
704endmenu
705
706config PHANDLE_CHECK_SEQ
707	bool "Enable phandle check while getting sequence number"
708	default n
709	help
710	  When there are multiple device tree nodes with same name,
711          enable this config option to distinguish them using
712	  phandles in fdtdec_get_alias_seq() function.
713