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