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