blob: c9f9ddce7d02c4f102d2234b371e805f928d26bc [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"
Tom Rini8bea4bf2022-06-08 08:24:39 -0400251 depends on TPL
Philipp Tomsich96b90822017-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 Packham6e705112019-01-13 22:13:28 +1300256 size-constrained environments even this may be too big. Enable this
Philipp Tomsich96b90822017-08-03 22:52:04 +0200257 option to reduce code size slightly at the cost of some speed.
258
Boris Brezillonaa049152017-02-27 18:22:05 +0100259config RBTREE
260 bool
261
Nandor Handa5337a2017-11-08 15:35:14 +0000262config BITREVERSE
263 bool "Bit reverse library from Linux"
264
Simon Glassa24a78d2019-04-08 13:20:51 -0600265config TRACE
266 bool "Support for tracing of function calls and timing"
267 imply CMD_TRACE
Pragnesh Patela80f8512021-01-17 18:11:24 +0530268 select TIMER_EARLY
Simon Glassa24a78d2019-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 Glass1c6eb072019-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 Schuchardtda0fb5f2019-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 Glass1c6eb072019-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 Schuchardtda0fb5f2019-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 Glass1c6eb072019-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 Poulain334a9b92021-11-25 18:16:14 +0100338config CIRCBUF
339 bool "Enable circular buffer support"
340
Simon Glassd1389402015-06-23 15:38:23 -0600341source lib/dhry/Kconfig
342
Simon Glassb1a873d2017-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 Gagniuc928a8be2021-07-29 11:47:16 -0500354source lib/ecdsa/Kconfig
Ruchika Guptad9f23c72015-01-23 16:01:56 +0530355source lib/rsa/Kconfig
AKASHI Takahirob4adf622019-11-13 09:45:00 +0900356source lib/crypto/Kconfig
Steffen Jaeckel26dd9932021-07-08 15:57:33 +0200357source lib/crypt/Kconfig
Ruchika Guptac4beb222015-01-23 16:01:51 +0530358
Simon Glassa7d660b2015-08-22 18:31:19 -0600359config TPM
360 bool "Trusted Platform Module (TPM) Support"
Simon Glass2419cd12015-10-03 06:39:36 -0600361 depends on DM
Simon Glassa7d660b2015-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 Glass63078962018-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 Glass747093d2022-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 Glassb1a873d2017-04-26 22:27:49 -0600403endmenu
404
Igor Opaniuk33305842018-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 Opaniuk33305842018-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 rana94e3c8c2015-02-20 12:51:46 +0530418menu "Hashing Support"
419
Qu Wenruo7c3fd5c2021-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 rana94e3c8c2015-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 Dowled16b38f2020-04-16 17:36:52 +1200444config SHA512
445 bool "Enable SHA512 support"
Reuben Dowled16b38f2020-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 Gagniuce60e4492021-09-02 19:54:18 -0500454 select SHA512
Reuben Dowled16b38f2020-04-16 17:36:52 +1200455 help
456 This option enables support of hashing using SHA384 algorithm.
Alexandru Gagniuce60e4492021-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 Dowled16b38f2020-04-16 17:36:52 +1200459 The SHA384 algorithm produces a 384-bit (48-byte) hash value
460 (digest).
461
gaurav rana94e3c8c2015-02-20 12:51:46 +0530462config SHA_HW_ACCEL
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200463 bool "Enable hardware acceleration for SHA hash functions"
gaurav rana94e3c8c2015-02-20 12:51:46 +0530464 help
Heinrich Schuchardte2ae4832021-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 Glass603d15a2021-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 Glass2c212562021-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 Glass603d15a2021-09-25 19:43:17 -0600527endif
528
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200529if SHA_HW_ACCEL
530
531config SHA512_HW_ACCEL
532 bool "Enable hardware acceleration for SHA512"
Alexandru Gagniuce60e4492021-09-02 19:54:18 -0500533 depends on SHA512
Heinrich Schuchardte2ae4832021-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 rana94e3c8c2015-02-20 12:51:46 +0530538
539config SHA_PROG_HW_ACCEL
540 bool "Enable Progressive hashing support using hardware"
gaurav rana94e3c8c2015-02-20 12:51:46 +0530541 help
Joel Stanleya479f102021-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 Przywarabea79d72017-03-15 01:19:05 +0000546
Heinrich Schuchardte2ae4832021-05-14 07:08:27 +0200547endif
548
Andre Przywarabea79d72017-03-15 01:19:05 +0000549config MD5
Simon Glass8239be62020-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 Przywarabea79d72017-03-15 01:19:05 +0000566
Simon Glasse7d285b2021-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ún85d8bf52017-09-03 17:00:23 +0200572config CRC32C
573 bool
574
Marek Behún83a486b2019-04-29 22:40:43 +0200575config XXHASH
576 bool
577
gaurav rana94e3c8c2015-02-20 12:51:46 +0530578endmenu
579
Julius Werner027b7282015-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 Delaunay4fa01502021-03-10 10:16:28 +0100589
Julius Werner027b7282015-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 Glassaed998a2017-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 Brezillon173aafb2017-02-27 18:22:06 +0100604config LZO
Tom Rinid56b4b12017-07-22 18:36:16 -0400605 bool "Enable LZO decompression support"
606 help
Oleksandr Suvorov5145bc72021-09-01 16:05:08 +0300607 This enables support for the LZO compression algorithm.
York Sun7264f292017-08-15 11:14:43 -0700608
Marek Vasut95f4bbd2019-03-08 16:06:55 +0100609config GZIP
Heiko Schocher51323612019-04-29 08:59:38 +0200610 bool "Enable gzip decompression support"
Marek Vasut95f4bbd2019-03-08 16:06:55 +0100611 select ZLIB
612 default y
613 help
614 This enables support for GZIP compression algorithm.
615
Joao Marcos Costa81014f72020-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 Walleeff5a542020-05-22 14:07:36 +0200623config GZIP_COMPRESSED
624 bool
625 select ZLIB
626
Atish Patra2a2119e2020-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 Vasut95f4bbd2019-03-08 16:06:55 +0100632config ZLIB
633 bool
634 default y
635 help
636 This enables ZLIB compression lib.
637
Marek Behún8509f222019-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 Glass048c6e82018-11-06 15:21:30 -0700644config SPL_LZ4
645 bool "Enable LZ4 decompression support in SPL"
646 help
Marcin Juszkiewicz43e442a2020-05-26 19:07:15 +0200647 This enables support for the LZ4 decompression algorithm in SPL. LZ4
Simon Glass048c6e82018-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
Weijie Gao04cb3992020-04-21 09:28:38 +0200652config SPL_LZMA
653 bool "Enable LZMA decompression support for SPL build"
654 help
Marcin Juszkiewicz43e442a2020-05-26 19:07:15 +0200655 This enables support for LZMA compression algorithm for SPL boot.
Weijie Gao04cb3992020-04-21 09:28:38 +0200656
Simon Glass747093d2022-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 Hiblotf52bdf42017-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 Sun7264f292017-08-15 11:14:43 -0700668config SPL_GZIP
669 bool "Enable gzip decompression support for SPL build"
670 select SPL_ZLIB
671 help
Oleksandr Suvorov5145bc72021-09-01 16:05:08 +0300672 This enables support for the GZIP compression algorithm for SPL boot.
York Sun7264f292017-08-15 11:14:43 -0700673
674config SPL_ZLIB
675 bool
676 help
677 This enables compression lib for SPL boot.
678
Marek Behún8509f222019-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 Werner027b7282015-10-06 20:03:53 -0700685endmenu
686
Przemyslaw Marczak6501ff62015-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 Brodkinf8c987f2018-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 Glass26637e22020-09-12 11:13:35 -0600700config SPL_HEXDUMP
701 bool "Enable hexdump in SPL"
Heinrich Schuchardtfa3f1f12021-07-24 17:35:46 +0200702 depends on SPL && HEXDUMP
Simon Glass26637e22020-09-12 11:13:35 -0600703 help
704 This enables functions for printing dumps of binary data in
705 SPL.
706
Sean Anderson72eda502020-10-27 19:55:36 -0400707config GETOPT
708 bool "Enable getopt"
709 help
710 This enables functions for parsing command-line options.
711
Simon Glass69e173e2016-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 Gustschinf1a7ba12017-08-18 17:58:51 +0200718 removing nodes and properties, scanning through the tree and finding
Simon Glass69e173e2016-02-22 22:55:42 -0700719 particular compatible nodes. The library operates on a flattened
720 version of the device tree.
721
Simon Glass0d76afc2019-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 Ripardddf67f72016-07-05 10:26:44 +0200733config OF_LIBFDT_OVERLAY
734 bool "Enable the FDT library overlay support"
Tom Rini64175722018-05-08 08:52:17 -0400735 depends on OF_LIBFDT
Praneeth Bajjuri58a46f82018-04-25 16:03:23 -0500736 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
Maxime Ripardddf67f72016-07-05 10:26:44 +0200737 help
738 This enables the FDT library (libfdt) overlay support.
739
Simon Glassaa34fbc2016-02-22 22:55:45 -0700740config SPL_OF_LIBFDT
741 bool "Enable the FDT library for SPL"
Simon Glass747093d2022-04-30 00:56:53 -0600742 depends on SPL_LIBGENERIC_SUPPORT
Simon Glassaa34fbc2016-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 Gustschinf1a7ba12017-08-18 17:58:51 +0200747 removing nodes and properties, scanning through the tree and finding
Simon Glassaa34fbc2016-02-22 22:55:45 -0700748 particular compatible nodes. The library operates on a flattened
749 version of the device tree.
750
Simon Glass0d76afc2019-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 Glass5592a632018-10-01 12:22:21 -0600762config TPL_OF_LIBFDT
763 bool "Enable the FDT library for TPL"
Simon Glass747093d2022-04-30 00:56:53 -0600764 depends on TPL_LIBGENERIC_SUPPORT
Simon Glass5592a632018-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 Glass0d76afc2019-10-27 09:47:40 -0600773config TPL_OF_LIBFDT_ASSUME_MASK
774 hex "Mask of conditions to assume for libfdt"
Tom Rini8bea4bf2022-06-08 08:24:39 -0400775 depends on TPL_OF_LIBFDT || (FIT && TPL)
Simon Glass0d76afc2019-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 Glass747093d2022-04-30 00:56:53 -0600784config VPL_OF_LIBFDT
785 bool "Enable the FDT library for VPL"
Tom Rini13ce3512022-06-08 08:24:40 -0400786 depends on VPL
Simon Glass747093d2022-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 Rini13ce3512022-06-08 08:24:40 -0400797 depends on VPL_OF_LIBFDT || (FIT && VPL)
Simon Glass747093d2022-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 Schocherebf7fff2016-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 Yamadaab948cd2018-07-20 11:04:09 +0900809 depends on CMD_MTDPARTS
Heiko Schocherebf7fff2016-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 Graf4b6dddc2016-08-19 01:23:23 +0200815menu "System tables"
Alexander Grafe663b352016-08-19 01:23:29 +0200816 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
Alexander Graf4b6dddc2016-08-19 01:23:23 +0200817
Simon Glassd2cb7a22020-11-04 09:57:25 -0700818config BLOBLIST_TABLES
819 bool "Put tables in a bloblist"
Simon Glassf2c14422021-03-15 18:11:22 +1300820 depends on X86 && BLOBLIST
Simon Glassd2cb7a22020-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 Graf4b6dddc2016-08-19 01:23:23 +0200827config GENERATE_SMBIOS_TABLE
828 bool "Generate an SMBIOS (System Management BIOS) table"
829 default y
Alexander Grafe663b352016-08-19 01:23:29 +0200830 depends on X86 || EFI_LOADER
Alexander Graf4b6dddc2016-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 Glass44c74bd2020-11-05 06:32:11 -0700839 See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
840 the devicetree.
841
Tero Kristo7d0f3fb2021-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 Graf4b6dddc2016-08-19 01:23:23 +0200849endmenu
850
AKASHI Takahiro2b121962019-11-13 09:44:53 +0900851config ASN1_COMPILER
852 bool
Philippe Reynesa0e71d92022-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 Takahiro2b121962019-11-13 09:44:53 +0900860
AKASHI Takahiroab8a0e02019-11-13 09:44:55 +0900861config ASN1_DECODER
862 bool
863 help
Philippe Reynesa0e71d92022-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 Takahiroab8a0e02019-11-13 09:44:55 +0900870
Philippe Reynesfd210fe2022-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 Takahiroa9b45e62019-11-13 09:44:57 +0900881config OID_REGISTRY
882 bool
883 help
Philippe Reynes7d44a982022-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 Takahiroa9b45e62019-11-13 09:44:57 +0900888 Enable fast lookup object identifier registry.
889
Philippe Reynesfd210fe2022-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 Gmeiner415eab02020-11-03 15:34:51 +0100899config SMBIOS_PARSER
900 bool "SMBIOS parser"
901 help
902 A simple parser for SMBIOS data.
903
Simon Glass867a6ac2015-07-31 09:31:36 -0600904source lib/efi/Kconfig
Alexander Grafed980b82016-03-04 01:10:07 +0100905source lib/efi_loader/Kconfig
Bryan O'Donoghue32ce6172018-03-13 16:50:27 +0000906source lib/optee/Kconfig
Simon Glass867a6ac2015-07-31 09:31:36 -0600907
Thierry Reding54969b42019-03-21 19:10:04 +0100908config TEST_FDTDEC
909 bool "enable fdtdec test"
910 depends on OF_LIBFDT
911
AKASHI Takahiro05429b62019-11-13 09:44:49 +0900912config LIB_DATE
913 bool
914
Keerthy805b3ca2020-02-12 13:55:03 +0530915config LIB_ELF
916 bool
917 help
Patrick Delaunay6205bbb2021-01-04 15:33:28 +0100918 Support basic elf loading/validating functions.
919 This supports for 32 bit and 64 bit versions.
Keerthy805b3ca2020-02-12 13:55:03 +0530920
Patrick Delaunay77b8cfe2021-03-10 10:16:25 +0100921config LMB
922 bool "Enable the logical memory blocks library (lmb)"
Tom Rini11232132022-04-06 09:21:25 -0400923 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
Patrick Delaunay77b8cfe2021-03-10 10:16:25 +0100924 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
925 help
926 Support the library logical memory blocks.
927
Patrick Delaunay6d665022021-03-10 10:16:31 +0100928config LMB_USE_MAX_REGIONS
Heinrich Schuchardtac7606a2021-11-14 09:38:53 +0100929 bool "Use a common number of memory and reserved regions in lmb lib"
Patrick Delaunay6d665022021-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 Delaunay4fa01502021-03-10 10:16:28 +0100937
938config LMB_MAX_REGIONS
939 int "Number of memory and reserved regions in lmb lib"
Patrick Delaunay6d665022021-03-10 10:16:31 +0100940 depends on LMB && LMB_USE_MAX_REGIONS
Patrick Delaunay4fa01502021-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 Delaunay6d665022021-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 Hristev97f2a742022-01-04 18:20:19 +0200963endmenu