blob: b2aecd8a49e8107cbb0346a73ade6a0383472f85 [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
Tom Rini1f173632022-11-16 13:10:38 -050018config SYS_TIMER_COUNTS_DOWN
Marek Vasut88e5a202023-03-19 04:13:02 +010019 bool "System timer counts down rather than up"
Tom Rini1f173632022-11-16 13:10:38 -050020
Simon Glassef9e7622021-11-24 09:26:42 -070021config PHYSMEM
22 bool "Access to physical memory region (> 4G)"
23 help
24 Some basic support is provided for operations on memory not
25 normally accessible to 32-bit U-Boot - e.g. some architectures
26 support access to more than 4G of memory on 32-bit
27 machines using physical address extension or similar.
28 Enable this to access this basic support, which only supports clearing
29 the memory.
30
Adam Ford02bf5362017-08-11 09:46:05 -050031config BCH
32 bool "Enable Software based BCH ECC"
33 help
34 Enables software based BCH ECC algorithm present in lib/bch.c
35 This is used by SoC platforms which do not have built-in ELM
36 hardware engine required for BCH ECC correction.
37
Simon Glassdd7fb9b2019-12-06 21:41:34 -070038config BINMAN_FDT
39 bool "Allow access to binman information in the device tree"
Bin Mengc5e8b312021-02-03 21:20:02 +080040 depends on BINMAN && DM && OF_CONTROL
Bin Mengc9155f12021-05-10 20:23:36 +080041 default y if OF_SEPARATE || OF_EMBED
Simon Glassdd7fb9b2019-12-06 21:41:34 -070042 help
43 This enables U-Boot to access information about binman entries,
44 stored in the device tree in a binman node. Typical uses are to
45 locate entries in the firmware image. See binman.h for the available
46 functionality.
47
Michal Simek15fa3a82024-11-01 10:17:54 +010048config BINMAN_DTB
49 string "binman DTB description"
50 depends on BINMAN
51 help
52 This enables option to point to different DTB file with binman node which
53 is outside of DTB used by the firmware. Use this option if information
54 about generated images shouldn't be the part of target binary. Or on system
55 with limited storage.
56
Masahiro Yamada3f053fe2014-09-16 16:32:59 +090057config CC_OPTIMIZE_LIBS_FOR_SPEED
58 bool "Optimize libraries for speed"
59 help
60 Enabling this option will pass "-O2" to gcc when compiling
61 under "lib" directory.
62
63 If unsure, say N.
64
Simon Glassc17db992021-07-02 12:36:17 -060065config CHARSET
66 bool
Simon Glassc17db992021-07-02 12:36:17 -060067
Faiz Abbas6199fb12018-02-06 19:15:58 +053068config DYNAMIC_CRC_TABLE
69 bool "Enable Dynamic tables for CRC"
70 help
71 Enable this option to calculate entries for CRC tables at runtime.
72 This can be helpful when reducing the size of the build image
73
Bin Mengb95e9db2018-10-15 02:21:15 -070074config HAVE_ARCH_IOMAP
75 bool
76 help
77 Enable this option if architecture provides io{read,write}{8,16,32}
78 I/O accessor functions.
79
Masahiro Yamada9520b712014-10-24 01:30:43 +090080config HAVE_PRIVATE_LIBGCC
81 bool
82
Adam Ford70c8f052018-02-06 12:14:28 -060083config LIB_UUID
84 bool
Caleb Connolly2f4f0be2024-08-30 13:34:32 +010085 select SHA1
Adam Ford70c8f052018-02-06 12:14:28 -060086
AKASHI Takahirod1e31582023-10-26 14:31:31 -040087config RANDOM_UUID
88 bool "GPT Random UUID generation"
89 select LIB_UUID
90 help
91 Enable the generation of partitions with random UUIDs if none
92 are provided.
93
Simon Glass8090d8d2023-02-22 09:34:11 -070094config SPL_LIB_UUID
95 depends on SPL
96 bool
97
Kautuk Consula51bb742022-12-07 17:12:34 +053098config SEMIHOSTING
99 bool "Support semihosting"
Kautuk Consulc86cb4a2022-12-07 17:12:35 +0530100 depends on ARM || RISCV
Kautuk Consula51bb742022-12-07 17:12:34 +0530101 help
102 Semihosting is a method for a target to communicate with a host
103 debugger. It uses special instructions which the debugger will trap
104 on and interpret. This allows U-Boot to read/write files, print to
105 the console, and execute arbitrary commands on the host system.
106
107 Enabling this option will add support for reading and writing files
108 on the host system. If you don't have a debugger attached then trying
109 to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
110
111config SEMIHOSTING_FALLBACK
112 bool "Recover gracefully when semihosting fails"
Sean Andersonbf641f22023-10-27 16:40:15 -0400113 depends on SEMIHOSTING
Kautuk Consula51bb742022-12-07 17:12:34 +0530114 default y
115 help
116 Normally, if U-Boot makes a semihosting call and no debugger is
117 attached, then it will panic due to a synchronous abort
118 exception. This config adds an exception handler which will allow
119 U-Boot to recover. Say 'y' if unsure.
120
121config SPL_SEMIHOSTING
122 bool "Support semihosting in SPL"
Kautuk Consulc86cb4a2022-12-07 17:12:35 +0530123 depends on SPL && (ARM || RISCV)
Kautuk Consula51bb742022-12-07 17:12:34 +0530124 help
125 Semihosting is a method for a target to communicate with a host
126 debugger. It uses special instructions which the debugger will trap
127 on and interpret. This allows U-Boot to read/write files, print to
128 the console, and execute arbitrary commands on the host system.
129
130 Enabling this option will add support for reading and writing files
131 on the host system. If you don't have a debugger attached then trying
132 to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
133
134config SPL_SEMIHOSTING_FALLBACK
135 bool "Recover gracefully when semihosting fails in SPL"
Sean Andersonbf641f22023-10-27 16:40:15 -0400136 depends on SPL_SEMIHOSTING
Kautuk Consulc86cb4a2022-12-07 17:12:35 +0530137 select ARMV8_SPL_EXCEPTION_VECTORS if ARM64
Kautuk Consula51bb742022-12-07 17:12:34 +0530138 default y
139 help
140 Normally, if U-Boot makes a semihosting call and no debugger is
141 attached, then it will panic due to a synchronous abort
142 exception. This config adds an exception handler which will allow
143 U-Boot to recover. Say 'y' if unsure.
144
Alex Kiernan5b404282018-04-19 04:32:54 +0000145config PRINTF
146 bool
147 default y
148
149config SPL_PRINTF
150 bool
151 select SPL_SPRINTF
Simon Glass7611ac62019-09-25 08:56:27 -0600152 select SPL_STRTO if !SPL_USE_TINY_PRINTF
Alex Kiernan5b404282018-04-19 04:32:54 +0000153
154config TPL_PRINTF
155 bool
156 select TPL_SPRINTF
Simon Glass7611ac62019-09-25 08:56:27 -0600157 select TPL_STRTO if !TPL_USE_TINY_PRINTF
Alex Kiernan5b404282018-04-19 04:32:54 +0000158
Simon Glasse7ca7da2022-04-30 00:56:53 -0600159config VPL_PRINTF
160 bool
161 select VPL_SPRINTF
162 select VPL_STRTO if !VPL_USE_TINY_PRINTF
163
Alex Kiernan5b404282018-04-19 04:32:54 +0000164config SPRINTF
165 bool
166 default y
167
168config SPL_SPRINTF
169 bool
170
171config TPL_SPRINTF
172 bool
173
Simon Glasse7ca7da2022-04-30 00:56:53 -0600174config VPL_SPRINTF
175 bool
176
Andrii Anisov6e29ac42020-08-06 12:42:52 +0300177config SSCANF
178 bool
Andrii Anisov6e29ac42020-08-06 12:42:52 +0300179
Alex Kiernan5b404282018-04-19 04:32:54 +0000180config STRTO
181 bool
182 default y
183
184config SPL_STRTO
185 bool
186
187config TPL_STRTO
188 bool
189
Simon Glasse7ca7da2022-04-30 00:56:53 -0600190config VPL_STRTO
191 bool
192
Alex Kiernanc568bcb2018-05-29 15:30:52 +0000193config IMAGE_SPARSE
194 bool
195
196config IMAGE_SPARSE_FILLBUF_SIZE
197 hex "Android sparse image CHUNK_TYPE_FILL buffer size"
198 default 0x80000
199 depends on IMAGE_SPARSE
200 help
201 Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
202 chunks.
203
Masahiro Yamada9520b712014-10-24 01:30:43 +0900204config USE_PRIVATE_LIBGCC
205 bool "Use private libgcc"
206 depends on HAVE_PRIVATE_LIBGCC
Marek Vasut4e0126e2016-05-26 18:01:47 +0200207 default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
Masahiro Yamada9520b712014-10-24 01:30:43 +0900208 help
209 This option allows you to use the built-in libgcc implementation
Masahiro Yamada1c6a5e42016-03-30 20:17:42 +0900210 of U-Boot instead of the one provided by the compiler.
Masahiro Yamada9520b712014-10-24 01:30:43 +0900211 If unsure, say N.
212
Masahiro Yamadae301fa02014-10-24 01:30:40 +0900213config SYS_HZ
214 int
215 default 1000
216 help
217 The frequency of the timer returned by get_timer().
218 get_timer() must operate in milliseconds and this option must be
219 set to 1000.
220
Simon Glass7611ac62019-09-25 08:56:27 -0600221config SPL_USE_TINY_PRINTF
Thomas Hebb0c12fb52019-11-10 08:23:53 -0800222 bool "Enable tiny printf() version in SPL"
Simon Glass7611ac62019-09-25 08:56:27 -0600223 depends on SPL
Tom Rinid0502b72019-06-08 12:46:18 -0400224 default y
Stefan Roese363ab7b2015-11-23 07:00:22 +0100225 help
226 This option enables a tiny, stripped down printf version.
227 This should only be used in space limited environments,
228 like SPL versions with hard memory limits. This version
229 reduces the code size by about 2.5KiB on armv7.
230
231 The supported format specifiers are %c, %s, %u/%d and %x.
232
Simon Glass7611ac62019-09-25 08:56:27 -0600233config TPL_USE_TINY_PRINTF
Thomas Hebb0c12fb52019-11-10 08:23:53 -0800234 bool "Enable tiny printf() version in TPL"
Simon Glass7611ac62019-09-25 08:56:27 -0600235 depends on TPL
236 default y if SPL_USE_TINY_PRINTF
237 help
238 This option enables a tiny, stripped down printf version.
239 This should only be used in space limited environments,
240 like SPL versions with hard memory limits. This version
241 reduces the code size by about 2.5KiB on armv7.
242
243 The supported format specifiers are %c, %s, %u/%d and %x.
244
Simon Glasse7ca7da2022-04-30 00:56:53 -0600245config VPL_USE_TINY_PRINTF
246 bool "Enable tiny printf() version for VPL"
247 depends on VPL
248 help
249 This option enables a tiny, stripped down printf version.
250 This should only be used in space limited environments,
251 like SPL versions with hard memory limits. This version
252 reduces the code size by about 2.5KiB on armv7.
253
254 The supported format specifiers are %c, %s, %u/%d and %x.
255
Masahiro Yamadaacede7a2017-12-04 12:37:00 +0900256config PANIC_HANG
257 bool "Do not reset the system on fatal error"
258 help
259 Define this option to stop the system in case of a fatal error,
260 so that you have to reset it manually. This is probably NOT a good
261 idea for an embedded system where you want the system to reboot
262 automatically as fast as possible, but it may be useful during
263 development since you can try to debug the conditions that lead to
264 the situation.
265
Joe Hershberger937d3e82015-04-21 17:02:42 -0500266config REGEX
267 bool "Enable regular expression support"
Joe Hershberger8ab8b722015-06-22 17:57:36 -0500268 default y if NET
Joe Hershberger937d3e82015-04-21 17:02:42 -0500269 help
270 If this variable is defined, U-Boot is linked against the
271 SLRE (Super Light Regular Expression) library, which adds
272 regex support to some commands, for example "env grep" and
273 "setexpr".
274
Adam Ford38003a62018-02-06 10:18:18 -0600275choice
276 prompt "Pseudo-random library support type"
Heinrich Schuchardtb2e67a22020-01-19 19:28:12 +0100277 depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
Heinrich Schuchardtba9c44e2020-11-20 12:55:22 +0100278 RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
Adam Ford38003a62018-02-06 10:18:18 -0600279 default LIB_RAND
Masahiro Yamada2743c072015-06-11 19:16:43 +0900280 help
Adam Ford38003a62018-02-06 10:18:18 -0600281 Select the library to provide pseudo-random number generator
282 functions. LIB_HW_RAND supports certain hardware engines that
283 provide this functionality. If in doubt, select LIB_RAND.
284
285config LIB_RAND
286 bool "Pseudo-random library support"
287
288config LIB_HW_RAND
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200289 bool "HW Engine for random library support"
Adam Ford38003a62018-02-06 10:18:18 -0600290
291endchoice
Michal Simek2c1b1db2015-05-25 11:37:22 +0200292
Simon Glassa6cee932021-12-01 09:02:36 -0700293config SUPPORT_ACPI
294 bool
295 help
296 Enable this if your arch or board can support generating ACPI
297 (Advanced Configuration and Power Interface) tables. In this case
298 U-Boot can generate these tables and pass them to the Operating
299 System.
300
Simon Glasse264be42023-05-04 16:54:57 -0600301config ACPI
302 bool "Enable support for ACPI libraries"
303 depends on SUPPORT_ACPI
304 help
305 Provides library functions for dealing with ACPI tables. This does
306 not necessarily include generation of tables
307 (see GENERATE_ACPI_TABLE), but allows for tables to be located.
308
Simon Glass1a2fcc22023-09-19 21:00:06 -0600309config SPL_ACPI
310 bool "Enable support for ACPI libraries in SPL"
311 depends on SPL && SUPPORT_ACPI
312 help
313 Provides library functions for dealing with ACPI tables in SPL. This
314 does not necessarily include generation of tables
315 (see GENERATE_ACPI_TABLE), but allows for tables to be located.
316
Simon Glassa6cee932021-12-01 09:02:36 -0700317config GENERATE_ACPI_TABLE
318 bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
Simon Glasse264be42023-05-04 16:54:57 -0600319 depends on ACPI
Heinrich Schuchardt14541c62025-04-07 08:44:23 +0200320 select BLOBLIST
Simon Glassa6cee932021-12-01 09:02:36 -0700321 select QFW if QEMU
322 help
323 The Advanced Configuration and Power Interface (ACPI) specification
324 provides an open standard for device configuration and management
325 by the operating system. It defines platform-independent interfaces
326 for configuration and power management monitoring.
327
Patrick Rudolph2f6f8d92024-10-23 15:20:13 +0200328config ACPI_PARKING_PROTOCOL
329 bool "Support ACPI parking protocol method"
330 depends on GENERATE_ACPI_TABLE
331 depends on ARMV8_MULTIENTRY
332 depends on BLOBLIST_TABLES
333 default y if !SEC_FIRMWARE_ARMV8_PSCI && !ARMV8_PSCI
334 help
335 Say Y here to support "ACPI parking protocol" enable method
336 for booting Linux.
337
338 To use this feature, you must do:
339 - Bring secondary CPUs into U-Boot proper in a board-specific
340 manner. This must be done *after* relocation. Otherwise, the
341 secondary CPUs will spin in unprotected memory-area because the
342 master CPU protects the relocated spin code.
343
Simon Glasse2f94ae2017-04-02 09:50:28 -0600344config SPL_TINY_MEMSET
345 bool "Use a very small memset() in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400346 depends on SPL
Simon Glasse2f94ae2017-04-02 09:50:28 -0600347 help
348 The faster memset() is the arch-specific one (if available) enabled
349 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
350 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300351 size-constrained environments even this may be too big. Enable this
Simon Glasse2f94ae2017-04-02 09:50:28 -0600352 option to reduce code size slightly at the cost of some speed.
353
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200354config TPL_TINY_MEMSET
355 bool "Use a very small memset() in TPL"
Tom Rini36a4ca02022-06-08 08:24:39 -0400356 depends on TPL
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200357 help
358 The faster memset() is the arch-specific one (if available) enabled
359 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
360 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300361 size-constrained environments even this may be too big. Enable this
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200362 option to reduce code size slightly at the cost of some speed.
363
Boris Brezillon627dc182017-02-27 18:22:05 +0100364config RBTREE
365 bool
366
Nandor Hand5ea84a2017-11-08 15:35:14 +0000367config BITREVERSE
368 bool "Bit reverse library from Linux"
369
Simon Glassbfce7fc2019-04-08 13:20:51 -0600370config TRACE
371 bool "Support for tracing of function calls and timing"
372 imply CMD_TRACE
Simon Glass6b5424a2022-12-21 16:08:26 -0700373 imply TIMER_EARLY
Simon Glassbfce7fc2019-04-08 13:20:51 -0600374 help
375 Enables function tracing within U-Boot. This allows recording of call
376 traces including timing information. The command can write data to
377 memory for exporting for analysis (e.g. using bootchart).
Vincent Stehlé28c23622024-04-11 18:44:02 +0200378 See doc/develop/trace.rst for full details.
Simon Glassbfce7fc2019-04-08 13:20:51 -0600379
Simon Glass445078e2019-04-08 13:20:52 -0600380config TRACE_BUFFER_SIZE
381 hex "Size of trace buffer in U-Boot"
382 depends on TRACE
383 default 0x01000000
384 help
385 Sets the size of the trace buffer in U-Boot. This is allocated from
386 memory during relocation. If this buffer is too small, the trace
387 history will be truncated, with later records omitted.
388
389 If early trace is enabled (i.e. before relocation), this buffer must
390 be large enough to include all the data from the early trace buffer as
391 well, since this is copied over to the main buffer during relocation.
392
393 A trace record is emitted for each function call and each record is
394 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
395 the size is too small then 'trace stats' will show a message saying
396 how many records were dropped due to buffer overflow.
397
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200398config TRACE_CALL_DEPTH_LIMIT
399 int "Trace call depth limit"
400 depends on TRACE
401 default 15
402 help
403 Sets the maximum call depth up to which function calls are recorded.
404
Simon Glass445078e2019-04-08 13:20:52 -0600405config TRACE_EARLY
406 bool "Enable tracing before relocation"
407 depends on TRACE
408 help
409 Sometimes it is helpful to trace execution of U-Boot before
410 relocation. This is possible by using a arch-specific, fixed buffer
411 position in memory. Enable this option to start tracing as early as
412 possible after U-Boot starts.
413
414config TRACE_EARLY_SIZE
415 hex "Size of early trace buffer in U-Boot"
416 depends on TRACE_EARLY
417 default 0x00100000
418 help
419 Sets the size of the early trace buffer in bytes. This is used to hold
420 tracing information before relocation.
421
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200422config TRACE_EARLY_CALL_DEPTH_LIMIT
423 int "Early trace call depth limit"
424 depends on TRACE_EARLY
Simon Glass971574d2023-01-15 14:15:44 -0700425 default 15
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200426 help
427 Sets the maximum call depth up to which function calls are recorded
428 during early tracing.
429
Simon Glass445078e2019-04-08 13:20:52 -0600430config TRACE_EARLY_ADDR
431 hex "Address of early trace buffer in U-Boot"
432 depends on TRACE_EARLY
Sughosh Ganu3f768682024-08-26 17:29:32 +0530433 default 0x00200000
Simon Glass445078e2019-04-08 13:20:52 -0600434 help
435 Sets the address of the early trace buffer in U-Boot. This memory
436 must be accessible before relocation.
437
438 A trace record is emitted for each function call and each record is
439 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
440 the size is too small then the message which says the amount of early
441 data being coped will the the same as the
442
Loic Poulain12797e62021-11-25 18:16:14 +0100443config CIRCBUF
444 bool "Enable circular buffer support"
445
Michal Simekdd5000ef2024-04-16 08:55:16 +0200446source "lib/dhry/Kconfig"
Simon Glass99dbe4b2015-06-23 15:38:23 -0600447
Raymond Mao87010c32024-10-03 14:50:15 -0700448menu "Alternative crypto libraries"
Tom Rini6fdb77e2025-03-14 19:29:33 -0600449
450source "lib/mbedtls/Kconfig"
451
Raymond Mao87010c32024-10-03 14:50:15 -0700452endmenu
453
Simon Glass528fdd12017-04-26 22:27:49 -0600454menu "Security support"
455
456config AES
457 bool "Support the AES algorithm"
458 help
459 This provides a means to encrypt and decrypt data using the AES
460 (Advanced Encryption Standard). This algorithm uses a symetric key
461 and is widely used as a streaming cipher. Different key lengths are
462 supported by the algorithm but only a 128-bit key is supported at
463 present.
464
Michal Simekdd5000ef2024-04-16 08:55:16 +0200465source "lib/ecdsa/Kconfig"
466source "lib/rsa/Kconfig"
467source "lib/crypto/Kconfig"
468source "lib/crypt/Kconfig"
Ruchika Gupta2c3822e2015-01-23 16:01:51 +0530469
Simon Glass350497c2015-08-22 18:31:19 -0600470config TPM
471 bool "Trusted Platform Module (TPM) Support"
Simon Glasscf294b02015-10-03 06:39:36 -0600472 depends on DM
Sughosh Ganu9737fab2022-07-22 21:32:04 +0530473 imply DM_RNG
Eddie James8ed7bb32023-10-24 10:43:49 -0500474 select SHA1
Simon Glass350497c2015-08-22 18:31:19 -0600475 help
476 This enables support for TPMs which can be used to provide security
477 features for your board. The TPM can be connected via LPC or I2C
478 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
479 command to interactive the TPM. Driver model support is provided
480 for the low-level TPM interface, but only one TPM is supported at
481 a time by the TPM library.
Ilias Apalodimas1e665f92024-06-23 14:48:18 +0300482 For size reasons only SHA1 is selected which is supported on TPM1.2.
483 If you want a fully functional TPM enable all hashing algorithms.
484 If you enabled measured boot all hashing algorithms are selected.
Simon Glass350497c2015-08-22 18:31:19 -0600485
Simon Glass93a45b12018-10-01 12:22:19 -0600486config SPL_TPM
487 bool "Trusted Platform Module (TPM) Support in SPL"
488 depends on SPL_DM
Simon Glass2b95b492023-01-07 14:57:20 -0700489 imply SPL_CRC8
Simon Glass93a45b12018-10-01 12:22:19 -0600490 help
491 This enables support for TPMs which can be used to provide security
492 features for your board. The TPM can be connected via LPC or I2C
493 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
494 command to interactive the TPM. Driver model support is provided
495 for the low-level TPM interface, but only one TPM is supported at
496 a time by the TPM library.
497
498config TPL_TPM
499 bool "Trusted Platform Module (TPM) Support in TPL"
500 depends on TPL_DM
501 help
502 This enables support for TPMs which can be used to provide security
503 features for your board. The TPM can be connected via LPC or I2C
504 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
505 command to interactive the TPM. Driver model support is provided
506 for the low-level TPM interface, but only one TPM is supported at
507 a time by the TPM library.
508
Simon Glasse7ca7da2022-04-30 00:56:53 -0600509config VPL_TPM
510 bool "Trusted Platform Module (TPM) Support in VPL"
511 depends on VPL_DM
512 help
513 This enables support for TPMs which can be used to provide security
514 features for your board. The TPM can be connected via LPC or I2C
515 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
516 command to interactive the TPM. Driver model support is provided
517 for the low-level TPM interface, but only one TPM is supported at
518 a time by the TPM library.
519
Raymond Maof0c91252025-01-27 06:58:48 -0800520config TPM_PCR_ALLOCATE
521 bool "Re-configurate TPM algorithms in run-time (PCR allocate)"
522 depends on TPM_V2 && (MEASURED_BOOT || EFI_TCG2_PROTOCOL)
523 help
524 This enables a detection for the dismatches of algorithms among TPM
525 device, eventlog from previous boot stage and U-Boot support.
526 A PCR allocate command will be sent to reconfigurate the TPM device
527 in run-time to make sure algorithms in TPM device, eventlog and
528 U-Boot are aligned with each other.
529 A system reboot will be proceeded after then to activate the new
530 algorithms.
531
Simon Glass528fdd12017-04-26 22:27:49 -0600532endmenu
533
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300534menu "Android Verified Boot"
535
536config LIBAVB
537 bool "Android Verified Boot 2.0 support"
538 depends on ANDROID_BOOT_IMAGE
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300539 help
540 This enables support of Android Verified Boot 2.0 which can be used
541 to assure the end user of the integrity of the software running on a
542 device. Introduces such features as boot chain of trust, rollback
543 protection etc.
544
545endmenu
546
gaurav ranaef201592015-02-20 12:51:46 +0530547menu "Hashing Support"
548
Qu Wenruob98e8a22021-12-27 14:12:07 +0800549config BLAKE2
550 bool "Enable BLAKE2 support"
551 help
552 This option enables support of hashing using BLAKE2B algorithm.
553 The hash is calculated in software.
554 The BLAKE2 algorithm produces a hash value (digest) between 1 and
555 64 bytes.
556
gaurav ranaef201592015-02-20 12:51:46 +0530557config SHA1
558 bool "Enable SHA1 support"
559 help
560 This option enables support of hashing using SHA1 algorithm.
561 The hash is calculated in software.
562 The SHA1 algorithm produces a 160-bit (20-byte) hash value
563 (digest).
564
565config SHA256
566 bool "Enable SHA256 support"
567 help
568 This option enables support of hashing using SHA256 algorithm.
569 The hash is calculated in software.
570 The SHA256 algorithm produces a 256-bit (32-byte) hash value
571 (digest).
572
Reuben Dowle1908fd92020-04-16 17:36:52 +1200573config SHA512
574 bool "Enable SHA512 support"
Manorit Chawdhrya58132a2023-07-14 11:22:39 +0530575 default y if TI_SECURE_DEVICE && FIT_SIGNATURE
Reuben Dowle1908fd92020-04-16 17:36:52 +1200576 help
577 This option enables support of hashing using SHA512 algorithm.
578 The hash is calculated in software.
579 The SHA512 algorithm produces a 512-bit (64-byte) hash value
580 (digest).
581
582config SHA384
583 bool "Enable SHA384 support"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500584 select SHA512
Reuben Dowle1908fd92020-04-16 17:36:52 +1200585 help
586 This option enables support of hashing using SHA384 algorithm.
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500587 The hash is calculated in software. This is also selects SHA512,
588 because these implementations share the bulk of the code..
Reuben Dowle1908fd92020-04-16 17:36:52 +1200589 The SHA384 algorithm produces a 384-bit (48-byte) hash value
590 (digest).
591
gaurav ranaef201592015-02-20 12:51:46 +0530592config SHA_HW_ACCEL
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200593 bool "Enable hardware acceleration for SHA hash functions"
gaurav ranaef201592015-02-20 12:51:46 +0530594 help
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200595 This option enables hardware acceleration for the SHA1 and SHA256
596 hashing algorithms. This affects the 'hash' command and also the
597 hash_lookup_algo() function.
598
Simon Glassf7b37c22021-09-25 19:43:17 -0600599if SPL
600
Oleksandr Suvorov15a23ca2023-08-03 19:05:40 +0300601config SPL_CRC32
602 bool "Enable CRC32 support in SPL"
603 default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION
604 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
605 help
606 This option enables support of hashing using CRC32 algorithm.
607 The CRC32 algorithm produces 32-bit checksum value. For FIT
608 images, this is the least secure type of checksum, suitable for
609 detected accidental image corruption. For secure applications you
610 should consider SHA256 or SHA384.
611
Simon Glassf7b37c22021-09-25 19:43:17 -0600612config SPL_SHA1
613 bool "Enable SHA1 support in SPL"
614 default y if SHA1
615 help
616 This option enables support of hashing using SHA1 algorithm.
617 The hash is calculated in software.
618 The SHA1 algorithm produces a 160-bit (20-byte) hash value
619 (digest).
620
621config SPL_SHA256
622 bool "Enable SHA256 support in SPL"
623 default y if SHA256
624 help
625 This option enables support of hashing using SHA256 algorithm.
626 The hash is calculated in software.
627 The SHA256 algorithm produces a 256-bit (32-byte) hash value
628 (digest).
629
630config SPL_SHA512
631 bool "Enable SHA512 support in SPL"
632 default y if SHA512
633 help
634 This option enables support of hashing using SHA512 algorithm.
635 The hash is calculated in software.
636 The SHA512 algorithm produces a 512-bit (64-byte) hash value
637 (digest).
638
639config SPL_SHA384
640 bool "Enable SHA384 support in SPL"
641 default y if SHA384
642 select SPL_SHA512
643 help
644 This option enables support of hashing using SHA384 algorithm.
645 The hash is calculated in software. This is also selects SHA512,
646 because these implementations share the bulk of the code..
647 The SHA384 algorithm produces a 384-bit (48-byte) hash value
648 (digest).
649
Simon Glass383dd572021-09-25 19:43:18 -0600650config SPL_SHA_HW_ACCEL
651 bool "Enable hardware acceleration for SHA hash functions"
652 default y if SHA_HW_ACCEL
653 help
654 This option enables hardware acceleration for the SHA1 and SHA256
655 hashing algorithms. This affects the 'hash' command and also the
656 hash_lookup_algo() function.
657
658config SPL_SHA_PROG_HW_ACCEL
659 bool "Enable Progressive hashing support using hardware in SPL"
660 depends on SHA_PROG_HW_ACCEL
661 default y
662 help
663 This option enables hardware-acceleration for SHA progressive
664 hashing.
665 Data can be streamed in a block at a time and the hashing is
666 performed in hardware.
667
Simon Glassf7b37c22021-09-25 19:43:17 -0600668endif
669
Simon Glass540883b2023-02-22 09:34:01 -0700670config VPL_SHA1
671 bool "Enable SHA1 support in VPL"
672 depends on VPL
673 default y if SHA1
674 help
675 This option enables support of hashing using SHA1 algorithm.
676 The hash is calculated in software.
677 The SHA1 algorithm produces a 160-bit (20-byte) hash value
678 (digest).
679
680config VPL_SHA256
681 bool "Enable SHA256 support in VPL"
682 depends on VPL
683 default y if SHA256
684 help
685 This option enables support of hashing using SHA256 algorithm.
686 The hash is calculated in software.
687 The SHA256 algorithm produces a 256-bit (32-byte) hash value
688 (digest).
689
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200690if SHA_HW_ACCEL
691
692config SHA512_HW_ACCEL
693 bool "Enable hardware acceleration for SHA512"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500694 depends on SHA512
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200695 help
696 This option enables hardware acceleration for the SHA384 and SHA512
697 hashing algorithms. This affects the 'hash' command and also the
698 hash_lookup_algo() function.
gaurav ranaef201592015-02-20 12:51:46 +0530699
700config SHA_PROG_HW_ACCEL
701 bool "Enable Progressive hashing support using hardware"
gaurav ranaef201592015-02-20 12:51:46 +0530702 help
Joel Stanley92efc1f2021-02-17 13:50:42 +1030703 This option enables hardware-acceleration for SHA progressive
704 hashing.
705 Data can be streamed in a block at a time and the hashing is
706 performed in hardware.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000707
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200708endif
709
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000710config MD5
Simon Glassd33d0db2020-05-06 08:03:56 -0600711 bool "Support MD5 algorithm"
712 help
713 This option enables MD5 support. MD5 is an algorithm designed
714 in 1991 that produces a 16-byte digest (or checksum) from its input
715 data. It has a number of vulnerabilities which preclude its use in
716 security applications, but it can be useful for providing a quick
717 checksum of a block of data.
718
719config SPL_MD5
720 bool "Support MD5 algorithm in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400721 depends on SPL
Simon Glassd33d0db2020-05-06 08:03:56 -0600722 help
723 This option enables MD5 support in SPL. MD5 is an algorithm designed
724 in 1991 that produces a 16-byte digest (or checksum) from its input
725 data. It has a number of vulnerabilities which preclude its use in
726 security applications, but it can be useful for providing a quick
727 checksum of a block of data.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000728
Simon Glass2b95b492023-01-07 14:57:20 -0700729config CRC8
730 def_bool y
731 help
732 Enables CRC8 support in U-Boot. This is normally required. CRC8 is
733 a simple and fast checksumming algorithm which does a bytewise
734 checksum with feedback to produce an 8-bit result. The code is small
735 and it does not require a lookup table (unlike CRC32).
736
737config SPL_CRC8
738 bool "Support CRC8 in SPL"
739 depends on SPL
740 help
741 Enables CRC8 support in SPL. This is not normally required. CRC8 is
742 a simple and fast checksumming algorithm which does a bytewise
743 checksum with feedback to produce an 8-bit result. The code is small
744 and it does not require a lookup table (unlike CRC32).
745
Simon Glass4649af32024-12-19 11:29:05 -0700746config TPL_CRC8
747 bool "Support CRC8 in TPL"
748 depends on TPL
749 help
750 Enables CRC8 support in TPL. This is not normally required. CRC8 is
751 a simple and fast checksumming algorithm which does a bytewise
752 checksum with feedback to produce an 8-bit result. The code is small
753 and it does not require a lookup table (unlike CRC32).
754
755config VPL_CRC8
756 bool "Support CRC8 in VPL"
757 depends on VPL
758 help
759 Enables CRC8 support in VPL. This is not normally required. CRC8 is
760 a simple and fast checksumming algorithm which does a bytewise
761 checksum with feedback to produce an 8-bit result. The code is small
762 and it does not require a lookup table (unlike CRC32).
763
Simon Glass52b51ab2025-01-26 11:43:14 -0700764config CRC16
765 bool "Support CRC16"
766 default y
767 help
768 Enables CRC16 support. This is normally required. Two algorithms are
769 provided:
770
771 - CCITT, with a polynomical x^16 + x^12 + x^5 + 1
772 - standard, with polynomial x^16 + x^15 + x^2 + 1 (0x8005)
773
Sean Anderson01349c12023-10-14 16:47:49 -0400774config SPL_CRC16
775 bool "Support CRC16 in SPL"
776 depends on SPL
777 help
778 Enables CRC16 support in SPL. This is not normally required.
779
Simon Glass577226c2021-09-25 19:43:24 -0600780config CRC32
781 def_bool y
782 help
783 Enables CRC32 support in U-Boot. This is normally required.
784
Marek Behúncdccc032017-09-03 17:00:23 +0200785config CRC32C
786 bool
787
Marek Behúnb139a7f2019-04-29 22:40:43 +0200788config XXHASH
789 bool
790
gaurav ranaef201592015-02-20 12:51:46 +0530791endmenu
792
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700793menu "Compression Support"
794
795config LZ4
796 bool "Enable LZ4 decompression support"
797 help
798 If this option is set, support for LZ4 compressed images
799 is included. The LZ4 algorithm can run in-place as long as the
800 compressed image is loaded to the end of the output buffer, and
801 trades lower compression ratios for much faster decompression.
Patrick Delaunaycd831af2021-03-10 10:16:28 +0100802
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700803 NOTE: This implements the release version of the LZ4 frame
804 format as generated by default by the 'lz4' command line tool.
805 This is not the same as the outdated, less efficient legacy
806 frame format currently (2015) implemented in the Linux kernel
807 (generated by 'lz4 -l'). The two formats are incompatible.
808
Simon Glass264aa5f2017-05-17 03:25:42 -0600809config LZMA
810 bool "Enable LZMA decompression support"
811 help
812 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
813 a dictionary compression algorithm that provides a high compression
814 ratio and fairly fast decompression speed. See also
815 CONFIG_CMD_LZMADEC which provides a decode command.
816
Boris Brezillonaa57d0f2017-02-27 18:22:06 +0100817config LZO
Tom Rinic20bb732017-07-22 18:36:16 -0400818 bool "Enable LZO decompression support"
819 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300820 This enables support for the LZO compression algorithm.
York Suna6945fe2017-08-15 11:14:43 -0700821
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100822config GZIP
Heiko Schocherb93cc602019-04-29 08:59:38 +0200823 bool "Enable gzip decompression support"
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100824 select ZLIB
825 default y
826 help
827 This enables support for GZIP compression algorithm.
828
Joao Marcos Costaae8abb12020-07-30 15:33:49 +0200829config ZLIB_UNCOMPRESS
830 bool "Enables zlib's uncompress() functionality"
831 help
832 This enables an extra zlib functionality: the uncompress() function,
833 which decompresses data from a buffer into another, knowing their
834 sizes. Unlike gunzip(), there is no header parsing.
835
Michael Walle3a6e3512020-05-22 14:07:36 +0200836config GZIP_COMPRESSED
837 bool
838 select ZLIB
839
Atish Patra1fa79622020-03-05 16:24:21 -0800840config BZIP2
841 bool "Enable bzip2 decompression support"
842 help
843 This enables support for BZIP2 compression algorithm.
844
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100845config ZLIB
846 bool
847 default y
848 help
849 This enables ZLIB compression lib.
850
Marek Behúne87e2002019-04-29 22:40:44 +0200851config ZSTD
852 bool "Enable Zstandard decompression support"
853 select XXHASH
854 help
855 This enables Zstandard decompression library.
856
Brandon Maierdbe88da2023-01-12 10:27:45 -0600857if ZSTD
858
859config ZSTD_LIB_MINIFY
860 bool "Minify Zstandard code"
861 default y
862 help
863 This disables various optional components and changes the
864 compilation flags to prioritize space-saving.
865
866 For detailed info, see zstd's lib/README.md
867
868 https://github.com/facebook/zstd/blob/dev/lib/README.md
869
870endif
871
Simon Glass1af8b152023-02-22 09:33:54 -0700872config SPL_BZIP2
873 bool "Enable bzip2 decompression support for SPL build"
874 depends on SPL
875 help
876 This enables support for bzip2 compression algorithm for SPL boot.
877
Simon Glasse107bcd2018-11-06 15:21:30 -0700878config SPL_LZ4
879 bool "Enable LZ4 decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400880 depends on SPL
Simon Glasse107bcd2018-11-06 15:21:30 -0700881 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200882 This enables support for the LZ4 decompression algorithm in SPL. LZ4
Simon Glasse107bcd2018-11-06 15:21:30 -0700883 is a lossless data compression algorithm that is focused on
884 fast compression and decompression speed. It belongs to the LZ77
885 family of byte-oriented compression schemes.
886
Simon Glass2d311212024-12-19 11:29:03 -0700887config TPL_LZ4
888 bool "Enable LZ4 decompression support in TPL"
889 depends on TPL
890 help
891 This enables support for the LZ4 decompression algorithm in TPL. LZ4
892 is a lossless data compression algorithm that is focused on
893 fast compression and decompression speed. It belongs to the LZ77
894 family of byte-oriented compression schemes.
895
896config VPL_LZ4
897 bool "Enable LZ4 decompression support in VPL"
898 depends on VPL
899 help
900 This enables support for the LZ4 decompression algorithm in VPL. LZ4
901 is a lossless data compression algorithm that is focused on
902 fast compression and decompression speed. It belongs to the LZ77
903 family of byte-oriented compression schemes.
904
developer6a4e1d32020-04-21 09:28:38 +0200905config SPL_LZMA
906 bool "Enable LZMA decompression support for SPL build"
Tom Rini0a83cc22022-06-10 23:03:09 -0400907 depends on SPL
developer6a4e1d32020-04-21 09:28:38 +0200908 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200909 This enables support for LZMA compression algorithm for SPL boot.
developer6a4e1d32020-04-21 09:28:38 +0200910
Simon Glass2d311212024-12-19 11:29:03 -0700911config TPL_LZMA
912 bool "Enable LZMA decompression support for TPL build"
913 depends on TPL
914 help
915 This enables support for LZMA compression algorithm for TPL boot.
916
Simon Glasse7ca7da2022-04-30 00:56:53 -0600917config VPL_LZMA
918 bool "Enable LZMA decompression support for VPL build"
919 default y if LZMA
920 help
921 This enables support for LZMA compression algorithm for VPL boot.
922
Jean-Jacques Hiblotdbde2882017-09-15 12:57:30 +0200923config SPL_LZO
924 bool "Enable LZO decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400925 depends on SPL
Jean-Jacques Hiblotdbde2882017-09-15 12:57:30 +0200926 help
927 This enables support for LZO compression algorithm in the SPL.
928
York Suna6945fe2017-08-15 11:14:43 -0700929config SPL_GZIP
930 bool "Enable gzip decompression support for SPL build"
931 select SPL_ZLIB
932 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300933 This enables support for the GZIP compression algorithm for SPL boot.
York Suna6945fe2017-08-15 11:14:43 -0700934
Simon Glass2d311212024-12-19 11:29:03 -0700935config TPL_GZIP
936 bool "Enable gzip decompression support for SPL build"
937 select TPL_ZLIB
938 help
939 This enables support for the GZIP compression algorithm for TPL
940
York Suna6945fe2017-08-15 11:14:43 -0700941config SPL_ZLIB
942 bool
943 help
944 This enables compression lib for SPL boot.
945
Simon Glass2d311212024-12-19 11:29:03 -0700946config TPL_ZLIB
947 bool
948 help
949 This enables compression lib for TPL
950
Marek Behúne87e2002019-04-29 22:40:44 +0200951config SPL_ZSTD
952 bool "Enable Zstandard decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400953 depends on SPL
Marek Behúne87e2002019-04-29 22:40:44 +0200954 select XXHASH
955 help
956 This enables Zstandard decompression library in the SPL.
957
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700958endmenu
959
Przemyslaw Marczak37550132015-04-20 20:07:40 +0200960config ERRNO_STR
961 bool "Enable function for getting errno-related string message"
962 help
963 The function errno_str(int errno), returns a pointer to the errno
964 corresponding text message:
965 - if errno is null or positive number - a pointer to "Success" message
966 - if errno is negative - a pointer to errno related message
967
Alexey Brodkin2d2fa492018-06-05 17:17:57 +0300968config HEXDUMP
969 bool "Enable hexdump"
970 help
971 This enables functions for printing dumps of binary data.
972
Simon Glassa37fd4d2020-09-12 11:13:35 -0600973config SPL_HEXDUMP
974 bool "Enable hexdump in SPL"
Heinrich Schuchardt11df0722021-07-24 17:35:46 +0200975 depends on SPL && HEXDUMP
Simon Glassa37fd4d2020-09-12 11:13:35 -0600976 help
977 This enables functions for printing dumps of binary data in
978 SPL.
979
Sean Anderson3b4a6f52020-10-27 19:55:36 -0400980config GETOPT
981 bool "Enable getopt"
982 help
983 This enables functions for parsing command-line options.
984
Simon Glassa66c5412016-02-22 22:55:42 -0700985config OF_LIBFDT
986 bool "Enable the FDT library"
987 default y if OF_CONTROL
988 help
989 This enables the FDT library (libfdt). It provides functions for
990 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +0200991 removing nodes and properties, scanning through the tree and finding
Simon Glassa66c5412016-02-22 22:55:42 -0700992 particular compatible nodes. The library operates on a flattened
993 version of the device tree.
994
Simon Glassc48044d2019-10-27 09:47:40 -0600995config OF_LIBFDT_ASSUME_MASK
996 hex "Mask of conditions to assume for libfdt"
997 depends on OF_LIBFDT || FIT
Tom Rinif18679c2023-08-02 11:09:43 -0400998 default 0x0
Simon Glassc48044d2019-10-27 09:47:40 -0600999 help
1000 Use this to change the assumptions made by libfdt about the
1001 device tree it is working with. A value of 0 means that no assumptions
1002 are made, and libfdt is able to deal with malicious data. A value of
1003 0xff means all assumptions are made and any invalid data may cause
1004 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1005
Maxime Ripard9e901ce2016-07-05 10:26:44 +02001006config OF_LIBFDT_OVERLAY
1007 bool "Enable the FDT library overlay support"
Tom Rinic1e49ba2018-05-08 08:52:17 -04001008 depends on OF_LIBFDT
Praneeth Bajjuri7b71a012018-04-25 16:03:23 -05001009 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
Maxime Ripard9e901ce2016-07-05 10:26:44 +02001010 help
1011 This enables the FDT library (libfdt) overlay support.
1012
Tom Rinid2cd4312022-08-02 07:33:27 -04001013config SYS_FDT_PAD
Heinrich Schuchardt6f69e212025-03-02 16:02:31 +01001014 hex "Free space added to device-tree before booting"
Tom Rinid2cd4312022-08-02 07:33:27 -04001015 depends on OF_LIBFDT
1016 default 0x13000 if FMAN_ENET || QE || U_QE
1017 default 0x3000
1018 help
Heinrich Schuchardt6f69e212025-03-02 16:02:31 +01001019 The operating system may need a free area at the end of the device-
1020 tree for fix-ups. This setting defines by how many bytes U-Boot
1021 extends the device-tree before booting.
Tom Rinid2cd4312022-08-02 07:33:27 -04001022
Simon Glass8b426922016-02-22 22:55:45 -07001023config SPL_OF_LIBFDT
1024 bool "Enable the FDT library for SPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -06001025 depends on SPL_LIBGENERIC_SUPPORT
Simon Glass8b426922016-02-22 22:55:45 -07001026 default y if SPL_OF_CONTROL
1027 help
1028 This enables the FDT library (libfdt). It provides functions for
1029 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +02001030 removing nodes and properties, scanning through the tree and finding
Simon Glass8b426922016-02-22 22:55:45 -07001031 particular compatible nodes. The library operates on a flattened
1032 version of the device tree.
1033
Simon Glassc48044d2019-10-27 09:47:40 -06001034config SPL_OF_LIBFDT_ASSUME_MASK
1035 hex "Mask of conditions to assume for libfdt"
Tom Rini0a83cc22022-06-10 23:03:09 -04001036 depends on SPL_OF_LIBFDT || (FIT && SPL)
Simon Glassc48044d2019-10-27 09:47:40 -06001037 default 0xff
1038 help
1039 Use this to change the assumptions made by libfdt in SPL about the
1040 device tree it is working with. A value of 0 means that no assumptions
1041 are made, and libfdt is able to deal with malicious data. A value of
1042 0xff means all assumptions are made and any invalid data may cause
1043 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1044
Simon Glassca8ec4b2018-10-01 12:22:21 -06001045config TPL_OF_LIBFDT
1046 bool "Enable the FDT library for TPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -06001047 depends on TPL_LIBGENERIC_SUPPORT
Simon Glassca8ec4b2018-10-01 12:22:21 -06001048 default y if TPL_OF_CONTROL
1049 help
1050 This enables the FDT library (libfdt). It provides functions for
1051 accessing binary device tree images in memory, such as adding and
1052 removing nodes and properties, scanning through the tree and finding
1053 particular compatible nodes. The library operates on a flattened
1054 version of the device tree.
1055
Simon Glassc48044d2019-10-27 09:47:40 -06001056config TPL_OF_LIBFDT_ASSUME_MASK
1057 hex "Mask of conditions to assume for libfdt"
Tom Rini36a4ca02022-06-08 08:24:39 -04001058 depends on TPL_OF_LIBFDT || (FIT && TPL)
Simon Glassc48044d2019-10-27 09:47:40 -06001059 default 0xff
1060 help
1061 Use this to change the assumptions made by libfdt in TPL about the
1062 device tree it is working with. A value of 0 means that no assumptions
1063 are made, and libfdt is able to deal with malicious data. A value of
1064 0xff means all assumptions are made and any invalid data may cause
1065 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1066
Simon Glasse7ca7da2022-04-30 00:56:53 -06001067config VPL_OF_LIBFDT
1068 bool "Enable the FDT library for VPL"
Tom Rini7fb323b2022-06-08 08:24:40 -04001069 depends on VPL
Simon Glasse7ca7da2022-04-30 00:56:53 -06001070 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
1071 help
1072 This enables the FDT library (libfdt). It provides functions for
1073 accessing binary device tree images in memory, such as adding and
1074 removing nodes and properties, scanning through the tree and finding
1075 particular compatible nodes. The library operates on a flattened
1076 version of the device tree.
1077
1078config VPL_OF_LIBFDT_ASSUME_MASK
1079 hex "Mask of conditions to assume for libfdt"
Tom Rini7fb323b2022-06-08 08:24:40 -04001080 depends on VPL_OF_LIBFDT || (FIT && VPL)
Simon Glasse7ca7da2022-04-30 00:56:53 -06001081 default 0xff
1082 help
1083 Use this to change the assumptions made by libfdt in SPL about the
1084 device tree it is working with. A value of 0 means that no assumptions
1085 are made, and libfdt is able to deal with malicious data. A value of
1086 0xff means all assumptions are made and any invalid data may cause
1087 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1088
Alexander Graffb228082016-08-19 01:23:23 +02001089menu "System tables"
Alexander Graf66f96e12016-08-19 01:23:29 +02001090 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
Alexander Graffb228082016-08-19 01:23:23 +02001091
Simon Glass5d093f32020-11-04 09:57:25 -07001092config BLOBLIST_TABLES
1093 bool "Put tables in a bloblist"
Patrick Rudolphad392d52024-10-23 15:20:07 +02001094 depends on BLOBLIST
Simon Glass4d8c5202025-01-10 17:00:17 -07001095 default y if X86
Patrick Rudolphad392d52024-10-23 15:20:07 +02001096 default y if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
1097 default n
Simon Glass5d093f32020-11-04 09:57:25 -07001098 help
Patrick Rudolphad392d52024-10-23 15:20:07 +02001099 On x86 normally tables are placed at address 0xf0000 and can be up
1100 to 64KB long. With this option, tables are instead placed in the
1101 bloblist with a pointer from 0xf0000. The size can then be larger
1102 and the tables can be placed high in memory.
1103 On other architectures the tables are always placed in high memory.
Simon Glass5d093f32020-11-04 09:57:25 -07001104
Alexander Graffb228082016-08-19 01:23:23 +02001105config GENERATE_SMBIOS_TABLE
1106 bool "Generate an SMBIOS (System Management BIOS) table"
Simon Glass5059dbe2023-09-19 21:00:13 -06001107 depends on SMBIOS
Alexander Graffb228082016-08-19 01:23:23 +02001108 default y
Alexander Graffb228082016-08-19 01:23:23 +02001109 help
1110 The System Management BIOS (SMBIOS) specification addresses how
1111 motherboard and system vendors present management information about
1112 their products in a standard format by extending the BIOS interface
1113 on Intel architecture systems.
1114
1115 Check http://www.dmtf.org/standards/smbios for details.
1116
Tom Rinid0dca222023-11-20 15:17:23 -05001117 See also SYSINFO_SMBIOS which allows SMBIOS values to be provided in
Simon Glass052a03e2020-11-05 06:32:11 -07001118 the devicetree.
1119
Raymond Maoa28ef802024-12-06 14:54:22 -08001120config GENERATE_SMBIOS_TABLE_VERBOSE
1121 bool "Generate a verbose SMBIOS (System Management BIOS) table"
1122 depends on GENERATE_SMBIOS_TABLE
1123 help
1124 Provide verbose SMBIOS information.
1125
Simon Glasse70648e2023-09-14 10:55:39 -06001126endmenu
1127
Tero Kristocfbe15c2021-06-11 11:45:02 +03001128config LIB_RATIONAL
1129 bool "enable continued fraction calculation routines"
1130
1131config SPL_LIB_RATIONAL
1132 bool "enable continued fraction calculation routines for SPL"
1133 depends on SPL
1134
AKASHI Takahirof7025262019-11-13 09:44:53 +09001135config ASN1_COMPILER
1136 bool
Philippe Reynes2aba9442022-03-28 22:56:54 +02001137 help
1138 ASN.1 (Abstract Syntax Notation One) is a standard interface
1139 description language for defining data structures that can be
1140 serialized and deserialized in a cross-platform way. It is
1141 broadly used in telecommunications and computer networking,
1142 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1143 This option enables the support of the asn1 compiler.
AKASHI Takahirof7025262019-11-13 09:44:53 +09001144
AKASHI Takahiro3a888712019-11-13 09:44:55 +09001145config ASN1_DECODER
1146 bool
1147 help
Philippe Reynes2aba9442022-03-28 22:56:54 +02001148 ASN.1 (Abstract Syntax Notation One) is a standard interface
1149 description language for defining data structures that can be
1150 serialized and deserialized in a cross-platform way. It is
1151 broadly used in telecommunications and computer networking,
1152 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1153 This option enables the support of the asn1 decoder.
AKASHI Takahiro3a888712019-11-13 09:44:55 +09001154
Philippe Reynescf538b52022-03-28 22:56:56 +02001155config SPL_ASN1_DECODER
1156 bool
1157 help
1158 ASN.1 (Abstract Syntax Notation One) is a standard interface
1159 description language for defining data structures that can be
1160 serialized and deserialized in a cross-platform way. It is
1161 broadly used in telecommunications and computer networking,
1162 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1163 This option enables the support of the asn1 decoder in the SPL.
1164
AKASHI Takahiro54923642019-11-13 09:44:57 +09001165config OID_REGISTRY
1166 bool
1167 help
Philippe Reynese35c3a22022-03-28 22:56:55 +02001168 In computing, object identifiers or OIDs are an identifier mechanism
1169 standardized by the International Telecommunication Union (ITU) and
1170 ISO/IEC for naming any object, concept, or "thing" with a globally
1171 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
AKASHI Takahiro54923642019-11-13 09:44:57 +09001172 Enable fast lookup object identifier registry.
1173
Philippe Reynescf538b52022-03-28 22:56:56 +02001174config SPL_OID_REGISTRY
1175 bool
1176 help
1177 In computing, object identifiers or OIDs are an identifier mechanism
1178 standardized by the International Telecommunication Union (ITU) and
1179 ISO/IEC for naming any object, concept, or "thing" with a globally
1180 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
1181 Enable fast lookup object identifier registry in the SPL.
1182
Simon Glass5059dbe2023-09-19 21:00:13 -06001183config SMBIOS
1184 bool "SMBIOS support"
1185 depends on X86 || EFI_LOADER
1186 default y
Simon Glassaadec122023-09-20 07:29:51 -06001187 select LAST_STAGE_INIT
Simon Glass5059dbe2023-09-19 21:00:13 -06001188 help
1189 Indicates that this platform can support System Management BIOS
1190 (SMBIOS) tables. These provide various pieces of information about
1191 the board, such as the manufacturer and the model name.
1192
1193 See GENERATE_SMBIOS_TABLE which controls whether U-Boot actually
1194 creates these tables, rather than them coming from a previous firmware
1195 stage.
1196
Christian Gmeiner19859982020-11-03 15:34:51 +01001197config SMBIOS_PARSER
1198 bool "SMBIOS parser"
1199 help
1200 A simple parser for SMBIOS data.
1201
Michal Simekdd5000ef2024-04-16 08:55:16 +02001202source "lib/optee/Kconfig"
Simon Glass9539e692015-07-31 09:31:36 -06001203
Thierry Reding52c7f1f32019-03-21 19:10:04 +01001204config TEST_FDTDEC
1205 bool "enable fdtdec test"
1206 depends on OF_LIBFDT
1207
AKASHI Takahiro51ba5222019-11-13 09:44:49 +09001208config LIB_DATE
1209 bool
1210
Keerthy76f361a2020-02-12 13:55:03 +05301211config LIB_ELF
1212 bool
1213 help
Patrick Delaunayfb67df82021-01-04 15:33:28 +01001214 Support basic elf loading/validating functions.
1215 This supports for 32 bit and 64 bit versions.
Keerthy76f361a2020-02-12 13:55:03 +05301216
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001217config LMB
1218 bool "Enable the logical memory blocks library (lmb)"
Tom Rini53320122022-04-06 09:21:25 -04001219 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001220 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
Sughosh Ganuad3b6e92024-08-26 17:29:29 +05301221 select ARCH_MISC_INIT if PPC
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001222 help
Sughosh Ganu69db78f2024-08-26 17:29:21 +05301223 Support the library logical memory blocks. This will require
1224 a malloc() implementation for defining the data structures
1225 needed for maintaining the LMB memory map.
1226
1227config SPL_LMB
1228 bool "Enable LMB module for SPL"
1229 depends on SPL && SPL_FRAMEWORK && SPL_SYS_MALLOC
1230 help
1231 Enable support for Logical Memory Block library routines in
1232 SPL. This will require a malloc() implementation for defining
1233 the data structures needed for maintaining the LMB memory map.
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001234
Sughosh Ganu1a36d442024-10-15 21:07:11 +05301235config LMB_ARCH_MEM_MAP
1236 bool "Add an architecture specific memory map"
1237 depends on LMB
Sughosh Ganu526eebd2024-10-15 21:07:13 +05301238 default y if FSL_LAYERSCAPE || X86
Sughosh Ganu1a36d442024-10-15 21:07:11 +05301239 help
1240 Some architectures have special or unique aspects which need
1241 consideration when adding memory ranges to the list of available
1242 memory map. Enable this config in such scenarios which allow
1243 architectures and boards to define their own memory map.
1244
1245config SPL_LMB_ARCH_MEM_MAP
1246 bool "Add an architecture specific memory map"
1247 depends on SPL_LMB
1248 help
1249 Some architectures have special or unique scenarios which need
1250 consideration when adding memory ranges to the list of available
1251 memory map. Enable this config in such scenarios which allow
1252 architectures and boards to define their own memory map.
1253
Simon Glass42d97e52022-12-21 16:08:28 -07001254config PHANDLE_CHECK_SEQ
1255 bool "Enable phandle check while getting sequence number"
1256 help
1257 When there are multiple device tree nodes with same name,
Anand Moon6c368f42024-06-23 23:10:21 +05301258 enable this config option to distinguish them using
Simon Glass42d97e52022-12-21 16:08:28 -07001259 phandles in fdtdec_get_alias_seq() function.
1260
Jerome Forissierc14cfee2025-04-18 16:09:34 +02001261config UTHREAD
1262 bool "Enable thread support"
1263 depends on HAVE_INITJMP
1264 help
1265 Implement a simple form of cooperative multi-tasking based on
1266 context-switching via initjmp(), setjmp() and longjmp(). The
1267 uthread_ interface enables the main thread of execution to create
1268 one or more secondary threads and schedule them until they all have
1269 returned. At any point a thread may suspend its execution and
1270 schedule another thread, which allows for the efficient multiplexing
1271 of leghthy operations.
1272
1273config UTHREAD_STACK_SIZE
1274 int "Default uthread stack size"
1275 depends on UTHREAD
1276 default 32768
1277 help
1278 The default stack size for uthreads. Each uthread has its own stack.
1279 When the stack_sz argument to uthread_create() is zero then this
1280 value is used.
1281
Eugen Hristevdb6bbcb2022-01-04 18:20:19 +02001282endmenu
Sughosh Ganu1cadae22022-10-21 18:16:03 +05301283
Michal Simekdd5000ef2024-04-16 08:55:16 +02001284source "lib/fwu_updates/Kconfig"