blob: 884569f9b154558129344d5424fd715dbe82b5ca [file] [log] [blame]
Masahiro Yamadaed363232014-09-16 16:32:58 +09001menu "Library routines"
2
Marek Szyprowski69be8fd2020-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 Menge0103152021-02-25 17:22:36 +08009 This library only works in the post-relocation phase.
10
Marek Szyprowski69be8fd2020-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 Glass6405ab72021-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 Ford6ef2f902017-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 Glass3c10dc92019-12-06 21:41:34 -070035config BINMAN_FDT
36 bool "Allow access to binman information in the device tree"
Bin Meng56e72572021-02-03 21:20:02 +080037 depends on BINMAN && DM && OF_CONTROL
Bin Meng1621d3c2021-05-10 20:23:36 +080038 default y if OF_SEPARATE || OF_EMBED
Simon Glass3c10dc92019-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 Yamadab0928da2014-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 Glass1a46cb62021-07-02 12:36:17 -060053config CHARSET
54 bool
Simon Glass1a46cb62021-07-02 12:36:17 -060055
Faiz Abbas36c18772018-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 Meng2895c4b2018-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 Yamada45ccec82014-10-24 01:30:43 +090068config HAVE_PRIVATE_LIBGCC
69 bool
70
Adam Forda451bc22018-02-06 12:14:28 -060071config LIB_UUID
72 bool
73
Alex Kiernan14ad44a2018-04-19 04:32:54 +000074config PRINTF
75 bool
76 default y
77
78config SPL_PRINTF
79 bool
80 select SPL_SPRINTF
Simon Glass27084c02019-09-25 08:56:27 -060081 select SPL_STRTO if !SPL_USE_TINY_PRINTF
Alex Kiernan14ad44a2018-04-19 04:32:54 +000082
83config TPL_PRINTF
84 bool
85 select TPL_SPRINTF
Simon Glass27084c02019-09-25 08:56:27 -060086 select TPL_STRTO if !TPL_USE_TINY_PRINTF
Alex Kiernan14ad44a2018-04-19 04:32:54 +000087
Simon Glass747093d2022-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 Kiernan14ad44a2018-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 Glass747093d2022-04-30 00:56:53 -0600103config VPL_SPRINTF
104 bool
105
Andrii Anisove87dfb02020-08-06 12:42:52 +0300106config SSCANF
107 bool
Andrii Anisove87dfb02020-08-06 12:42:52 +0300108
Alex Kiernan14ad44a2018-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 Glass747093d2022-04-30 00:56:53 -0600119config VPL_STRTO
120 bool
121
Alex Kiernanc232d142018-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 Yamada45ccec82014-10-24 01:30:43 +0900133config USE_PRIVATE_LIBGCC
134 bool "Use private libgcc"
135 depends on HAVE_PRIVATE_LIBGCC
Marek Vasut91b86e22016-05-26 18:01:47 +0200136 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
Masahiro Yamada45ccec82014-10-24 01:30:43 +0900137 help
138 This option allows you to use the built-in libgcc implementation
Masahiro Yamada67976302016-03-30 20:17:42 +0900139 of U-Boot instead of the one provided by the compiler.
Masahiro Yamada45ccec82014-10-24 01:30:43 +0900140 If unsure, say N.
141
Masahiro Yamada8c688bc2014-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 Glass27084c02019-09-25 08:56:27 -0600150config SPL_USE_TINY_PRINTF
Thomas Hebb37ef1772019-11-10 08:23:53 -0800151 bool "Enable tiny printf() version in SPL"
Simon Glass27084c02019-09-25 08:56:27 -0600152 depends on SPL
Tom Rini2a51e162019-06-08 12:46:18 -0400153 default y
Stefan Roese7d9cde12015-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 Glass27084c02019-09-25 08:56:27 -0600162config TPL_USE_TINY_PRINTF
Thomas Hebb37ef1772019-11-10 08:23:53 -0800163 bool "Enable tiny printf() version in TPL"
Simon Glass27084c02019-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 Glass747093d2022-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 Yamada7e3caa82017-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 Hershberger1a606502015-04-21 17:02:42 -0500195config REGEX
196 bool "Enable regular expression support"
Joe Hershbergerf7848d92015-06-22 17:57:36 -0500197 default y if NET
Joe Hershberger1a606502015-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 Forda5a37562018-02-06 10:18:18 -0600204choice
205 prompt "Pseudo-random library support type"
Heinrich Schuchardt16112352020-01-19 19:28:12 +0100206 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
Heinrich Schuchardt28cef9c2020-11-20 12:55:22 +0100207 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
Adam Forda5a37562018-02-06 10:18:18 -0600208 default LIB_RAND
Masahiro Yamada3850dbe2015-06-11 19:16:43 +0900209 help
Adam Forda5a37562018-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 Juszkiewicz43e442a2020-05-26 19:07:15 +0200218 bool "HW Engine for random library support"
Adam Forda5a37562018-02-06 10:18:18 -0600219
220endchoice
Michal Simek9ba9e852015-05-25 11:37:22 +0200221
Simon Glasse1722fc2021-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 Glassab4458b2017-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 Packham6e705112019-01-13 22:13:28 +1300246 size-constrained environments even this may be too big. Enable this
Simon Glassab4458b2017-04-02 09:50:28 -0600247 option to reduce code size slightly at the cost of some speed.
248
Philipp Tomsich96b90822017-08-03 22:52:04 +0200249config TPL_TINY_MEMSET
250 bool "Use a very small memset() in TPL"
251 help
252 The faster memset() is the arch-specific one (if available) enabled
253 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
254 better performance by writing a word at a time. But in very
Chris Packham6e705112019-01-13 22:13:28 +1300255 size-constrained environments even this may be too big. Enable this
Philipp Tomsich96b90822017-08-03 22:52:04 +0200256 option to reduce code size slightly at the cost of some speed.
257
Boris Brezillonaa049152017-02-27 18:22:05 +0100258config RBTREE
259 bool
260
Nandor Handa5337a2017-11-08 15:35:14 +0000261config BITREVERSE
262 bool "Bit reverse library from Linux"
263
Simon Glassa24a78d2019-04-08 13:20:51 -0600264config TRACE
265 bool "Support for tracing of function calls and timing"
266 imply CMD_TRACE
Pragnesh Patela80f8512021-01-17 18:11:24 +0530267 select TIMER_EARLY
Simon Glassa24a78d2019-04-08 13:20:51 -0600268 help
269 Enables function tracing within U-Boot. This allows recording of call
270 traces including timing information. The command can write data to
271 memory for exporting for analysis (e.g. using bootchart).
272 See doc/README.trace for full details.
273
Simon Glass1c6eb072019-04-08 13:20:52 -0600274config TRACE_BUFFER_SIZE
275 hex "Size of trace buffer in U-Boot"
276 depends on TRACE
277 default 0x01000000
278 help
279 Sets the size of the trace buffer in U-Boot. This is allocated from
280 memory during relocation. If this buffer is too small, the trace
281 history will be truncated, with later records omitted.
282
283 If early trace is enabled (i.e. before relocation), this buffer must
284 be large enough to include all the data from the early trace buffer as
285 well, since this is copied over to the main buffer during relocation.
286
287 A trace record is emitted for each function call and each record is
288 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
289 the size is too small then 'trace stats' will show a message saying
290 how many records were dropped due to buffer overflow.
291
Heinrich Schuchardtda0fb5f2019-06-02 13:30:09 +0200292config TRACE_CALL_DEPTH_LIMIT
293 int "Trace call depth limit"
294 depends on TRACE
295 default 15
296 help
297 Sets the maximum call depth up to which function calls are recorded.
298
Simon Glass1c6eb072019-04-08 13:20:52 -0600299config TRACE_EARLY
300 bool "Enable tracing before relocation"
301 depends on TRACE
302 help
303 Sometimes it is helpful to trace execution of U-Boot before
304 relocation. This is possible by using a arch-specific, fixed buffer
305 position in memory. Enable this option to start tracing as early as
306 possible after U-Boot starts.
307
308config TRACE_EARLY_SIZE
309 hex "Size of early trace buffer in U-Boot"
310 depends on TRACE_EARLY
311 default 0x00100000
312 help
313 Sets the size of the early trace buffer in bytes. This is used to hold
314 tracing information before relocation.
315
Heinrich Schuchardtda0fb5f2019-06-02 13:30:09 +0200316config TRACE_EARLY_CALL_DEPTH_LIMIT
317 int "Early trace call depth limit"
318 depends on TRACE_EARLY
319 default 200
320 help
321 Sets the maximum call depth up to which function calls are recorded
322 during early tracing.
323
Simon Glass1c6eb072019-04-08 13:20:52 -0600324config TRACE_EARLY_ADDR
325 hex "Address of early trace buffer in U-Boot"
326 depends on TRACE_EARLY
327 default 0x00100000
328 help
329 Sets the address of the early trace buffer in U-Boot. This memory
330 must be accessible before relocation.
331
332 A trace record is emitted for each function call and each record is
333 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
334 the size is too small then the message which says the amount of early
335 data being coped will the the same as the
336
Loic Poulain334a9b92021-11-25 18:16:14 +0100337config CIRCBUF
338 bool "Enable circular buffer support"
339
Simon Glassd1389402015-06-23 15:38:23 -0600340source lib/dhry/Kconfig
341
Simon Glassb1a873d2017-04-26 22:27:49 -0600342menu "Security support"
343
344config AES
345 bool "Support the AES algorithm"
346 help
347 This provides a means to encrypt and decrypt data using the AES
348 (Advanced Encryption Standard). This algorithm uses a symetric key
349 and is widely used as a streaming cipher. Different key lengths are
350 supported by the algorithm but only a 128-bit key is supported at
351 present.
352
Alexandru Gagniuc928a8be2021-07-29 11:47:16 -0500353source lib/ecdsa/Kconfig
Ruchika Guptad9f23c72015-01-23 16:01:56 +0530354source lib/rsa/Kconfig
AKASHI Takahirob4adf622019-11-13 09:45:00 +0900355source lib/crypto/Kconfig
Steffen Jaeckel26dd9932021-07-08 15:57:33 +0200356source lib/crypt/Kconfig
Ruchika Guptac4beb222015-01-23 16:01:51 +0530357
Simon Glassa7d660b2015-08-22 18:31:19 -0600358config TPM
359 bool "Trusted Platform Module (TPM) Support"
Simon Glass2419cd12015-10-03 06:39:36 -0600360 depends on DM
Simon Glassa7d660b2015-08-22 18:31:19 -0600361 help
362 This enables support for TPMs which can be used to provide security
363 features for your board. The TPM can be connected via LPC or I2C
364 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
365 command to interactive the TPM. Driver model support is provided
366 for the low-level TPM interface, but only one TPM is supported at
367 a time by the TPM library.
368
Simon Glass63078962018-10-01 12:22:19 -0600369config SPL_TPM
370 bool "Trusted Platform Module (TPM) Support in SPL"
371 depends on SPL_DM
372 help
373 This enables support for TPMs which can be used to provide security
374 features for your board. The TPM can be connected via LPC or I2C
375 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
376 command to interactive the TPM. Driver model support is provided
377 for the low-level TPM interface, but only one TPM is supported at
378 a time by the TPM library.
379
380config TPL_TPM
381 bool "Trusted Platform Module (TPM) Support in TPL"
382 depends on TPL_DM
383 help
384 This enables support for TPMs which can be used to provide security
385 features for your board. The TPM can be connected via LPC or I2C
386 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
387 command to interactive the TPM. Driver model support is provided
388 for the low-level TPM interface, but only one TPM is supported at
389 a time by the TPM library.
390
Simon Glass747093d2022-04-30 00:56:53 -0600391config VPL_TPM
392 bool "Trusted Platform Module (TPM) Support in VPL"
393 depends on VPL_DM
394 help
395 This enables support for TPMs which can be used to provide security
396 features for your board. The TPM can be connected via LPC or I2C
397 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
398 command to interactive the TPM. Driver model support is provided
399 for the low-level TPM interface, but only one TPM is supported at
400 a time by the TPM library.
401
Simon Glassb1a873d2017-04-26 22:27:49 -0600402endmenu
403
Igor Opaniuk33305842018-06-03 21:56:37 +0300404menu "Android Verified Boot"
405
406config LIBAVB
407 bool "Android Verified Boot 2.0 support"
408 depends on ANDROID_BOOT_IMAGE
Igor Opaniuk33305842018-06-03 21:56:37 +0300409 help
410 This enables support of Android Verified Boot 2.0 which can be used
411 to assure the end user of the integrity of the software running on a
412 device. Introduces such features as boot chain of trust, rollback
413 protection etc.
414
415endmenu
416
gaurav rana94e3c8c2015-02-20 12:51:46 +0530417menu "Hashing Support"
418
Qu Wenruo7c3fd5c2021-12-27 14:12:07 +0800419config BLAKE2
420 bool "Enable BLAKE2 support"
421 help
422 This option enables support of hashing using BLAKE2B algorithm.
423 The hash is calculated in software.
424 The BLAKE2 algorithm produces a hash value (digest) between 1 and
425 64 bytes.
426
gaurav rana94e3c8c2015-02-20 12:51:46 +0530427config SHA1
428 bool "Enable SHA1 support"
429 help
430 This option enables support of hashing using SHA1 algorithm.
431 The hash is calculated in software.
432 The SHA1 algorithm produces a 160-bit (20-byte) hash value
433 (digest).
434
435config SHA256
436 bool "Enable SHA256 support"
437 help
438 This option enables support of hashing using SHA256 algorithm.
439 The hash is calculated in software.
440 The SHA256 algorithm produces a 256-bit (32-byte) hash value
441 (digest).
442
Reuben Dowled16b38f2020-04-16 17:36:52 +1200443config SHA512
444 bool "Enable SHA512 support"
Reuben Dowled16b38f2020-04-16 17:36:52 +1200445 help
446 This option enables support of hashing using SHA512 algorithm.
447 The hash is calculated in software.
448 The SHA512 algorithm produces a 512-bit (64-byte) hash value
449 (digest).
450
451config SHA384
452 bool "Enable SHA384 support"
Alexandru Gagniuce60e4492021-09-02 19:54:18 -0500453 select SHA512
Reuben Dowled16b38f2020-04-16 17:36:52 +1200454 help
455 This option enables support of hashing using SHA384 algorithm.
Alexandru Gagniuce60e4492021-09-02 19:54:18 -0500456 The hash is calculated in software. This is also selects SHA512,
457 because these implementations share the bulk of the code..
Reuben Dowled16b38f2020-04-16 17:36:52 +1200458 The SHA384 algorithm produces a 384-bit (48-byte) hash value
459 (digest).
460
gaurav rana94e3c8c2015-02-20 12:51:46 +0530461config SHA_HW_ACCEL
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200462 bool "Enable hardware acceleration for SHA hash functions"
gaurav rana94e3c8c2015-02-20 12:51:46 +0530463 help
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200464 This option enables hardware acceleration for the SHA1 and SHA256
465 hashing algorithms. This affects the 'hash' command and also the
466 hash_lookup_algo() function.
467
Simon Glass603d15a2021-09-25 19:43:17 -0600468if SPL
469
470config SPL_SHA1
471 bool "Enable SHA1 support in SPL"
472 default y if SHA1
473 help
474 This option enables support of hashing using SHA1 algorithm.
475 The hash is calculated in software.
476 The SHA1 algorithm produces a 160-bit (20-byte) hash value
477 (digest).
478
479config SPL_SHA256
480 bool "Enable SHA256 support in SPL"
481 default y if SHA256
482 help
483 This option enables support of hashing using SHA256 algorithm.
484 The hash is calculated in software.
485 The SHA256 algorithm produces a 256-bit (32-byte) hash value
486 (digest).
487
488config SPL_SHA512
489 bool "Enable SHA512 support in SPL"
490 default y if SHA512
491 help
492 This option enables support of hashing using SHA512 algorithm.
493 The hash is calculated in software.
494 The SHA512 algorithm produces a 512-bit (64-byte) hash value
495 (digest).
496
497config SPL_SHA384
498 bool "Enable SHA384 support in SPL"
499 default y if SHA384
500 select SPL_SHA512
501 help
502 This option enables support of hashing using SHA384 algorithm.
503 The hash is calculated in software. This is also selects SHA512,
504 because these implementations share the bulk of the code..
505 The SHA384 algorithm produces a 384-bit (48-byte) hash value
506 (digest).
507
Simon Glass2c212562021-09-25 19:43:18 -0600508config SPL_SHA_HW_ACCEL
509 bool "Enable hardware acceleration for SHA hash functions"
510 default y if SHA_HW_ACCEL
511 help
512 This option enables hardware acceleration for the SHA1 and SHA256
513 hashing algorithms. This affects the 'hash' command and also the
514 hash_lookup_algo() function.
515
516config SPL_SHA_PROG_HW_ACCEL
517 bool "Enable Progressive hashing support using hardware in SPL"
518 depends on SHA_PROG_HW_ACCEL
519 default y
520 help
521 This option enables hardware-acceleration for SHA progressive
522 hashing.
523 Data can be streamed in a block at a time and the hashing is
524 performed in hardware.
525
Simon Glass603d15a2021-09-25 19:43:17 -0600526endif
527
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200528if SHA_HW_ACCEL
529
530config SHA512_HW_ACCEL
531 bool "Enable hardware acceleration for SHA512"
Alexandru Gagniuce60e4492021-09-02 19:54:18 -0500532 depends on SHA512
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200533 help
534 This option enables hardware acceleration for the SHA384 and SHA512
535 hashing algorithms. This affects the 'hash' command and also the
536 hash_lookup_algo() function.
gaurav rana94e3c8c2015-02-20 12:51:46 +0530537
538config SHA_PROG_HW_ACCEL
539 bool "Enable Progressive hashing support using hardware"
gaurav rana94e3c8c2015-02-20 12:51:46 +0530540 help
Joel Stanleya479f102021-02-17 13:50:42 +1030541 This option enables hardware-acceleration for SHA progressive
542 hashing.
543 Data can be streamed in a block at a time and the hashing is
544 performed in hardware.
Andre Przywarabea79d72017-03-15 01:19:05 +0000545
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200546endif
547
Andre Przywarabea79d72017-03-15 01:19:05 +0000548config MD5
Simon Glass8239be62020-05-06 08:03:56 -0600549 bool "Support MD5 algorithm"
550 help
551 This option enables MD5 support. MD5 is an algorithm designed
552 in 1991 that produces a 16-byte digest (or checksum) from its input
553 data. It has a number of vulnerabilities which preclude its use in
554 security applications, but it can be useful for providing a quick
555 checksum of a block of data.
556
557config SPL_MD5
558 bool "Support MD5 algorithm in SPL"
559 help
560 This option enables MD5 support in SPL. MD5 is an algorithm designed
561 in 1991 that produces a 16-byte digest (or checksum) from its input
562 data. It has a number of vulnerabilities which preclude its use in
563 security applications, but it can be useful for providing a quick
564 checksum of a block of data.
Andre Przywarabea79d72017-03-15 01:19:05 +0000565
Simon Glasse7d285b2021-09-25 19:43:24 -0600566config CRC32
567 def_bool y
568 help
569 Enables CRC32 support in U-Boot. This is normally required.
570
Marek Behún85d8bf52017-09-03 17:00:23 +0200571config CRC32C
572 bool
573
Marek Behún83a486b2019-04-29 22:40:43 +0200574config XXHASH
575 bool
576
gaurav rana94e3c8c2015-02-20 12:51:46 +0530577endmenu
578
Julius Werner027b7282015-10-06 20:03:53 -0700579menu "Compression Support"
580
581config LZ4
582 bool "Enable LZ4 decompression support"
583 help
584 If this option is set, support for LZ4 compressed images
585 is included. The LZ4 algorithm can run in-place as long as the
586 compressed image is loaded to the end of the output buffer, and
587 trades lower compression ratios for much faster decompression.
Patrick Delaunay4fa01502021-03-10 10:16:28 +0100588
Julius Werner027b7282015-10-06 20:03:53 -0700589 NOTE: This implements the release version of the LZ4 frame
590 format as generated by default by the 'lz4' command line tool.
591 This is not the same as the outdated, less efficient legacy
592 frame format currently (2015) implemented in the Linux kernel
593 (generated by 'lz4 -l'). The two formats are incompatible.
594
Simon Glassaed998a2017-05-17 03:25:42 -0600595config LZMA
596 bool "Enable LZMA decompression support"
597 help
598 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
599 a dictionary compression algorithm that provides a high compression
600 ratio and fairly fast decompression speed. See also
601 CONFIG_CMD_LZMADEC which provides a decode command.
602
Boris Brezillon173aafb2017-02-27 18:22:06 +0100603config LZO
Tom Rinid56b4b12017-07-22 18:36:16 -0400604 bool "Enable LZO decompression support"
605 help
Oleksandr Suvorov5145bc72021-09-01 16:05:08 +0300606 This enables support for the LZO compression algorithm.
York Sun7264f292017-08-15 11:14:43 -0700607
Marek Vasut95f4bbd2019-03-08 16:06:55 +0100608config GZIP
Heiko Schocher51323612019-04-29 08:59:38 +0200609 bool "Enable gzip decompression support"
Marek Vasut95f4bbd2019-03-08 16:06:55 +0100610 select ZLIB
611 default y
612 help
613 This enables support for GZIP compression algorithm.
614
Joao Marcos Costa81014f72020-07-30 15:33:49 +0200615config ZLIB_UNCOMPRESS
616 bool "Enables zlib's uncompress() functionality"
617 help
618 This enables an extra zlib functionality: the uncompress() function,
619 which decompresses data from a buffer into another, knowing their
620 sizes. Unlike gunzip(), there is no header parsing.
621
Michael Walleeff5a542020-05-22 14:07:36 +0200622config GZIP_COMPRESSED
623 bool
624 select ZLIB
625
Atish Patra2a2119e2020-03-05 16:24:21 -0800626config BZIP2
627 bool "Enable bzip2 decompression support"
628 help
629 This enables support for BZIP2 compression algorithm.
630
Marek Vasut95f4bbd2019-03-08 16:06:55 +0100631config ZLIB
632 bool
633 default y
634 help
635 This enables ZLIB compression lib.
636
Marek Behún8509f222019-04-29 22:40:44 +0200637config ZSTD
638 bool "Enable Zstandard decompression support"
639 select XXHASH
640 help
641 This enables Zstandard decompression library.
642
Simon Glass048c6e82018-11-06 15:21:30 -0700643config SPL_LZ4
644 bool "Enable LZ4 decompression support in SPL"
645 help
Marcin Juszkiewicz43e442a2020-05-26 19:07:15 +0200646 This enables support for the LZ4 decompression algorithm in SPL. LZ4
Simon Glass048c6e82018-11-06 15:21:30 -0700647 is a lossless data compression algorithm that is focused on
648 fast compression and decompression speed. It belongs to the LZ77
649 family of byte-oriented compression schemes.
650
Weijie Gao04cb3992020-04-21 09:28:38 +0200651config SPL_LZMA
652 bool "Enable LZMA decompression support for SPL build"
653 help
Marcin Juszkiewicz43e442a2020-05-26 19:07:15 +0200654 This enables support for LZMA compression algorithm for SPL boot.
Weijie Gao04cb3992020-04-21 09:28:38 +0200655
Simon Glass747093d2022-04-30 00:56:53 -0600656config VPL_LZMA
657 bool "Enable LZMA decompression support for VPL build"
658 default y if LZMA
659 help
660 This enables support for LZMA compression algorithm for VPL boot.
661
Jean-Jacques Hiblotf52bdf42017-09-15 12:57:30 +0200662config SPL_LZO
663 bool "Enable LZO decompression support in SPL"
664 help
665 This enables support for LZO compression algorithm in the SPL.
666
York Sun7264f292017-08-15 11:14:43 -0700667config SPL_GZIP
668 bool "Enable gzip decompression support for SPL build"
669 select SPL_ZLIB
670 help
Oleksandr Suvorov5145bc72021-09-01 16:05:08 +0300671 This enables support for the GZIP compression algorithm for SPL boot.
York Sun7264f292017-08-15 11:14:43 -0700672
673config SPL_ZLIB
674 bool
675 help
676 This enables compression lib for SPL boot.
677
Marek Behún8509f222019-04-29 22:40:44 +0200678config SPL_ZSTD
679 bool "Enable Zstandard decompression support in SPL"
680 select XXHASH
681 help
682 This enables Zstandard decompression library in the SPL.
683
Julius Werner027b7282015-10-06 20:03:53 -0700684endmenu
685
Przemyslaw Marczak6501ff62015-04-20 20:07:40 +0200686config ERRNO_STR
687 bool "Enable function for getting errno-related string message"
688 help
689 The function errno_str(int errno), returns a pointer to the errno
690 corresponding text message:
691 - if errno is null or positive number - a pointer to "Success" message
692 - if errno is negative - a pointer to errno related message
693
Alexey Brodkinf8c987f2018-06-05 17:17:57 +0300694config HEXDUMP
695 bool "Enable hexdump"
696 help
697 This enables functions for printing dumps of binary data.
698
Simon Glass26637e22020-09-12 11:13:35 -0600699config SPL_HEXDUMP
700 bool "Enable hexdump in SPL"
Heinrich Schuchardtfa3f1f12021-07-24 17:35:46 +0200701 depends on SPL && HEXDUMP
Simon Glass26637e22020-09-12 11:13:35 -0600702 help
703 This enables functions for printing dumps of binary data in
704 SPL.
705
Sean Anderson72eda502020-10-27 19:55:36 -0400706config GETOPT
707 bool "Enable getopt"
708 help
709 This enables functions for parsing command-line options.
710
Simon Glass69e173e2016-02-22 22:55:42 -0700711config OF_LIBFDT
712 bool "Enable the FDT library"
713 default y if OF_CONTROL
714 help
715 This enables the FDT library (libfdt). It provides functions for
716 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinf1a7ba12017-08-18 17:58:51 +0200717 removing nodes and properties, scanning through the tree and finding
Simon Glass69e173e2016-02-22 22:55:42 -0700718 particular compatible nodes. The library operates on a flattened
719 version of the device tree.
720
Simon Glass0d76afc2019-10-27 09:47:40 -0600721config OF_LIBFDT_ASSUME_MASK
722 hex "Mask of conditions to assume for libfdt"
723 depends on OF_LIBFDT || FIT
724 default 0
725 help
726 Use this to change the assumptions made by libfdt about the
727 device tree it is working with. A value of 0 means that no assumptions
728 are made, and libfdt is able to deal with malicious data. A value of
729 0xff means all assumptions are made and any invalid data may cause
730 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
731
Maxime Ripardddf67f72016-07-05 10:26:44 +0200732config OF_LIBFDT_OVERLAY
733 bool "Enable the FDT library overlay support"
Tom Rini64175722018-05-08 08:52:17 -0400734 depends on OF_LIBFDT
Praneeth Bajjuri58a46f82018-04-25 16:03:23 -0500735 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
Maxime Ripardddf67f72016-07-05 10:26:44 +0200736 help
737 This enables the FDT library (libfdt) overlay support.
738
Simon Glassaa34fbc2016-02-22 22:55:45 -0700739config SPL_OF_LIBFDT
740 bool "Enable the FDT library for SPL"
Simon Glass747093d2022-04-30 00:56:53 -0600741 depends on SPL_LIBGENERIC_SUPPORT
Simon Glassaa34fbc2016-02-22 22:55:45 -0700742 default y if SPL_OF_CONTROL
743 help
744 This enables the FDT library (libfdt). It provides functions for
745 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinf1a7ba12017-08-18 17:58:51 +0200746 removing nodes and properties, scanning through the tree and finding
Simon Glassaa34fbc2016-02-22 22:55:45 -0700747 particular compatible nodes. The library operates on a flattened
748 version of the device tree.
749
Simon Glass0d76afc2019-10-27 09:47:40 -0600750config SPL_OF_LIBFDT_ASSUME_MASK
751 hex "Mask of conditions to assume for libfdt"
752 depends on SPL_OF_LIBFDT || FIT
753 default 0xff
754 help
755 Use this to change the assumptions made by libfdt in SPL about the
756 device tree it is working with. A value of 0 means that no assumptions
757 are made, and libfdt is able to deal with malicious data. A value of
758 0xff means all assumptions are made and any invalid data may cause
759 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
760
Simon Glass5592a632018-10-01 12:22:21 -0600761config TPL_OF_LIBFDT
762 bool "Enable the FDT library for TPL"
Simon Glass747093d2022-04-30 00:56:53 -0600763 depends on TPL_LIBGENERIC_SUPPORT
Simon Glass5592a632018-10-01 12:22:21 -0600764 default y if TPL_OF_CONTROL
765 help
766 This enables the FDT library (libfdt). It provides functions for
767 accessing binary device tree images in memory, such as adding and
768 removing nodes and properties, scanning through the tree and finding
769 particular compatible nodes. The library operates on a flattened
770 version of the device tree.
771
Simon Glass0d76afc2019-10-27 09:47:40 -0600772config TPL_OF_LIBFDT_ASSUME_MASK
773 hex "Mask of conditions to assume for libfdt"
774 depends on TPL_OF_LIBFDT || FIT
775 default 0xff
776 help
777 Use this to change the assumptions made by libfdt in TPL about the
778 device tree it is working with. A value of 0 means that no assumptions
779 are made, and libfdt is able to deal with malicious data. A value of
780 0xff means all assumptions are made and any invalid data may cause
781 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
782
Simon Glass747093d2022-04-30 00:56:53 -0600783config VPL_OF_LIBFDT
784 bool "Enable the FDT library for VPL"
785 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
786 help
787 This enables the FDT library (libfdt). It provides functions for
788 accessing binary device tree images in memory, such as adding and
789 removing nodes and properties, scanning through the tree and finding
790 particular compatible nodes. The library operates on a flattened
791 version of the device tree.
792
793config VPL_OF_LIBFDT_ASSUME_MASK
794 hex "Mask of conditions to assume for libfdt"
795 depends on VPL_OF_LIBFDT || FIT
796 default 0xff
797 help
798 Use this to change the assumptions made by libfdt in SPL about the
799 device tree it is working with. A value of 0 means that no assumptions
800 are made, and libfdt is able to deal with malicious data. A value of
801 0xff means all assumptions are made and any invalid data may cause
802 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
803
Heiko Schocherebf7fff2016-10-06 07:31:45 +0200804config FDT_FIXUP_PARTITIONS
805 bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
806 depends on OF_LIBFDT
Masahiro Yamadaab948cd2018-07-20 11:04:09 +0900807 depends on CMD_MTDPARTS
Heiko Schocherebf7fff2016-10-06 07:31:45 +0200808 help
809 Allow overwriting defined partitions in the device tree blob
810 using partition info defined in the 'mtdparts' environment
811 variable.
812
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200813menu "System tables"
Alexander Grafe663b352016-08-19 01:23:29 +0200814 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200815
Simon Glassd2cb7a22020-11-04 09:57:25 -0700816config BLOBLIST_TABLES
817 bool "Put tables in a bloblist"
Simon Glassf2c14422021-03-15 18:11:22 +1300818 depends on X86 && BLOBLIST
Simon Glassd2cb7a22020-11-04 09:57:25 -0700819 help
820 Normally tables are placed at address 0xf0000 and can be up to 64KB
821 long. With this option, tables are instead placed in the bloblist
822 with a pointer from 0xf0000. The size can then be larger and the
823 tables can be placed high in memory.
824
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200825config GENERATE_SMBIOS_TABLE
826 bool "Generate an SMBIOS (System Management BIOS) table"
827 default y
Alexander Grafe663b352016-08-19 01:23:29 +0200828 depends on X86 || EFI_LOADER
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200829 help
830 The System Management BIOS (SMBIOS) specification addresses how
831 motherboard and system vendors present management information about
832 their products in a standard format by extending the BIOS interface
833 on Intel architecture systems.
834
835 Check http://www.dmtf.org/standards/smbios for details.
836
Simon Glass44c74bd2020-11-05 06:32:11 -0700837 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
838 the devicetree.
839
Tero Kristo7d0f3fb2021-06-11 11:45:02 +0300840config LIB_RATIONAL
841 bool "enable continued fraction calculation routines"
842
843config SPL_LIB_RATIONAL
844 bool "enable continued fraction calculation routines for SPL"
845 depends on SPL
846
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200847endmenu
848
AKASHI Takahiro2b121962019-11-13 09:44:53 +0900849config ASN1_COMPILER
850 bool
Philippe Reynesa0e71d92022-03-28 22:56:54 +0200851 help
852 ASN.1 (Abstract Syntax Notation One) is a standard interface
853 description language for defining data structures that can be
854 serialized and deserialized in a cross-platform way. It is
855 broadly used in telecommunications and computer networking,
856 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
857 This option enables the support of the asn1 compiler.
AKASHI Takahiro2b121962019-11-13 09:44:53 +0900858
AKASHI Takahiroab8a0e02019-11-13 09:44:55 +0900859config ASN1_DECODER
860 bool
861 help
Philippe Reynesa0e71d92022-03-28 22:56:54 +0200862 ASN.1 (Abstract Syntax Notation One) is a standard interface
863 description language for defining data structures that can be
864 serialized and deserialized in a cross-platform way. It is
865 broadly used in telecommunications and computer networking,
866 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
867 This option enables the support of the asn1 decoder.
AKASHI Takahiroab8a0e02019-11-13 09:44:55 +0900868
Philippe Reynesfd210fe2022-03-28 22:56:56 +0200869config SPL_ASN1_DECODER
870 bool
871 help
872 ASN.1 (Abstract Syntax Notation One) is a standard interface
873 description language for defining data structures that can be
874 serialized and deserialized in a cross-platform way. It is
875 broadly used in telecommunications and computer networking,
876 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
877 This option enables the support of the asn1 decoder in the SPL.
878
AKASHI Takahiroa9b45e62019-11-13 09:44:57 +0900879config OID_REGISTRY
880 bool
881 help
Philippe Reynes7d44a982022-03-28 22:56:55 +0200882 In computing, object identifiers or OIDs are an identifier mechanism
883 standardized by the International Telecommunication Union (ITU) and
884 ISO/IEC for naming any object, concept, or "thing" with a globally
885 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
AKASHI Takahiroa9b45e62019-11-13 09:44:57 +0900886 Enable fast lookup object identifier registry.
887
Philippe Reynesfd210fe2022-03-28 22:56:56 +0200888config SPL_OID_REGISTRY
889 bool
890 help
891 In computing, object identifiers or OIDs are an identifier mechanism
892 standardized by the International Telecommunication Union (ITU) and
893 ISO/IEC for naming any object, concept, or "thing" with a globally
894 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
895 Enable fast lookup object identifier registry in the SPL.
896
Christian Gmeiner415eab02020-11-03 15:34:51 +0100897config SMBIOS_PARSER
898 bool "SMBIOS parser"
899 help
900 A simple parser for SMBIOS data.
901
Simon Glass867a6ac2015-07-31 09:31:36 -0600902source lib/efi/Kconfig
Alexander Grafed980b82016-03-04 01:10:07 +0100903source lib/efi_loader/Kconfig
Bryan O'Donoghue32ce6172018-03-13 16:50:27 +0000904source lib/optee/Kconfig
Simon Glass867a6ac2015-07-31 09:31:36 -0600905
Thierry Reding54969b42019-03-21 19:10:04 +0100906config TEST_FDTDEC
907 bool "enable fdtdec test"
908 depends on OF_LIBFDT
909
AKASHI Takahiro05429b62019-11-13 09:44:49 +0900910config LIB_DATE
911 bool
912
Keerthy805b3ca2020-02-12 13:55:03 +0530913config LIB_ELF
914 bool
915 help
Patrick Delaunay6205bbb2021-01-04 15:33:28 +0100916 Support basic elf loading/validating functions.
917 This supports for 32 bit and 64 bit versions.
Keerthy805b3ca2020-02-12 13:55:03 +0530918
Patrick Delaunay77b8cfe2021-03-10 10:16:25 +0100919config LMB
920 bool "Enable the logical memory blocks library (lmb)"
Tom Rini11232132022-04-06 09:21:25 -0400921 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
Patrick Delaunay77b8cfe2021-03-10 10:16:25 +0100922 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
923 help
924 Support the library logical memory blocks.
925
Patrick Delaunay6d665022021-03-10 10:16:31 +0100926config LMB_USE_MAX_REGIONS
Heinrich Schuchardtac7606a2021-11-14 09:38:53 +0100927 bool "Use a common number of memory and reserved regions in lmb lib"
Patrick Delaunay6d665022021-03-10 10:16:31 +0100928 depends on LMB
929 default y
930 help
931 Define the number of supported memory regions in the library logical
932 memory blocks.
933 This feature allow to reduce the lmb library size by using compiler
934 optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
Patrick Delaunay4fa01502021-03-10 10:16:28 +0100935
936config LMB_MAX_REGIONS
937 int "Number of memory and reserved regions in lmb lib"
Patrick Delaunay6d665022021-03-10 10:16:31 +0100938 depends on LMB && LMB_USE_MAX_REGIONS
Patrick Delaunay4fa01502021-03-10 10:16:28 +0100939 default 8
940 help
941 Define the number of supported regions, memory and reserved, in the
942 library logical memory blocks.
Patrick Delaunay6d665022021-03-10 10:16:31 +0100943
944config LMB_MEMORY_REGIONS
945 int "Number of memory regions in lmb lib"
946 depends on LMB && !LMB_USE_MAX_REGIONS
947 default 8
948 help
949 Define the number of supported memory regions in the library logical
950 memory blocks.
951 The minimal value is CONFIG_NR_DRAM_BANKS.
952
953config LMB_RESERVED_REGIONS
954 int "Number of reserved regions in lmb lib"
955 depends on LMB && !LMB_USE_MAX_REGIONS
956 default 8
957 help
958 Define the number of supported reserved regions in the library logical
959 memory blocks.
960
Eugen Hristev97f2a742022-01-04 18:20:19 +0200961endmenu