blob: c9f9ddce7d02c4f102d2234b371e805f928d26bc [file] [log] [blame]
Masahiro Yamadaf3e12b72014-09-16 16:32:58 +09001menu "Library routines"
2
Marek Szyprowski795dc7d2020-06-03 14:43:40 +02003config 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
Bin Meng0a5fee52021-02-25 17:22:36 +08009 This library only works in the post-relocation phase.
10
Marek Szyprowski795dc7d2020-06-03 14:43:40 +020011config 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
Simon Glassef9e7622021-11-24 09:26:42 -070018config PHYSMEM
19 bool "Access to physical memory region (> 4G)"
20 help
21 Some basic support is provided for operations on memory not
22 normally accessible to 32-bit U-Boot - e.g. some architectures
23 support access to more than 4G of memory on 32-bit
24 machines using physical address extension or similar.
25 Enable this to access this basic support, which only supports clearing
26 the memory.
27
Adam Ford02bf5362017-08-11 09:46:05 -050028config BCH
29 bool "Enable Software based BCH ECC"
30 help
31 Enables software based BCH ECC algorithm present in lib/bch.c
32 This is used by SoC platforms which do not have built-in ELM
33 hardware engine required for BCH ECC correction.
34
Simon Glassdd7fb9b2019-12-06 21:41:34 -070035config BINMAN_FDT
36 bool "Allow access to binman information in the device tree"
Bin Mengc5e8b312021-02-03 21:20:02 +080037 depends on BINMAN && DM && OF_CONTROL
Bin Mengc9155f12021-05-10 20:23:36 +080038 default y if OF_SEPARATE || OF_EMBED
Simon Glassdd7fb9b2019-12-06 21:41:34 -070039 help
40 This enables U-Boot to access information about binman entries,
41 stored in the device tree in a binman node. Typical uses are to
42 locate entries in the firmware image. See binman.h for the available
43 functionality.
44
Masahiro Yamada3f053fe2014-09-16 16:32:59 +090045config CC_OPTIMIZE_LIBS_FOR_SPEED
46 bool "Optimize libraries for speed"
47 help
48 Enabling this option will pass "-O2" to gcc when compiling
49 under "lib" directory.
50
51 If unsure, say N.
52
Simon Glassc17db992021-07-02 12:36:17 -060053config CHARSET
54 bool
Simon Glassc17db992021-07-02 12:36:17 -060055
Faiz Abbas6199fb12018-02-06 19:15:58 +053056config DYNAMIC_CRC_TABLE
57 bool "Enable Dynamic tables for CRC"
58 help
59 Enable this option to calculate entries for CRC tables at runtime.
60 This can be helpful when reducing the size of the build image
61
Bin Mengb95e9db2018-10-15 02:21:15 -070062config HAVE_ARCH_IOMAP
63 bool
64 help
65 Enable this option if architecture provides io{read,write}{8,16,32}
66 I/O accessor functions.
67
Masahiro Yamada9520b712014-10-24 01:30:43 +090068config HAVE_PRIVATE_LIBGCC
69 bool
70
Adam Ford70c8f052018-02-06 12:14:28 -060071config LIB_UUID
72 bool
73
Alex Kiernan5b404282018-04-19 04:32:54 +000074config PRINTF
75 bool
76 default y
77
78config SPL_PRINTF
79 bool
80 select SPL_SPRINTF
Simon Glass7611ac62019-09-25 08:56:27 -060081 select SPL_STRTO if !SPL_USE_TINY_PRINTF
Alex Kiernan5b404282018-04-19 04:32:54 +000082
83config TPL_PRINTF
84 bool
85 select TPL_SPRINTF
Simon Glass7611ac62019-09-25 08:56:27 -060086 select TPL_STRTO if !TPL_USE_TINY_PRINTF
Alex Kiernan5b404282018-04-19 04:32:54 +000087
Simon Glasse7ca7da2022-04-30 00:56:53 -060088config VPL_PRINTF
89 bool
90 select VPL_SPRINTF
91 select VPL_STRTO if !VPL_USE_TINY_PRINTF
92
Alex Kiernan5b404282018-04-19 04:32:54 +000093config SPRINTF
94 bool
95 default y
96
97config SPL_SPRINTF
98 bool
99
100config TPL_SPRINTF
101 bool
102
Simon Glasse7ca7da2022-04-30 00:56:53 -0600103config VPL_SPRINTF
104 bool
105
Andrii Anisov6e29ac42020-08-06 12:42:52 +0300106config SSCANF
107 bool
Andrii Anisov6e29ac42020-08-06 12:42:52 +0300108
Alex Kiernan5b404282018-04-19 04:32:54 +0000109config STRTO
110 bool
111 default y
112
113config SPL_STRTO
114 bool
115
116config TPL_STRTO
117 bool
118
Simon Glasse7ca7da2022-04-30 00:56:53 -0600119config VPL_STRTO
120 bool
121
Alex Kiernanc568bcb2018-05-29 15:30:52 +0000122config IMAGE_SPARSE
123 bool
124
125config IMAGE_SPARSE_FILLBUF_SIZE
126 hex "Android sparse image CHUNK_TYPE_FILL buffer size"
127 default 0x80000
128 depends on IMAGE_SPARSE
129 help
130 Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
131 chunks.
132
Masahiro Yamada9520b712014-10-24 01:30:43 +0900133config USE_PRIVATE_LIBGCC
134 bool "Use private libgcc"
135 depends on HAVE_PRIVATE_LIBGCC
Marek Vasut4e0126e2016-05-26 18:01:47 +0200136 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
Masahiro Yamada9520b712014-10-24 01:30:43 +0900137 help
138 This option allows you to use the built-in libgcc implementation
Masahiro Yamada1c6a5e42016-03-30 20:17:42 +0900139 of U-Boot instead of the one provided by the compiler.
Masahiro Yamada9520b712014-10-24 01:30:43 +0900140 If unsure, say N.
141
Masahiro Yamadae301fa02014-10-24 01:30:40 +0900142config SYS_HZ
143 int
144 default 1000
145 help
146 The frequency of the timer returned by get_timer().
147 get_timer() must operate in milliseconds and this option must be
148 set to 1000.
149
Simon Glass7611ac62019-09-25 08:56:27 -0600150config SPL_USE_TINY_PRINTF
Thomas Hebb0c12fb52019-11-10 08:23:53 -0800151 bool "Enable tiny printf() version in SPL"
Simon Glass7611ac62019-09-25 08:56:27 -0600152 depends on SPL
Tom Rinid0502b72019-06-08 12:46:18 -0400153 default y
Stefan Roese363ab7b2015-11-23 07:00:22 +0100154 help
155 This option enables a tiny, stripped down printf version.
156 This should only be used in space limited environments,
157 like SPL versions with hard memory limits. This version
158 reduces the code size by about 2.5KiB on armv7.
159
160 The supported format specifiers are %c, %s, %u/%d and %x.
161
Simon Glass7611ac62019-09-25 08:56:27 -0600162config TPL_USE_TINY_PRINTF
Thomas Hebb0c12fb52019-11-10 08:23:53 -0800163 bool "Enable tiny printf() version in TPL"
Simon Glass7611ac62019-09-25 08:56:27 -0600164 depends on TPL
165 default y if SPL_USE_TINY_PRINTF
166 help
167 This option enables a tiny, stripped down printf version.
168 This should only be used in space limited environments,
169 like SPL versions with hard memory limits. This version
170 reduces the code size by about 2.5KiB on armv7.
171
172 The supported format specifiers are %c, %s, %u/%d and %x.
173
Simon Glasse7ca7da2022-04-30 00:56:53 -0600174config VPL_USE_TINY_PRINTF
175 bool "Enable tiny printf() version for VPL"
176 depends on VPL
177 help
178 This option enables a tiny, stripped down printf version.
179 This should only be used in space limited environments,
180 like SPL versions with hard memory limits. This version
181 reduces the code size by about 2.5KiB on armv7.
182
183 The supported format specifiers are %c, %s, %u/%d and %x.
184
Masahiro Yamadaacede7a2017-12-04 12:37:00 +0900185config PANIC_HANG
186 bool "Do not reset the system on fatal error"
187 help
188 Define this option to stop the system in case of a fatal error,
189 so that you have to reset it manually. This is probably NOT a good
190 idea for an embedded system where you want the system to reboot
191 automatically as fast as possible, but it may be useful during
192 development since you can try to debug the conditions that lead to
193 the situation.
194
Joe Hershberger937d3e82015-04-21 17:02:42 -0500195config REGEX
196 bool "Enable regular expression support"
Joe Hershberger8ab8b722015-06-22 17:57:36 -0500197 default y if NET
Joe Hershberger937d3e82015-04-21 17:02:42 -0500198 help
199 If this variable is defined, U-Boot is linked against the
200 SLRE (Super Light Regular Expression) library, which adds
201 regex support to some commands, for example "env grep" and
202 "setexpr".
203
Adam Ford38003a62018-02-06 10:18:18 -0600204choice
205 prompt "Pseudo-random library support type"
Heinrich Schuchardtb2e67a22020-01-19 19:28:12 +0100206 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
Heinrich Schuchardtba9c44e2020-11-20 12:55:22 +0100207 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
Adam Ford38003a62018-02-06 10:18:18 -0600208 default LIB_RAND
Masahiro Yamada2743c072015-06-11 19:16:43 +0900209 help
Adam Ford38003a62018-02-06 10:18:18 -0600210 Select the library to provide pseudo-random number generator
211 functions. LIB_HW_RAND supports certain hardware engines that
212 provide this functionality. If in doubt, select LIB_RAND.
213
214config LIB_RAND
215 bool "Pseudo-random library support"
216
217config LIB_HW_RAND
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200218 bool "HW Engine for random library support"
Adam Ford38003a62018-02-06 10:18:18 -0600219
220endchoice
Michal Simek2c1b1db2015-05-25 11:37:22 +0200221
Simon Glassa6cee932021-12-01 09:02:36 -0700222config SUPPORT_ACPI
223 bool
224 help
225 Enable this if your arch or board can support generating ACPI
226 (Advanced Configuration and Power Interface) tables. In this case
227 U-Boot can generate these tables and pass them to the Operating
228 System.
229
230config GENERATE_ACPI_TABLE
231 bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
232 depends on SUPPORT_ACPI
233 select QFW if QEMU
234 help
235 The Advanced Configuration and Power Interface (ACPI) specification
236 provides an open standard for device configuration and management
237 by the operating system. It defines platform-independent interfaces
238 for configuration and power management monitoring.
239
Simon Glasse2f94ae2017-04-02 09:50:28 -0600240config SPL_TINY_MEMSET
241 bool "Use a very small memset() in SPL"
242 help
243 The faster memset() is the arch-specific one (if available) enabled
244 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
245 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300246 size-constrained environments even this may be too big. Enable this
Simon Glasse2f94ae2017-04-02 09:50:28 -0600247 option to reduce code size slightly at the cost of some speed.
248
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200249config TPL_TINY_MEMSET
250 bool "Use a very small memset() in TPL"
Tom Rini36a4ca02022-06-08 08:24:39 -0400251 depends on TPL
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200252 help
253 The faster memset() is the arch-specific one (if available) enabled
254 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
255 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300256 size-constrained environments even this may be too big. Enable this
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200257 option to reduce code size slightly at the cost of some speed.
258
Boris Brezillon627dc182017-02-27 18:22:05 +0100259config RBTREE
260 bool
261
Nandor Hand5ea84a2017-11-08 15:35:14 +0000262config BITREVERSE
263 bool "Bit reverse library from Linux"
264
Simon Glassbfce7fc2019-04-08 13:20:51 -0600265config TRACE
266 bool "Support for tracing of function calls and timing"
267 imply CMD_TRACE
Pragnesh Patel0dd501a2021-01-17 18:11:24 +0530268 select TIMER_EARLY
Simon Glassbfce7fc2019-04-08 13:20:51 -0600269 help
270 Enables function tracing within U-Boot. This allows recording of call
271 traces including timing information. The command can write data to
272 memory for exporting for analysis (e.g. using bootchart).
273 See doc/README.trace for full details.
274
Simon Glass445078e2019-04-08 13:20:52 -0600275config TRACE_BUFFER_SIZE
276 hex "Size of trace buffer in U-Boot"
277 depends on TRACE
278 default 0x01000000
279 help
280 Sets the size of the trace buffer in U-Boot. This is allocated from
281 memory during relocation. If this buffer is too small, the trace
282 history will be truncated, with later records omitted.
283
284 If early trace is enabled (i.e. before relocation), this buffer must
285 be large enough to include all the data from the early trace buffer as
286 well, since this is copied over to the main buffer during relocation.
287
288 A trace record is emitted for each function call and each record is
289 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
290 the size is too small then 'trace stats' will show a message saying
291 how many records were dropped due to buffer overflow.
292
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200293config TRACE_CALL_DEPTH_LIMIT
294 int "Trace call depth limit"
295 depends on TRACE
296 default 15
297 help
298 Sets the maximum call depth up to which function calls are recorded.
299
Simon Glass445078e2019-04-08 13:20:52 -0600300config TRACE_EARLY
301 bool "Enable tracing before relocation"
302 depends on TRACE
303 help
304 Sometimes it is helpful to trace execution of U-Boot before
305 relocation. This is possible by using a arch-specific, fixed buffer
306 position in memory. Enable this option to start tracing as early as
307 possible after U-Boot starts.
308
309config TRACE_EARLY_SIZE
310 hex "Size of early trace buffer in U-Boot"
311 depends on TRACE_EARLY
312 default 0x00100000
313 help
314 Sets the size of the early trace buffer in bytes. This is used to hold
315 tracing information before relocation.
316
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200317config TRACE_EARLY_CALL_DEPTH_LIMIT
318 int "Early trace call depth limit"
319 depends on TRACE_EARLY
320 default 200
321 help
322 Sets the maximum call depth up to which function calls are recorded
323 during early tracing.
324
Simon Glass445078e2019-04-08 13:20:52 -0600325config TRACE_EARLY_ADDR
326 hex "Address of early trace buffer in U-Boot"
327 depends on TRACE_EARLY
328 default 0x00100000
329 help
330 Sets the address of the early trace buffer in U-Boot. This memory
331 must be accessible before relocation.
332
333 A trace record is emitted for each function call and each record is
334 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
335 the size is too small then the message which says the amount of early
336 data being coped will the the same as the
337
Loic Poulain12797e62021-11-25 18:16:14 +0100338config CIRCBUF
339 bool "Enable circular buffer support"
340
Simon Glass99dbe4b2015-06-23 15:38:23 -0600341source lib/dhry/Kconfig
342
Simon Glass528fdd12017-04-26 22:27:49 -0600343menu "Security support"
344
345config AES
346 bool "Support the AES algorithm"
347 help
348 This provides a means to encrypt and decrypt data using the AES
349 (Advanced Encryption Standard). This algorithm uses a symetric key
350 and is widely used as a streaming cipher. Different key lengths are
351 supported by the algorithm but only a 128-bit key is supported at
352 present.
353
Alexandru Gagniuc48cb9b82021-07-29 11:47:16 -0500354source lib/ecdsa/Kconfig
Ruchika Gupta4acd8c42015-01-23 16:01:56 +0530355source lib/rsa/Kconfig
AKASHI Takahiro591535c2019-11-13 09:45:00 +0900356source lib/crypto/Kconfig
Steffen Jaeckel229bd512021-07-08 15:57:33 +0200357source lib/crypt/Kconfig
Ruchika Gupta2c3822e2015-01-23 16:01:51 +0530358
Simon Glass350497c2015-08-22 18:31:19 -0600359config TPM
360 bool "Trusted Platform Module (TPM) Support"
Simon Glasscf294b02015-10-03 06:39:36 -0600361 depends on DM
Simon Glass350497c2015-08-22 18:31:19 -0600362 help
363 This enables support for TPMs which can be used to provide security
364 features for your board. The TPM can be connected via LPC or I2C
365 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
366 command to interactive the TPM. Driver model support is provided
367 for the low-level TPM interface, but only one TPM is supported at
368 a time by the TPM library.
369
Simon Glass93a45b12018-10-01 12:22:19 -0600370config SPL_TPM
371 bool "Trusted Platform Module (TPM) Support in SPL"
372 depends on SPL_DM
373 help
374 This enables support for TPMs which can be used to provide security
375 features for your board. The TPM can be connected via LPC or I2C
376 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
377 command to interactive the TPM. Driver model support is provided
378 for the low-level TPM interface, but only one TPM is supported at
379 a time by the TPM library.
380
381config TPL_TPM
382 bool "Trusted Platform Module (TPM) Support in TPL"
383 depends on TPL_DM
384 help
385 This enables support for TPMs which can be used to provide security
386 features for your board. The TPM can be connected via LPC or I2C
387 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
388 command to interactive the TPM. Driver model support is provided
389 for the low-level TPM interface, but only one TPM is supported at
390 a time by the TPM library.
391
Simon Glasse7ca7da2022-04-30 00:56:53 -0600392config VPL_TPM
393 bool "Trusted Platform Module (TPM) Support in VPL"
394 depends on VPL_DM
395 help
396 This enables support for TPMs which can be used to provide security
397 features for your board. The TPM can be connected via LPC or I2C
398 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
399 command to interactive the TPM. Driver model support is provided
400 for the low-level TPM interface, but only one TPM is supported at
401 a time by the TPM library.
402
Simon Glass528fdd12017-04-26 22:27:49 -0600403endmenu
404
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300405menu "Android Verified Boot"
406
407config LIBAVB
408 bool "Android Verified Boot 2.0 support"
409 depends on ANDROID_BOOT_IMAGE
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300410 help
411 This enables support of Android Verified Boot 2.0 which can be used
412 to assure the end user of the integrity of the software running on a
413 device. Introduces such features as boot chain of trust, rollback
414 protection etc.
415
416endmenu
417
gaurav ranaef201592015-02-20 12:51:46 +0530418menu "Hashing Support"
419
Qu Wenruob98e8a22021-12-27 14:12:07 +0800420config BLAKE2
421 bool "Enable BLAKE2 support"
422 help
423 This option enables support of hashing using BLAKE2B algorithm.
424 The hash is calculated in software.
425 The BLAKE2 algorithm produces a hash value (digest) between 1 and
426 64 bytes.
427
gaurav ranaef201592015-02-20 12:51:46 +0530428config SHA1
429 bool "Enable SHA1 support"
430 help
431 This option enables support of hashing using SHA1 algorithm.
432 The hash is calculated in software.
433 The SHA1 algorithm produces a 160-bit (20-byte) hash value
434 (digest).
435
436config SHA256
437 bool "Enable SHA256 support"
438 help
439 This option enables support of hashing using SHA256 algorithm.
440 The hash is calculated in software.
441 The SHA256 algorithm produces a 256-bit (32-byte) hash value
442 (digest).
443
Reuben Dowle1908fd92020-04-16 17:36:52 +1200444config SHA512
445 bool "Enable SHA512 support"
Reuben Dowle1908fd92020-04-16 17:36:52 +1200446 help
447 This option enables support of hashing using SHA512 algorithm.
448 The hash is calculated in software.
449 The SHA512 algorithm produces a 512-bit (64-byte) hash value
450 (digest).
451
452config SHA384
453 bool "Enable SHA384 support"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500454 select SHA512
Reuben Dowle1908fd92020-04-16 17:36:52 +1200455 help
456 This option enables support of hashing using SHA384 algorithm.
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500457 The hash is calculated in software. This is also selects SHA512,
458 because these implementations share the bulk of the code..
Reuben Dowle1908fd92020-04-16 17:36:52 +1200459 The SHA384 algorithm produces a 384-bit (48-byte) hash value
460 (digest).
461
gaurav ranaef201592015-02-20 12:51:46 +0530462config SHA_HW_ACCEL
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200463 bool "Enable hardware acceleration for SHA hash functions"
gaurav ranaef201592015-02-20 12:51:46 +0530464 help
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200465 This option enables hardware acceleration for the SHA1 and SHA256
466 hashing algorithms. This affects the 'hash' command and also the
467 hash_lookup_algo() function.
468
Simon Glassf7b37c22021-09-25 19:43:17 -0600469if SPL
470
471config SPL_SHA1
472 bool "Enable SHA1 support in SPL"
473 default y if SHA1
474 help
475 This option enables support of hashing using SHA1 algorithm.
476 The hash is calculated in software.
477 The SHA1 algorithm produces a 160-bit (20-byte) hash value
478 (digest).
479
480config SPL_SHA256
481 bool "Enable SHA256 support in SPL"
482 default y if SHA256
483 help
484 This option enables support of hashing using SHA256 algorithm.
485 The hash is calculated in software.
486 The SHA256 algorithm produces a 256-bit (32-byte) hash value
487 (digest).
488
489config SPL_SHA512
490 bool "Enable SHA512 support in SPL"
491 default y if SHA512
492 help
493 This option enables support of hashing using SHA512 algorithm.
494 The hash is calculated in software.
495 The SHA512 algorithm produces a 512-bit (64-byte) hash value
496 (digest).
497
498config SPL_SHA384
499 bool "Enable SHA384 support in SPL"
500 default y if SHA384
501 select SPL_SHA512
502 help
503 This option enables support of hashing using SHA384 algorithm.
504 The hash is calculated in software. This is also selects SHA512,
505 because these implementations share the bulk of the code..
506 The SHA384 algorithm produces a 384-bit (48-byte) hash value
507 (digest).
508
Simon Glass383dd572021-09-25 19:43:18 -0600509config SPL_SHA_HW_ACCEL
510 bool "Enable hardware acceleration for SHA hash functions"
511 default y if SHA_HW_ACCEL
512 help
513 This option enables hardware acceleration for the SHA1 and SHA256
514 hashing algorithms. This affects the 'hash' command and also the
515 hash_lookup_algo() function.
516
517config SPL_SHA_PROG_HW_ACCEL
518 bool "Enable Progressive hashing support using hardware in SPL"
519 depends on SHA_PROG_HW_ACCEL
520 default y
521 help
522 This option enables hardware-acceleration for SHA progressive
523 hashing.
524 Data can be streamed in a block at a time and the hashing is
525 performed in hardware.
526
Simon Glassf7b37c22021-09-25 19:43:17 -0600527endif
528
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200529if SHA_HW_ACCEL
530
531config SHA512_HW_ACCEL
532 bool "Enable hardware acceleration for SHA512"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500533 depends on SHA512
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200534 help
535 This option enables hardware acceleration for the SHA384 and SHA512
536 hashing algorithms. This affects the 'hash' command and also the
537 hash_lookup_algo() function.
gaurav ranaef201592015-02-20 12:51:46 +0530538
539config SHA_PROG_HW_ACCEL
540 bool "Enable Progressive hashing support using hardware"
gaurav ranaef201592015-02-20 12:51:46 +0530541 help
Joel Stanley92efc1f2021-02-17 13:50:42 +1030542 This option enables hardware-acceleration for SHA progressive
543 hashing.
544 Data can be streamed in a block at a time and the hashing is
545 performed in hardware.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000546
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200547endif
548
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000549config MD5
Simon Glassd33d0db2020-05-06 08:03:56 -0600550 bool "Support MD5 algorithm"
551 help
552 This option enables MD5 support. MD5 is an algorithm designed
553 in 1991 that produces a 16-byte digest (or checksum) from its input
554 data. It has a number of vulnerabilities which preclude its use in
555 security applications, but it can be useful for providing a quick
556 checksum of a block of data.
557
558config SPL_MD5
559 bool "Support MD5 algorithm in SPL"
560 help
561 This option enables MD5 support in SPL. MD5 is an algorithm designed
562 in 1991 that produces a 16-byte digest (or checksum) from its input
563 data. It has a number of vulnerabilities which preclude its use in
564 security applications, but it can be useful for providing a quick
565 checksum of a block of data.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000566
Simon Glass577226c2021-09-25 19:43:24 -0600567config CRC32
568 def_bool y
569 help
570 Enables CRC32 support in U-Boot. This is normally required.
571
Marek Behúncdccc032017-09-03 17:00:23 +0200572config CRC32C
573 bool
574
Marek Behúnb139a7f2019-04-29 22:40:43 +0200575config XXHASH
576 bool
577
gaurav ranaef201592015-02-20 12:51:46 +0530578endmenu
579
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700580menu "Compression Support"
581
582config LZ4
583 bool "Enable LZ4 decompression support"
584 help
585 If this option is set, support for LZ4 compressed images
586 is included. The LZ4 algorithm can run in-place as long as the
587 compressed image is loaded to the end of the output buffer, and
588 trades lower compression ratios for much faster decompression.
Patrick Delaunaycd831af2021-03-10 10:16:28 +0100589
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700590 NOTE: This implements the release version of the LZ4 frame
591 format as generated by default by the 'lz4' command line tool.
592 This is not the same as the outdated, less efficient legacy
593 frame format currently (2015) implemented in the Linux kernel
594 (generated by 'lz4 -l'). The two formats are incompatible.
595
Simon Glass264aa5f2017-05-17 03:25:42 -0600596config LZMA
597 bool "Enable LZMA decompression support"
598 help
599 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
600 a dictionary compression algorithm that provides a high compression
601 ratio and fairly fast decompression speed. See also
602 CONFIG_CMD_LZMADEC which provides a decode command.
603
Boris Brezillonaa57d0f2017-02-27 18:22:06 +0100604config LZO
Tom Rinic20bb732017-07-22 18:36:16 -0400605 bool "Enable LZO decompression support"
606 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300607 This enables support for the LZO compression algorithm.
York Suna6945fe2017-08-15 11:14:43 -0700608
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100609config GZIP
Heiko Schocherb93cc602019-04-29 08:59:38 +0200610 bool "Enable gzip decompression support"
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100611 select ZLIB
612 default y
613 help
614 This enables support for GZIP compression algorithm.
615
Joao Marcos Costaae8abb12020-07-30 15:33:49 +0200616config ZLIB_UNCOMPRESS
617 bool "Enables zlib's uncompress() functionality"
618 help
619 This enables an extra zlib functionality: the uncompress() function,
620 which decompresses data from a buffer into another, knowing their
621 sizes. Unlike gunzip(), there is no header parsing.
622
Michael Walle3a6e3512020-05-22 14:07:36 +0200623config GZIP_COMPRESSED
624 bool
625 select ZLIB
626
Atish Patra1fa79622020-03-05 16:24:21 -0800627config BZIP2
628 bool "Enable bzip2 decompression support"
629 help
630 This enables support for BZIP2 compression algorithm.
631
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100632config ZLIB
633 bool
634 default y
635 help
636 This enables ZLIB compression lib.
637
Marek Behúne87e2002019-04-29 22:40:44 +0200638config ZSTD
639 bool "Enable Zstandard decompression support"
640 select XXHASH
641 help
642 This enables Zstandard decompression library.
643
Simon Glasse107bcd2018-11-06 15:21:30 -0700644config SPL_LZ4
645 bool "Enable LZ4 decompression support in SPL"
646 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200647 This enables support for the LZ4 decompression algorithm in SPL. LZ4
Simon Glasse107bcd2018-11-06 15:21:30 -0700648 is a lossless data compression algorithm that is focused on
649 fast compression and decompression speed. It belongs to the LZ77
650 family of byte-oriented compression schemes.
651
developer6a4e1d32020-04-21 09:28:38 +0200652config SPL_LZMA
653 bool "Enable LZMA decompression support for SPL build"
654 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200655 This enables support for LZMA compression algorithm for SPL boot.
developer6a4e1d32020-04-21 09:28:38 +0200656
Simon Glasse7ca7da2022-04-30 00:56:53 -0600657config VPL_LZMA
658 bool "Enable LZMA decompression support for VPL build"
659 default y if LZMA
660 help
661 This enables support for LZMA compression algorithm for VPL boot.
662
Jean-Jacques Hiblotdbde2882017-09-15 12:57:30 +0200663config SPL_LZO
664 bool "Enable LZO decompression support in SPL"
665 help
666 This enables support for LZO compression algorithm in the SPL.
667
York Suna6945fe2017-08-15 11:14:43 -0700668config SPL_GZIP
669 bool "Enable gzip decompression support for SPL build"
670 select SPL_ZLIB
671 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300672 This enables support for the GZIP compression algorithm for SPL boot.
York Suna6945fe2017-08-15 11:14:43 -0700673
674config SPL_ZLIB
675 bool
676 help
677 This enables compression lib for SPL boot.
678
Marek Behúne87e2002019-04-29 22:40:44 +0200679config SPL_ZSTD
680 bool "Enable Zstandard decompression support in SPL"
681 select XXHASH
682 help
683 This enables Zstandard decompression library in the SPL.
684
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700685endmenu
686
Przemyslaw Marczak37550132015-04-20 20:07:40 +0200687config ERRNO_STR
688 bool "Enable function for getting errno-related string message"
689 help
690 The function errno_str(int errno), returns a pointer to the errno
691 corresponding text message:
692 - if errno is null or positive number - a pointer to "Success" message
693 - if errno is negative - a pointer to errno related message
694
Alexey Brodkin2d2fa492018-06-05 17:17:57 +0300695config HEXDUMP
696 bool "Enable hexdump"
697 help
698 This enables functions for printing dumps of binary data.
699
Simon Glassa37fd4d2020-09-12 11:13:35 -0600700config SPL_HEXDUMP
701 bool "Enable hexdump in SPL"
Heinrich Schuchardt11df0722021-07-24 17:35:46 +0200702 depends on SPL && HEXDUMP
Simon Glassa37fd4d2020-09-12 11:13:35 -0600703 help
704 This enables functions for printing dumps of binary data in
705 SPL.
706
Sean Anderson3b4a6f52020-10-27 19:55:36 -0400707config GETOPT
708 bool "Enable getopt"
709 help
710 This enables functions for parsing command-line options.
711
Simon Glassa66c5412016-02-22 22:55:42 -0700712config OF_LIBFDT
713 bool "Enable the FDT library"
714 default y if OF_CONTROL
715 help
716 This enables the FDT library (libfdt). It provides functions for
717 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +0200718 removing nodes and properties, scanning through the tree and finding
Simon Glassa66c5412016-02-22 22:55:42 -0700719 particular compatible nodes. The library operates on a flattened
720 version of the device tree.
721
Simon Glassc48044d2019-10-27 09:47:40 -0600722config OF_LIBFDT_ASSUME_MASK
723 hex "Mask of conditions to assume for libfdt"
724 depends on OF_LIBFDT || FIT
725 default 0
726 help
727 Use this to change the assumptions made by libfdt about the
728 device tree it is working with. A value of 0 means that no assumptions
729 are made, and libfdt is able to deal with malicious data. A value of
730 0xff means all assumptions are made and any invalid data may cause
731 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
732
Maxime Ripard9e901ce2016-07-05 10:26:44 +0200733config OF_LIBFDT_OVERLAY
734 bool "Enable the FDT library overlay support"
Tom Rinic1e49ba2018-05-08 08:52:17 -0400735 depends on OF_LIBFDT
Praneeth Bajjuri7b71a012018-04-25 16:03:23 -0500736 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
Maxime Ripard9e901ce2016-07-05 10:26:44 +0200737 help
738 This enables the FDT library (libfdt) overlay support.
739
Simon Glass8b426922016-02-22 22:55:45 -0700740config SPL_OF_LIBFDT
741 bool "Enable the FDT library for SPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -0600742 depends on SPL_LIBGENERIC_SUPPORT
Simon Glass8b426922016-02-22 22:55:45 -0700743 default y if SPL_OF_CONTROL
744 help
745 This enables the FDT library (libfdt). It provides functions for
746 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +0200747 removing nodes and properties, scanning through the tree and finding
Simon Glass8b426922016-02-22 22:55:45 -0700748 particular compatible nodes. The library operates on a flattened
749 version of the device tree.
750
Simon Glassc48044d2019-10-27 09:47:40 -0600751config SPL_OF_LIBFDT_ASSUME_MASK
752 hex "Mask of conditions to assume for libfdt"
753 depends on SPL_OF_LIBFDT || FIT
754 default 0xff
755 help
756 Use this to change the assumptions made by libfdt in SPL about the
757 device tree it is working with. A value of 0 means that no assumptions
758 are made, and libfdt is able to deal with malicious data. A value of
759 0xff means all assumptions are made and any invalid data may cause
760 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
761
Simon Glassca8ec4b2018-10-01 12:22:21 -0600762config TPL_OF_LIBFDT
763 bool "Enable the FDT library for TPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -0600764 depends on TPL_LIBGENERIC_SUPPORT
Simon Glassca8ec4b2018-10-01 12:22:21 -0600765 default y if TPL_OF_CONTROL
766 help
767 This enables the FDT library (libfdt). It provides functions for
768 accessing binary device tree images in memory, such as adding and
769 removing nodes and properties, scanning through the tree and finding
770 particular compatible nodes. The library operates on a flattened
771 version of the device tree.
772
Simon Glassc48044d2019-10-27 09:47:40 -0600773config TPL_OF_LIBFDT_ASSUME_MASK
774 hex "Mask of conditions to assume for libfdt"
Tom Rini36a4ca02022-06-08 08:24:39 -0400775 depends on TPL_OF_LIBFDT || (FIT && TPL)
Simon Glassc48044d2019-10-27 09:47:40 -0600776 default 0xff
777 help
778 Use this to change the assumptions made by libfdt in TPL about the
779 device tree it is working with. A value of 0 means that no assumptions
780 are made, and libfdt is able to deal with malicious data. A value of
781 0xff means all assumptions are made and any invalid data may cause
782 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
783
Simon Glasse7ca7da2022-04-30 00:56:53 -0600784config VPL_OF_LIBFDT
785 bool "Enable the FDT library for VPL"
Tom Rini7fb323b2022-06-08 08:24:40 -0400786 depends on VPL
Simon Glasse7ca7da2022-04-30 00:56:53 -0600787 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
788 help
789 This enables the FDT library (libfdt). It provides functions for
790 accessing binary device tree images in memory, such as adding and
791 removing nodes and properties, scanning through the tree and finding
792 particular compatible nodes. The library operates on a flattened
793 version of the device tree.
794
795config VPL_OF_LIBFDT_ASSUME_MASK
796 hex "Mask of conditions to assume for libfdt"
Tom Rini7fb323b2022-06-08 08:24:40 -0400797 depends on VPL_OF_LIBFDT || (FIT && VPL)
Simon Glasse7ca7da2022-04-30 00:56:53 -0600798 default 0xff
799 help
800 Use this to change the assumptions made by libfdt in SPL about the
801 device tree it is working with. A value of 0 means that no assumptions
802 are made, and libfdt is able to deal with malicious data. A value of
803 0xff means all assumptions are made and any invalid data may cause
804 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
805
Heiko Schocherc9ab9102016-10-06 07:31:45 +0200806config FDT_FIXUP_PARTITIONS
807 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
808 depends on OF_LIBFDT
Masahiro Yamada734b7552018-07-20 11:04:09 +0900809 depends on CMD_MTDPARTS
Heiko Schocherc9ab9102016-10-06 07:31:45 +0200810 help
811 Allow overwriting defined partitions in the device tree blob
812 using partition info defined in the 'mtdparts' environment
813 variable.
814
Alexander Graffb228082016-08-19 01:23:23 +0200815menu "System tables"
Alexander Graf66f96e12016-08-19 01:23:29 +0200816 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
Alexander Graffb228082016-08-19 01:23:23 +0200817
Simon Glass5d093f32020-11-04 09:57:25 -0700818config BLOBLIST_TABLES
819 bool "Put tables in a bloblist"
Simon Glass171c6462021-03-15 18:11:22 +1300820 depends on X86 && BLOBLIST
Simon Glass5d093f32020-11-04 09:57:25 -0700821 help
822 Normally tables are placed at address 0xf0000 and can be up to 64KB
823 long. With this option, tables are instead placed in the bloblist
824 with a pointer from 0xf0000. The size can then be larger and the
825 tables can be placed high in memory.
826
Alexander Graffb228082016-08-19 01:23:23 +0200827config GENERATE_SMBIOS_TABLE
828 bool "Generate an SMBIOS (System Management BIOS) table"
829 default y
Alexander Graf66f96e12016-08-19 01:23:29 +0200830 depends on X86 || EFI_LOADER
Alexander Graffb228082016-08-19 01:23:23 +0200831 help
832 The System Management BIOS (SMBIOS) specification addresses how
833 motherboard and system vendors present management information about
834 their products in a standard format by extending the BIOS interface
835 on Intel architecture systems.
836
837 Check http://www.dmtf.org/standards/smbios for details.
838
Simon Glass052a03e2020-11-05 06:32:11 -0700839 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
840 the devicetree.
841
Tero Kristocfbe15c2021-06-11 11:45:02 +0300842config LIB_RATIONAL
843 bool "enable continued fraction calculation routines"
844
845config SPL_LIB_RATIONAL
846 bool "enable continued fraction calculation routines for SPL"
847 depends on SPL
848
Alexander Graffb228082016-08-19 01:23:23 +0200849endmenu
850
AKASHI Takahirof7025262019-11-13 09:44:53 +0900851config ASN1_COMPILER
852 bool
Philippe Reynes2aba9442022-03-28 22:56:54 +0200853 help
854 ASN.1 (Abstract Syntax Notation One) is a standard interface
855 description language for defining data structures that can be
856 serialized and deserialized in a cross-platform way. It is
857 broadly used in telecommunications and computer networking,
858 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
859 This option enables the support of the asn1 compiler.
AKASHI Takahirof7025262019-11-13 09:44:53 +0900860
AKASHI Takahiro3a888712019-11-13 09:44:55 +0900861config ASN1_DECODER
862 bool
863 help
Philippe Reynes2aba9442022-03-28 22:56:54 +0200864 ASN.1 (Abstract Syntax Notation One) is a standard interface
865 description language for defining data structures that can be
866 serialized and deserialized in a cross-platform way. It is
867 broadly used in telecommunications and computer networking,
868 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
869 This option enables the support of the asn1 decoder.
AKASHI Takahiro3a888712019-11-13 09:44:55 +0900870
Philippe Reynescf538b52022-03-28 22:56:56 +0200871config SPL_ASN1_DECODER
872 bool
873 help
874 ASN.1 (Abstract Syntax Notation One) is a standard interface
875 description language for defining data structures that can be
876 serialized and deserialized in a cross-platform way. It is
877 broadly used in telecommunications and computer networking,
878 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
879 This option enables the support of the asn1 decoder in the SPL.
880
AKASHI Takahiro54923642019-11-13 09:44:57 +0900881config OID_REGISTRY
882 bool
883 help
Philippe Reynese35c3a22022-03-28 22:56:55 +0200884 In computing, object identifiers or OIDs are an identifier mechanism
885 standardized by the International Telecommunication Union (ITU) and
886 ISO/IEC for naming any object, concept, or "thing" with a globally
887 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
AKASHI Takahiro54923642019-11-13 09:44:57 +0900888 Enable fast lookup object identifier registry.
889
Philippe Reynescf538b52022-03-28 22:56:56 +0200890config SPL_OID_REGISTRY
891 bool
892 help
893 In computing, object identifiers or OIDs are an identifier mechanism
894 standardized by the International Telecommunication Union (ITU) and
895 ISO/IEC for naming any object, concept, or "thing" with a globally
896 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
897 Enable fast lookup object identifier registry in the SPL.
898
Christian Gmeiner19859982020-11-03 15:34:51 +0100899config SMBIOS_PARSER
900 bool "SMBIOS parser"
901 help
902 A simple parser for SMBIOS data.
903
Simon Glass9539e692015-07-31 09:31:36 -0600904source lib/efi/Kconfig
Alexander Graf67ee7052016-03-04 01:10:07 +0100905source lib/efi_loader/Kconfig
Bryan O'Donoghue4b0de7c2018-03-13 16:50:27 +0000906source lib/optee/Kconfig
Simon Glass9539e692015-07-31 09:31:36 -0600907
Thierry Reding52c7f1f32019-03-21 19:10:04 +0100908config TEST_FDTDEC
909 bool "enable fdtdec test"
910 depends on OF_LIBFDT
911
AKASHI Takahiro51ba5222019-11-13 09:44:49 +0900912config LIB_DATE
913 bool
914
Keerthy76f361a2020-02-12 13:55:03 +0530915config LIB_ELF
916 bool
917 help
Patrick Delaunayfb67df82021-01-04 15:33:28 +0100918 Support basic elf loading/validating functions.
919 This supports for 32 bit and 64 bit versions.
Keerthy76f361a2020-02-12 13:55:03 +0530920
Patrick Delaunayd62063d2021-03-10 10:16:25 +0100921config LMB
922 bool "Enable the logical memory blocks library (lmb)"
Tom Rini53320122022-04-06 09:21:25 -0400923 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
Patrick Delaunayd62063d2021-03-10 10:16:25 +0100924 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
925 help
926 Support the library logical memory blocks.
927
Patrick Delaunay71cc9c52021-03-10 10:16:31 +0100928config LMB_USE_MAX_REGIONS
Heinrich Schuchardtc4bc9182021-11-14 09:38:53 +0100929 bool "Use a common number of memory and reserved regions in lmb lib"
Patrick Delaunay71cc9c52021-03-10 10:16:31 +0100930 depends on LMB
931 default y
932 help
933 Define the number of supported memory regions in the library logical
934 memory blocks.
935 This feature allow to reduce the lmb library size by using compiler
936 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
Patrick Delaunaycd831af2021-03-10 10:16:28 +0100937
938config LMB_MAX_REGIONS
939 int "Number of memory and reserved regions in lmb lib"
Patrick Delaunay71cc9c52021-03-10 10:16:31 +0100940 depends on LMB && LMB_USE_MAX_REGIONS
Patrick Delaunaycd831af2021-03-10 10:16:28 +0100941 default 8
942 help
943 Define the number of supported regions, memory and reserved, in the
944 library logical memory blocks.
Patrick Delaunay71cc9c52021-03-10 10:16:31 +0100945
946config LMB_MEMORY_REGIONS
947 int "Number of memory regions in lmb lib"
948 depends on LMB && !LMB_USE_MAX_REGIONS
949 default 8
950 help
951 Define the number of supported memory regions in the library logical
952 memory blocks.
953 The minimal value is CONFIG_NR_DRAM_BANKS.
954
955config LMB_RESERVED_REGIONS
956 int "Number of reserved regions in lmb lib"
957 depends on LMB && !LMB_USE_MAX_REGIONS
958 default 8
959 help
960 Define the number of supported reserved regions in the library logical
961 memory blocks.
962
Eugen Hristevdb6bbcb2022-01-04 18:20:19 +0200963endmenu