]> git.ipfire.org Git - thirdparty/u-boot.git/blame - lib/Kconfig
lib: Add an SPL config for LIB_UUID
[thirdparty/u-boot.git] / lib / Kconfig
CommitLineData
ed36323f
MY
1menu "Library routines"
2
69be8fd1
MS
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
e0103158
BM
9 This library only works in the post-relocation phase.
10
69be8fd1
MS
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
3b8dfc42
TR
18config SYS_TIMER_COUNTS_DOWN
19 bool "System timer counts down rathe than up"
20
6405ab7a
SG
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
6ef2f901
AF
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
3c10dc95
SG
38config BINMAN_FDT
39 bool "Allow access to binman information in the device tree"
56e7257c 40 depends on BINMAN && DM && OF_CONTROL
1621d3c4 41 default y if OF_SEPARATE || OF_EMBED
3c10dc95
SG
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
b0928da6
MY
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
1a46cb6c
SG
56config CHARSET
57 bool
1a46cb6c 58
36c1877c
FA
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
2895c4b7
BM
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
45ccec8f
MY
71config HAVE_PRIVATE_LIBGCC
72 bool
73
a451bc27
AF
74config LIB_UUID
75 bool
76
3b510807
SG
77config SPL_LIB_UUID
78 depends on SPL
79 bool
80
1c03ab9f
KC
81config SEMIHOSTING
82 bool "Support semihosting"
ae3527f0 83 depends on ARM || RISCV
1c03ab9f
KC
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"
ae3527f0 96 depends on SEMIHOSTING && (ARM64 || RISCV)
1c03ab9f
KC
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"
ae3527f0 106 depends on SPL && (ARM || RISCV)
1c03ab9f
KC
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"
ae3527f0
KC
119 depends on SPL_SEMIHOSTING && (ARM64 || RISCV)
120 select ARMV8_SPL_EXCEPTION_VECTORS if ARM64
1c03ab9f
KC
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
14ad44ab
AK
128config PRINTF
129 bool
130 default y
131
132config SPL_PRINTF
133 bool
134 select SPL_SPRINTF
27084c03 135 select SPL_STRTO if !SPL_USE_TINY_PRINTF
14ad44ab
AK
136
137config TPL_PRINTF
138 bool
139 select TPL_SPRINTF
27084c03 140 select TPL_STRTO if !TPL_USE_TINY_PRINTF
14ad44ab 141
747093dd
SG
142config VPL_PRINTF
143 bool
144 select VPL_SPRINTF
145 select VPL_STRTO if !VPL_USE_TINY_PRINTF
146
14ad44ab
AK
147config SPRINTF
148 bool
149 default y
150
151config SPL_SPRINTF
152 bool
153
154config TPL_SPRINTF
155 bool
156
747093dd
SG
157config VPL_SPRINTF
158 bool
159
e87dfb05
AA
160config SSCANF
161 bool
e87dfb05 162
14ad44ab
AK
163config STRTO
164 bool
165 default y
166
167config SPL_STRTO
168 bool
169
170config TPL_STRTO
171 bool
172
747093dd
SG
173config VPL_STRTO
174 bool
175
c232d14d
AK
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
45ccec8f
MY
187config USE_PRIVATE_LIBGCC
188 bool "Use private libgcc"
189 depends on HAVE_PRIVATE_LIBGCC
91b86e21 190 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
45ccec8f
MY
191 help
192 This option allows you to use the built-in libgcc implementation
67976306 193 of U-Boot instead of the one provided by the compiler.
45ccec8f
MY
194 If unsure, say N.
195
8c688bc4
MY
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
27084c03 204config SPL_USE_TINY_PRINTF
37ef1774 205 bool "Enable tiny printf() version in SPL"
27084c03 206 depends on SPL
2a51e16b 207 default y
7d9cde10
SR
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
27084c03 216config TPL_USE_TINY_PRINTF
37ef1774 217 bool "Enable tiny printf() version in TPL"
27084c03
SG
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
747093dd
SG
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
7e3caa81
MY
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
1a60650c
JH
249config REGEX
250 bool "Enable regular expression support"
f7848d90 251 default y if NET
1a60650c
JH
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
a5a37567
AF
258choice
259 prompt "Pseudo-random library support type"
1611235b 260 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
28cef9ca 261 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
a5a37567 262 default LIB_RAND
3850dbe8 263 help
a5a37567
AF
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
43e442a5 272 bool "HW Engine for random library support"
a5a37567
AF
273
274endchoice
9ba9e85f 275
e1722fcb
SG
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 GENERATE_ACPI_TABLE
285 bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
286 depends on SUPPORT_ACPI
287 select QFW if QEMU
288 help
289 The Advanced Configuration and Power Interface (ACPI) specification
290 provides an open standard for device configuration and management
291 by the operating system. It defines platform-independent interfaces
292 for configuration and power management monitoring.
293
ab4458bd
SG
294config SPL_TINY_MEMSET
295 bool "Use a very small memset() in SPL"
b340199f 296 depends on SPL
ab4458bd
SG
297 help
298 The faster memset() is the arch-specific one (if available) enabled
299 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
300 better performance by writing a word at a time. But in very
6e705114 301 size-constrained environments even this may be too big. Enable this
ab4458bd
SG
302 option to reduce code size slightly at the cost of some speed.
303
96b9082c
PT
304config TPL_TINY_MEMSET
305 bool "Use a very small memset() in TPL"
8bea4bf7 306 depends on TPL
96b9082c
PT
307 help
308 The faster memset() is the arch-specific one (if available) enabled
309 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
310 better performance by writing a word at a time. But in very
6e705114 311 size-constrained environments even this may be too big. Enable this
96b9082c
PT
312 option to reduce code size slightly at the cost of some speed.
313
aa049152
BB
314config RBTREE
315 bool
316
da5337a6
NH
317config BITREVERSE
318 bool "Bit reverse library from Linux"
319
a24a78d7
SG
320config TRACE
321 bool "Support for tracing of function calls and timing"
322 imply CMD_TRACE
12619d4e 323 imply TIMER_EARLY
a24a78d7
SG
324 help
325 Enables function tracing within U-Boot. This allows recording of call
326 traces including timing information. The command can write data to
327 memory for exporting for analysis (e.g. using bootchart).
328 See doc/README.trace for full details.
329
1c6eb075
SG
330config TRACE_BUFFER_SIZE
331 hex "Size of trace buffer in U-Boot"
332 depends on TRACE
333 default 0x01000000
334 help
335 Sets the size of the trace buffer in U-Boot. This is allocated from
336 memory during relocation. If this buffer is too small, the trace
337 history will be truncated, with later records omitted.
338
339 If early trace is enabled (i.e. before relocation), this buffer must
340 be large enough to include all the data from the early trace buffer as
341 well, since this is copied over to the main buffer during relocation.
342
343 A trace record is emitted for each function call and each record is
344 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
345 the size is too small then 'trace stats' will show a message saying
346 how many records were dropped due to buffer overflow.
347
da0fb5fd
HS
348config TRACE_CALL_DEPTH_LIMIT
349 int "Trace call depth limit"
350 depends on TRACE
351 default 15
352 help
353 Sets the maximum call depth up to which function calls are recorded.
354
1c6eb075
SG
355config TRACE_EARLY
356 bool "Enable tracing before relocation"
357 depends on TRACE
358 help
359 Sometimes it is helpful to trace execution of U-Boot before
360 relocation. This is possible by using a arch-specific, fixed buffer
361 position in memory. Enable this option to start tracing as early as
362 possible after U-Boot starts.
363
364config TRACE_EARLY_SIZE
365 hex "Size of early trace buffer in U-Boot"
366 depends on TRACE_EARLY
367 default 0x00100000
368 help
369 Sets the size of the early trace buffer in bytes. This is used to hold
370 tracing information before relocation.
371
da0fb5fd
HS
372config TRACE_EARLY_CALL_DEPTH_LIMIT
373 int "Early trace call depth limit"
374 depends on TRACE_EARLY
c33425c6 375 default 15
da0fb5fd
HS
376 help
377 Sets the maximum call depth up to which function calls are recorded
378 during early tracing.
379
1c6eb075
SG
380config TRACE_EARLY_ADDR
381 hex "Address of early trace buffer in U-Boot"
382 depends on TRACE_EARLY
383 default 0x00100000
384 help
385 Sets the address of the early trace buffer in U-Boot. This memory
386 must be accessible before relocation.
387
388 A trace record is emitted for each function call and each record is
389 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
390 the size is too small then the message which says the amount of early
391 data being coped will the the same as the
392
334a9b9d
LP
393config CIRCBUF
394 bool "Enable circular buffer support"
395
d1389403
SG
396source lib/dhry/Kconfig
397
b1a873df
SG
398menu "Security support"
399
400config AES
401 bool "Support the AES algorithm"
402 help
403 This provides a means to encrypt and decrypt data using the AES
404 (Advanced Encryption Standard). This algorithm uses a symetric key
405 and is widely used as a streaming cipher. Different key lengths are
406 supported by the algorithm but only a 128-bit key is supported at
407 present.
408
928a8be7 409source lib/ecdsa/Kconfig
d9f23c7f 410source lib/rsa/Kconfig
b4adf627 411source lib/crypto/Kconfig
26dd9936 412source lib/crypt/Kconfig
c4beb22f 413
a7d660bc
SG
414config TPM
415 bool "Trusted Platform Module (TPM) Support"
2419cd16 416 depends on DM
e67ffb5a 417 imply DM_RNG
a7d660bc
SG
418 help
419 This enables support for TPMs which can be used to provide security
420 features for your board. The TPM can be connected via LPC or I2C
421 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
422 command to interactive the TPM. Driver model support is provided
423 for the low-level TPM interface, but only one TPM is supported at
424 a time by the TPM library.
425
6307896c
SG
426config SPL_TPM
427 bool "Trusted Platform Module (TPM) Support in SPL"
428 depends on SPL_DM
0c16fca9 429 imply SPL_CRC8
6307896c
SG
430 help
431 This enables support for TPMs which can be used to provide security
432 features for your board. The TPM can be connected via LPC or I2C
433 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
434 command to interactive the TPM. Driver model support is provided
435 for the low-level TPM interface, but only one TPM is supported at
436 a time by the TPM library.
437
438config TPL_TPM
439 bool "Trusted Platform Module (TPM) Support in TPL"
440 depends on TPL_DM
441 help
442 This enables support for TPMs which can be used to provide security
443 features for your board. The TPM can be connected via LPC or I2C
444 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
445 command to interactive the TPM. Driver model support is provided
446 for the low-level TPM interface, but only one TPM is supported at
447 a time by the TPM library.
448
747093dd
SG
449config VPL_TPM
450 bool "Trusted Platform Module (TPM) Support in VPL"
451 depends on VPL_DM
452 help
453 This enables support for TPMs which can be used to provide security
454 features for your board. The TPM can be connected via LPC or I2C
455 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
456 command to interactive the TPM. Driver model support is provided
457 for the low-level TPM interface, but only one TPM is supported at
458 a time by the TPM library.
459
b1a873df
SG
460endmenu
461
3330584d
IO
462menu "Android Verified Boot"
463
464config LIBAVB
465 bool "Android Verified Boot 2.0 support"
466 depends on ANDROID_BOOT_IMAGE
3330584d
IO
467 help
468 This enables support of Android Verified Boot 2.0 which can be used
469 to assure the end user of the integrity of the software running on a
470 device. Introduces such features as boot chain of trust, rollback
471 protection etc.
472
473endmenu
474
94e3c8c4 475menu "Hashing Support"
476
7c3fd5c2
QW
477config BLAKE2
478 bool "Enable BLAKE2 support"
479 help
480 This option enables support of hashing using BLAKE2B algorithm.
481 The hash is calculated in software.
482 The BLAKE2 algorithm produces a hash value (digest) between 1 and
483 64 bytes.
484
94e3c8c4 485config SHA1
486 bool "Enable SHA1 support"
487 help
488 This option enables support of hashing using SHA1 algorithm.
489 The hash is calculated in software.
490 The SHA1 algorithm produces a 160-bit (20-byte) hash value
491 (digest).
492
493config SHA256
494 bool "Enable SHA256 support"
495 help
496 This option enables support of hashing using SHA256 algorithm.
497 The hash is calculated in software.
498 The SHA256 algorithm produces a 256-bit (32-byte) hash value
499 (digest).
500
d16b38f4
RD
501config SHA512
502 bool "Enable SHA512 support"
d16b38f4
RD
503 help
504 This option enables support of hashing using SHA512 algorithm.
505 The hash is calculated in software.
506 The SHA512 algorithm produces a 512-bit (64-byte) hash value
507 (digest).
508
509config SHA384
510 bool "Enable SHA384 support"
e60e4499 511 select SHA512
d16b38f4
RD
512 help
513 This option enables support of hashing using SHA384 algorithm.
e60e4499
AG
514 The hash is calculated in software. This is also selects SHA512,
515 because these implementations share the bulk of the code..
d16b38f4
RD
516 The SHA384 algorithm produces a 384-bit (48-byte) hash value
517 (digest).
518
94e3c8c4 519config SHA_HW_ACCEL
e2ae483c 520 bool "Enable hardware acceleration for SHA hash functions"
94e3c8c4 521 help
e2ae483c
HS
522 This option enables hardware acceleration for the SHA1 and SHA256
523 hashing algorithms. This affects the 'hash' command and also the
524 hash_lookup_algo() function.
525
603d15a5
SG
526if SPL
527
528config SPL_SHA1
529 bool "Enable SHA1 support in SPL"
530 default y if SHA1
531 help
532 This option enables support of hashing using SHA1 algorithm.
533 The hash is calculated in software.
534 The SHA1 algorithm produces a 160-bit (20-byte) hash value
535 (digest).
536
537config SPL_SHA256
538 bool "Enable SHA256 support in SPL"
539 default y if SHA256
540 help
541 This option enables support of hashing using SHA256 algorithm.
542 The hash is calculated in software.
543 The SHA256 algorithm produces a 256-bit (32-byte) hash value
544 (digest).
545
546config SPL_SHA512
547 bool "Enable SHA512 support in SPL"
548 default y if SHA512
549 help
550 This option enables support of hashing using SHA512 algorithm.
551 The hash is calculated in software.
552 The SHA512 algorithm produces a 512-bit (64-byte) hash value
553 (digest).
554
555config SPL_SHA384
556 bool "Enable SHA384 support in SPL"
557 default y if SHA384
558 select SPL_SHA512
559 help
560 This option enables support of hashing using SHA384 algorithm.
561 The hash is calculated in software. This is also selects SHA512,
562 because these implementations share the bulk of the code..
563 The SHA384 algorithm produces a 384-bit (48-byte) hash value
564 (digest).
565
2c21256b
SG
566config SPL_SHA_HW_ACCEL
567 bool "Enable hardware acceleration for SHA hash functions"
568 default y if SHA_HW_ACCEL
569 help
570 This option enables hardware acceleration for the SHA1 and SHA256
571 hashing algorithms. This affects the 'hash' command and also the
572 hash_lookup_algo() function.
573
574config SPL_SHA_PROG_HW_ACCEL
575 bool "Enable Progressive hashing support using hardware in SPL"
576 depends on SHA_PROG_HW_ACCEL
577 default y
578 help
579 This option enables hardware-acceleration for SHA progressive
580 hashing.
581 Data can be streamed in a block at a time and the hashing is
582 performed in hardware.
583
603d15a5
SG
584endif
585
5a6bc166
SG
586config VPL_SHA1
587 bool "Enable SHA1 support in VPL"
588 depends on VPL
589 default y if SHA1
590 help
591 This option enables support of hashing using SHA1 algorithm.
592 The hash is calculated in software.
593 The SHA1 algorithm produces a 160-bit (20-byte) hash value
594 (digest).
595
596config VPL_SHA256
597 bool "Enable SHA256 support in VPL"
598 depends on VPL
599 default y if SHA256
600 help
601 This option enables support of hashing using SHA256 algorithm.
602 The hash is calculated in software.
603 The SHA256 algorithm produces a 256-bit (32-byte) hash value
604 (digest).
605
e2ae483c
HS
606if SHA_HW_ACCEL
607
608config SHA512_HW_ACCEL
609 bool "Enable hardware acceleration for SHA512"
e60e4499 610 depends on SHA512
e2ae483c
HS
611 help
612 This option enables hardware acceleration for the SHA384 and SHA512
613 hashing algorithms. This affects the 'hash' command and also the
614 hash_lookup_algo() function.
94e3c8c4 615
616config SHA_PROG_HW_ACCEL
617 bool "Enable Progressive hashing support using hardware"
94e3c8c4 618 help
a479f103
JS
619 This option enables hardware-acceleration for SHA progressive
620 hashing.
621 Data can be streamed in a block at a time and the hashing is
622 performed in hardware.
bea79d7d 623
e2ae483c
HS
624endif
625
bea79d7d 626config MD5
8239be61
SG
627 bool "Support MD5 algorithm"
628 help
629 This option enables MD5 support. MD5 is an algorithm designed
630 in 1991 that produces a 16-byte digest (or checksum) from its input
631 data. It has a number of vulnerabilities which preclude its use in
632 security applications, but it can be useful for providing a quick
633 checksum of a block of data.
634
635config SPL_MD5
636 bool "Support MD5 algorithm in SPL"
b340199f 637 depends on SPL
8239be61
SG
638 help
639 This option enables MD5 support in SPL. MD5 is an algorithm designed
640 in 1991 that produces a 16-byte digest (or checksum) from its input
641 data. It has a number of vulnerabilities which preclude its use in
642 security applications, but it can be useful for providing a quick
643 checksum of a block of data.
bea79d7d 644
0c16fca9
SG
645config CRC8
646 def_bool y
647 help
648 Enables CRC8 support in U-Boot. This is normally required. CRC8 is
649 a simple and fast checksumming algorithm which does a bytewise
650 checksum with feedback to produce an 8-bit result. The code is small
651 and it does not require a lookup table (unlike CRC32).
652
653config SPL_CRC8
654 bool "Support CRC8 in SPL"
655 depends on SPL
656 help
657 Enables CRC8 support in SPL. This is not normally required. CRC8 is
658 a simple and fast checksumming algorithm which does a bytewise
659 checksum with feedback to produce an 8-bit result. The code is small
660 and it does not require a lookup table (unlike CRC32).
661
e7d285b2
SG
662config CRC32
663 def_bool y
664 help
665 Enables CRC32 support in U-Boot. This is normally required.
666
85d8bf57
MB
667config CRC32C
668 bool
669
83a486b6
MB
670config XXHASH
671 bool
672
94e3c8c4 673endmenu
674
027b728d
JW
675menu "Compression Support"
676
677config LZ4
678 bool "Enable LZ4 decompression support"
679 help
680 If this option is set, support for LZ4 compressed images
681 is included. The LZ4 algorithm can run in-place as long as the
682 compressed image is loaded to the end of the output buffer, and
683 trades lower compression ratios for much faster decompression.
4fa0150d 684
027b728d
JW
685 NOTE: This implements the release version of the LZ4 frame
686 format as generated by default by the 'lz4' command line tool.
687 This is not the same as the outdated, less efficient legacy
688 frame format currently (2015) implemented in the Linux kernel
689 (generated by 'lz4 -l'). The two formats are incompatible.
690
aed998aa
SG
691config LZMA
692 bool "Enable LZMA decompression support"
693 help
694 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
695 a dictionary compression algorithm that provides a high compression
696 ratio and fairly fast decompression speed. See also
697 CONFIG_CMD_LZMADEC which provides a decode command.
698
173aafbf 699config LZO
d56b4b19
TR
700 bool "Enable LZO decompression support"
701 help
5145bc73 702 This enables support for the LZO compression algorithm.
7264f292 703
95f4bbd5 704config GZIP
5132361a 705 bool "Enable gzip decompression support"
95f4bbd5
MV
706 select ZLIB
707 default y
708 help
709 This enables support for GZIP compression algorithm.
2a2119e1 710
81014f73
JMC
711config ZLIB_UNCOMPRESS
712 bool "Enables zlib's uncompress() functionality"
713 help
714 This enables an extra zlib functionality: the uncompress() function,
715 which decompresses data from a buffer into another, knowing their
716 sizes. Unlike gunzip(), there is no header parsing.
717
eff5a547
MW
718config GZIP_COMPRESSED
719 bool
720 select ZLIB
721
2a2119e1
AP
722config BZIP2
723 bool "Enable bzip2 decompression support"
724 help
725 This enables support for BZIP2 compression algorithm.
95f4bbd5
MV
726
727config ZLIB
728 bool
729 default y
730 help
731 This enables ZLIB compression lib.
732
8509f22a
MB
733config ZSTD
734 bool "Enable Zstandard decompression support"
735 select XXHASH
736 help
737 This enables Zstandard decompression library.
738
4b9b25d9
BM
739if ZSTD
740
741config ZSTD_LIB_MINIFY
742 bool "Minify Zstandard code"
743 default y
744 help
745 This disables various optional components and changes the
746 compilation flags to prioritize space-saving.
747
748 For detailed info, see zstd's lib/README.md
749
750 https://github.com/facebook/zstd/blob/dev/lib/README.md
751
752endif
753
ae625d92
SG
754config SPL_BZIP2
755 bool "Enable bzip2 decompression support for SPL build"
756 depends on SPL
757 help
758 This enables support for bzip2 compression algorithm for SPL boot.
759
048c6e89
SG
760config SPL_LZ4
761 bool "Enable LZ4 decompression support in SPL"
b340199f 762 depends on SPL
048c6e89 763 help
43e442a5 764 This enables support for the LZ4 decompression algorithm in SPL. LZ4
048c6e89
SG
765 is a lossless data compression algorithm that is focused on
766 fast compression and decompression speed. It belongs to the LZ77
767 family of byte-oriented compression schemes.
768
04cb3994
WG
769config SPL_LZMA
770 bool "Enable LZMA decompression support for SPL build"
b340199f 771 depends on SPL
04cb3994 772 help
43e442a5 773 This enables support for LZMA compression algorithm for SPL boot.
04cb3994 774
747093dd
SG
775config VPL_LZMA
776 bool "Enable LZMA decompression support for VPL build"
777 default y if LZMA
778 help
779 This enables support for LZMA compression algorithm for VPL boot.
780
f52bdf4b
JJH
781config SPL_LZO
782 bool "Enable LZO decompression support in SPL"
b340199f 783 depends on SPL
f52bdf4b
JJH
784 help
785 This enables support for LZO compression algorithm in the SPL.
786
7264f292
YS
787config SPL_GZIP
788 bool "Enable gzip decompression support for SPL build"
789 select SPL_ZLIB
790 help
5145bc73 791 This enables support for the GZIP compression algorithm for SPL boot.
7264f292
YS
792
793config SPL_ZLIB
794 bool
795 help
796 This enables compression lib for SPL boot.
797
8509f22a
MB
798config SPL_ZSTD
799 bool "Enable Zstandard decompression support in SPL"
b340199f 800 depends on SPL
8509f22a
MB
801 select XXHASH
802 help
803 This enables Zstandard decompression library in the SPL.
804
027b728d
JW
805endmenu
806
6501ff62
PM
807config ERRNO_STR
808 bool "Enable function for getting errno-related string message"
809 help
810 The function errno_str(int errno), returns a pointer to the errno
811 corresponding text message:
812 - if errno is null or positive number - a pointer to "Success" message
813 - if errno is negative - a pointer to errno related message
814
f8c987f8
AB
815config HEXDUMP
816 bool "Enable hexdump"
817 help
818 This enables functions for printing dumps of binary data.
819
26637e2e
SG
820config SPL_HEXDUMP
821 bool "Enable hexdump in SPL"
fa3f1f1d 822 depends on SPL && HEXDUMP
26637e2e
SG
823 help
824 This enables functions for printing dumps of binary data in
825 SPL.
826
72eda507
SA
827config GETOPT
828 bool "Enable getopt"
829 help
830 This enables functions for parsing command-line options.
831
69e173eb
SG
832config OF_LIBFDT
833 bool "Enable the FDT library"
834 default y if OF_CONTROL
835 help
836 This enables the FDT library (libfdt). It provides functions for
837 accessing binary device tree images in memory, such as adding and
f1a7ba1d 838 removing nodes and properties, scanning through the tree and finding
69e173eb
SG
839 particular compatible nodes. The library operates on a flattened
840 version of the device tree.
841
0d76afc0
SG
842config OF_LIBFDT_ASSUME_MASK
843 hex "Mask of conditions to assume for libfdt"
844 depends on OF_LIBFDT || FIT
845 default 0
846 help
847 Use this to change the assumptions made by libfdt about the
848 device tree it is working with. A value of 0 means that no assumptions
849 are made, and libfdt is able to deal with malicious data. A value of
850 0xff means all assumptions are made and any invalid data may cause
851 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
852
ddf67f71
MR
853config OF_LIBFDT_OVERLAY
854 bool "Enable the FDT library overlay support"
6417572e 855 depends on OF_LIBFDT
58a46f88 856 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
ddf67f71
MR
857 help
858 This enables the FDT library (libfdt) overlay support.
859
40ed7be4
TR
860config SYS_FDT_PAD
861 hex "Maximum size of the FDT memory area passeed to the OS"
862 depends on OF_LIBFDT
863 default 0x13000 if FMAN_ENET || QE || U_QE
864 default 0x3000
865 help
866 During OS boot, we allocate a region of memory within the bootmap
867 for the FDT. This is the size that we will expand the FDT that we
868 are using will be extended to be, in bytes.
869
aa34fbc0
SG
870config SPL_OF_LIBFDT
871 bool "Enable the FDT library for SPL"
747093dd 872 depends on SPL_LIBGENERIC_SUPPORT
aa34fbc0
SG
873 default y if SPL_OF_CONTROL
874 help
875 This enables the FDT library (libfdt). It provides functions for
876 accessing binary device tree images in memory, such as adding and
f1a7ba1d 877 removing nodes and properties, scanning through the tree and finding
aa34fbc0
SG
878 particular compatible nodes. The library operates on a flattened
879 version of the device tree.
880
0d76afc0
SG
881config SPL_OF_LIBFDT_ASSUME_MASK
882 hex "Mask of conditions to assume for libfdt"
b340199f 883 depends on SPL_OF_LIBFDT || (FIT && SPL)
0d76afc0
SG
884 default 0xff
885 help
886 Use this to change the assumptions made by libfdt in SPL about the
887 device tree it is working with. A value of 0 means that no assumptions
888 are made, and libfdt is able to deal with malicious data. A value of
889 0xff means all assumptions are made and any invalid data may cause
890 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
891
5592a633
SG
892config TPL_OF_LIBFDT
893 bool "Enable the FDT library for TPL"
747093dd 894 depends on TPL_LIBGENERIC_SUPPORT
5592a633
SG
895 default y if TPL_OF_CONTROL
896 help
897 This enables the FDT library (libfdt). It provides functions for
898 accessing binary device tree images in memory, such as adding and
899 removing nodes and properties, scanning through the tree and finding
900 particular compatible nodes. The library operates on a flattened
901 version of the device tree.
902
0d76afc0
SG
903config TPL_OF_LIBFDT_ASSUME_MASK
904 hex "Mask of conditions to assume for libfdt"
8bea4bf7 905 depends on TPL_OF_LIBFDT || (FIT && TPL)
0d76afc0
SG
906 default 0xff
907 help
908 Use this to change the assumptions made by libfdt in TPL about the
909 device tree it is working with. A value of 0 means that no assumptions
910 are made, and libfdt is able to deal with malicious data. A value of
911 0xff means all assumptions are made and any invalid data may cause
912 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
913
747093dd
SG
914config VPL_OF_LIBFDT
915 bool "Enable the FDT library for VPL"
13ce351b 916 depends on VPL
747093dd
SG
917 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
918 help
919 This enables the FDT library (libfdt). It provides functions for
920 accessing binary device tree images in memory, such as adding and
921 removing nodes and properties, scanning through the tree and finding
922 particular compatible nodes. The library operates on a flattened
923 version of the device tree.
924
925config VPL_OF_LIBFDT_ASSUME_MASK
926 hex "Mask of conditions to assume for libfdt"
13ce351b 927 depends on VPL_OF_LIBFDT || (FIT && VPL)
747093dd
SG
928 default 0xff
929 help
930 Use this to change the assumptions made by libfdt in SPL about the
931 device tree it is working with. A value of 0 means that no assumptions
932 are made, and libfdt is able to deal with malicious data. A value of
933 0xff means all assumptions are made and any invalid data may cause
934 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
935
ebf7fff2
HS
936config FDT_FIXUP_PARTITIONS
937 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
938 depends on OF_LIBFDT
ab948cd2 939 depends on CMD_MTDPARTS
ebf7fff2
HS
940 help
941 Allow overwriting defined partitions in the device tree blob
942 using partition info defined in the 'mtdparts' environment
943 variable.
944
4b6dddc2 945menu "System tables"
e663b350 946 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
4b6dddc2 947
d2cb7a22
SG
948config BLOBLIST_TABLES
949 bool "Put tables in a bloblist"
f2c1442e 950 depends on X86 && BLOBLIST
d2cb7a22
SG
951 help
952 Normally tables are placed at address 0xf0000 and can be up to 64KB
953 long. With this option, tables are instead placed in the bloblist
954 with a pointer from 0xf0000. The size can then be larger and the
955 tables can be placed high in memory.
956
4b6dddc2
AG
957config GENERATE_SMBIOS_TABLE
958 bool "Generate an SMBIOS (System Management BIOS) table"
959 default y
e663b350 960 depends on X86 || EFI_LOADER
4b6dddc2
AG
961 help
962 The System Management BIOS (SMBIOS) specification addresses how
963 motherboard and system vendors present management information about
964 their products in a standard format by extending the BIOS interface
965 on Intel architecture systems.
966
967 Check http://www.dmtf.org/standards/smbios for details.
968
44c74bdd
SG
969 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
970 the devicetree.
971
7d0f3fbb
TK
972config LIB_RATIONAL
973 bool "enable continued fraction calculation routines"
974
975config SPL_LIB_RATIONAL
976 bool "enable continued fraction calculation routines for SPL"
977 depends on SPL
978
4b6dddc2
AG
979endmenu
980
2b12196d
AT
981config ASN1_COMPILER
982 bool
a0e71d96
PR
983 help
984 ASN.1 (Abstract Syntax Notation One) is a standard interface
985 description language for defining data structures that can be
986 serialized and deserialized in a cross-platform way. It is
987 broadly used in telecommunications and computer networking,
988 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
989 This option enables the support of the asn1 compiler.
2b12196d 990
ab8a0e06
AT
991config ASN1_DECODER
992 bool
993 help
a0e71d96
PR
994 ASN.1 (Abstract Syntax Notation One) is a standard interface
995 description language for defining data structures that can be
996 serialized and deserialized in a cross-platform way. It is
997 broadly used in telecommunications and computer networking,
998 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
999 This option enables the support of the asn1 decoder.
ab8a0e06 1000
fd210fee
PR
1001config SPL_ASN1_DECODER
1002 bool
1003 help
1004 ASN.1 (Abstract Syntax Notation One) is a standard interface
1005 description language for defining data structures that can be
1006 serialized and deserialized in a cross-platform way. It is
1007 broadly used in telecommunications and computer networking,
1008 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1009 This option enables the support of the asn1 decoder in the SPL.
1010
a9b45e6e
AT
1011config OID_REGISTRY
1012 bool
1013 help
7d44a985
PR
1014 In computing, object identifiers or OIDs are an identifier mechanism
1015 standardized by the International Telecommunication Union (ITU) and
1016 ISO/IEC for naming any object, concept, or "thing" with a globally
1017 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
a9b45e6e
AT
1018 Enable fast lookup object identifier registry.
1019
fd210fee
PR
1020config SPL_OID_REGISTRY
1021 bool
1022 help
1023 In computing, object identifiers or OIDs are an identifier mechanism
1024 standardized by the International Telecommunication Union (ITU) and
1025 ISO/IEC for naming any object, concept, or "thing" with a globally
1026 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
1027 Enable fast lookup object identifier registry in the SPL.
1028
415eab06
CG
1029config SMBIOS_PARSER
1030 bool "SMBIOS parser"
1031 help
1032 A simple parser for SMBIOS data.
1033
867a6ac8 1034source lib/efi/Kconfig
ed980b8c 1035source lib/efi_loader/Kconfig
32ce6179 1036source lib/optee/Kconfig
867a6ac8 1037
54969b40
TR
1038config TEST_FDTDEC
1039 bool "enable fdtdec test"
1040 depends on OF_LIBFDT
1041
05429b6c
AT
1042config LIB_DATE
1043 bool
1044
805b3cac
K
1045config LIB_ELF
1046 bool
1047 help
6205bbb1
PD
1048 Support basic elf loading/validating functions.
1049 This supports for 32 bit and 64 bit versions.
805b3cac 1050
77b8cfef
PD
1051config LMB
1052 bool "Enable the logical memory blocks library (lmb)"
11232139 1053 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
77b8cfef
PD
1054 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
1055 help
1056 Support the library logical memory blocks.
1057
6d66502b 1058config LMB_USE_MAX_REGIONS
ac7606af 1059 bool "Use a common number of memory and reserved regions in lmb lib"
6d66502b 1060 depends on LMB
948d3999 1061 default y
6d66502b
PD
1062 help
1063 Define the number of supported memory regions in the library logical
1064 memory blocks.
1065 This feature allow to reduce the lmb library size by using compiler
1066 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
4fa0150d
PD
1067
1068config LMB_MAX_REGIONS
1069 int "Number of memory and reserved regions in lmb lib"
6d66502b 1070 depends on LMB && LMB_USE_MAX_REGIONS
2dc16a2c 1071 default 16
4fa0150d
PD
1072 help
1073 Define the number of supported regions, memory and reserved, in the
1074 library logical memory blocks.
6d66502b
PD
1075
1076config LMB_MEMORY_REGIONS
1077 int "Number of memory regions in lmb lib"
1078 depends on LMB && !LMB_USE_MAX_REGIONS
1079 default 8
1080 help
1081 Define the number of supported memory regions in the library logical
1082 memory blocks.
1083 The minimal value is CONFIG_NR_DRAM_BANKS.
1084
1085config LMB_RESERVED_REGIONS
1086 int "Number of reserved regions in lmb lib"
1087 depends on LMB && !LMB_USE_MAX_REGIONS
1088 default 8
1089 help
1090 Define the number of supported reserved regions in the library logical
1091 memory blocks.
1092
ebc1d50a
SG
1093config PHANDLE_CHECK_SEQ
1094 bool "Enable phandle check while getting sequence number"
1095 help
1096 When there are multiple device tree nodes with same name,
1097 enable this config option to distinguish them using
1098 phandles in fdtdec_get_alias_seq() function.
1099
97f2a749 1100endmenu
86794052
SG
1101
1102menu "FWU Multi Bank Updates"
1103
1104source lib/fwu_updates/Kconfig
1105
1106endmenu