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