blob: 179544611148ff9f601d8ff2f88251223d891683 [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
Simon Glassa6cee932021-12-01 09:02:36 -0700320 select QFW if QEMU
321 help
322 The Advanced Configuration and Power Interface (ACPI) specification
323 provides an open standard for device configuration and management
324 by the operating system. It defines platform-independent interfaces
325 for configuration and power management monitoring.
326
Patrick Rudolph2f6f8d92024-10-23 15:20:13 +0200327config ACPI_PARKING_PROTOCOL
328 bool "Support ACPI parking protocol method"
329 depends on GENERATE_ACPI_TABLE
330 depends on ARMV8_MULTIENTRY
331 depends on BLOBLIST_TABLES
332 default y if !SEC_FIRMWARE_ARMV8_PSCI && !ARMV8_PSCI
333 help
334 Say Y here to support "ACPI parking protocol" enable method
335 for booting Linux.
336
337 To use this feature, you must do:
338 - Bring secondary CPUs into U-Boot proper in a board-specific
339 manner. This must be done *after* relocation. Otherwise, the
340 secondary CPUs will spin in unprotected memory-area because the
341 master CPU protects the relocated spin code.
342
Simon Glasse2f94ae2017-04-02 09:50:28 -0600343config SPL_TINY_MEMSET
344 bool "Use a very small memset() in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400345 depends on SPL
Simon Glasse2f94ae2017-04-02 09:50:28 -0600346 help
347 The faster memset() is the arch-specific one (if available) enabled
348 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
349 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300350 size-constrained environments even this may be too big. Enable this
Simon Glasse2f94ae2017-04-02 09:50:28 -0600351 option to reduce code size slightly at the cost of some speed.
352
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200353config TPL_TINY_MEMSET
354 bool "Use a very small memset() in TPL"
Tom Rini36a4ca02022-06-08 08:24:39 -0400355 depends on TPL
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200356 help
357 The faster memset() is the arch-specific one (if available) enabled
358 by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
359 better performance by writing a word at a time. But in very
Chris Packham1c3b7ba2019-01-13 22:13:28 +1300360 size-constrained environments even this may be too big. Enable this
Philipp Tomsichfefc4ec2017-08-03 22:52:04 +0200361 option to reduce code size slightly at the cost of some speed.
362
Boris Brezillon627dc182017-02-27 18:22:05 +0100363config RBTREE
364 bool
365
Nandor Hand5ea84a2017-11-08 15:35:14 +0000366config BITREVERSE
367 bool "Bit reverse library from Linux"
368
Simon Glassbfce7fc2019-04-08 13:20:51 -0600369config TRACE
370 bool "Support for tracing of function calls and timing"
371 imply CMD_TRACE
Simon Glass6b5424a2022-12-21 16:08:26 -0700372 imply TIMER_EARLY
Simon Glassbfce7fc2019-04-08 13:20:51 -0600373 help
374 Enables function tracing within U-Boot. This allows recording of call
375 traces including timing information. The command can write data to
376 memory for exporting for analysis (e.g. using bootchart).
Vincent Stehlé28c23622024-04-11 18:44:02 +0200377 See doc/develop/trace.rst for full details.
Simon Glassbfce7fc2019-04-08 13:20:51 -0600378
Simon Glass445078e2019-04-08 13:20:52 -0600379config TRACE_BUFFER_SIZE
380 hex "Size of trace buffer in U-Boot"
381 depends on TRACE
382 default 0x01000000
383 help
384 Sets the size of the trace buffer in U-Boot. This is allocated from
385 memory during relocation. If this buffer is too small, the trace
386 history will be truncated, with later records omitted.
387
388 If early trace is enabled (i.e. before relocation), this buffer must
389 be large enough to include all the data from the early trace buffer as
390 well, since this is copied over to the main buffer during relocation.
391
392 A trace record is emitted for each function call and each record is
393 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
394 the size is too small then 'trace stats' will show a message saying
395 how many records were dropped due to buffer overflow.
396
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200397config TRACE_CALL_DEPTH_LIMIT
398 int "Trace call depth limit"
399 depends on TRACE
400 default 15
401 help
402 Sets the maximum call depth up to which function calls are recorded.
403
Simon Glass445078e2019-04-08 13:20:52 -0600404config TRACE_EARLY
405 bool "Enable tracing before relocation"
406 depends on TRACE
407 help
408 Sometimes it is helpful to trace execution of U-Boot before
409 relocation. This is possible by using a arch-specific, fixed buffer
410 position in memory. Enable this option to start tracing as early as
411 possible after U-Boot starts.
412
413config TRACE_EARLY_SIZE
414 hex "Size of early trace buffer in U-Boot"
415 depends on TRACE_EARLY
416 default 0x00100000
417 help
418 Sets the size of the early trace buffer in bytes. This is used to hold
419 tracing information before relocation.
420
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200421config TRACE_EARLY_CALL_DEPTH_LIMIT
422 int "Early trace call depth limit"
423 depends on TRACE_EARLY
Simon Glass971574d2023-01-15 14:15:44 -0700424 default 15
Heinrich Schuchardtc1a73792019-06-02 13:30:09 +0200425 help
426 Sets the maximum call depth up to which function calls are recorded
427 during early tracing.
428
Simon Glass445078e2019-04-08 13:20:52 -0600429config TRACE_EARLY_ADDR
430 hex "Address of early trace buffer in U-Boot"
431 depends on TRACE_EARLY
Sughosh Ganu3f768682024-08-26 17:29:32 +0530432 default 0x00200000
Simon Glass445078e2019-04-08 13:20:52 -0600433 help
434 Sets the address of the early trace buffer in U-Boot. This memory
435 must be accessible before relocation.
436
437 A trace record is emitted for each function call and each record is
438 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
439 the size is too small then the message which says the amount of early
440 data being coped will the the same as the
441
Loic Poulain12797e62021-11-25 18:16:14 +0100442config CIRCBUF
443 bool "Enable circular buffer support"
444
Michal Simekdd5000ef2024-04-16 08:55:16 +0200445source "lib/dhry/Kconfig"
Simon Glass99dbe4b2015-06-23 15:38:23 -0600446
Raymond Mao87010c32024-10-03 14:50:15 -0700447menu "Alternative crypto libraries"
Tom Rini6fdb77e2025-03-14 19:29:33 -0600448
449source "lib/mbedtls/Kconfig"
450
Raymond Mao87010c32024-10-03 14:50:15 -0700451endmenu
452
Simon Glass528fdd12017-04-26 22:27:49 -0600453menu "Security support"
454
455config AES
456 bool "Support the AES algorithm"
457 help
458 This provides a means to encrypt and decrypt data using the AES
459 (Advanced Encryption Standard). This algorithm uses a symetric key
460 and is widely used as a streaming cipher. Different key lengths are
461 supported by the algorithm but only a 128-bit key is supported at
462 present.
463
Michal Simekdd5000ef2024-04-16 08:55:16 +0200464source "lib/ecdsa/Kconfig"
465source "lib/rsa/Kconfig"
466source "lib/crypto/Kconfig"
467source "lib/crypt/Kconfig"
Ruchika Gupta2c3822e2015-01-23 16:01:51 +0530468
Simon Glass350497c2015-08-22 18:31:19 -0600469config TPM
470 bool "Trusted Platform Module (TPM) Support"
Simon Glasscf294b02015-10-03 06:39:36 -0600471 depends on DM
Sughosh Ganu9737fab2022-07-22 21:32:04 +0530472 imply DM_RNG
Eddie James8ed7bb32023-10-24 10:43:49 -0500473 select SHA1
Simon Glass350497c2015-08-22 18:31:19 -0600474 help
475 This enables support for TPMs which can be used to provide security
476 features for your board. The TPM can be connected via LPC or I2C
477 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
478 command to interactive the TPM. Driver model support is provided
479 for the low-level TPM interface, but only one TPM is supported at
480 a time by the TPM library.
Ilias Apalodimas1e665f92024-06-23 14:48:18 +0300481 For size reasons only SHA1 is selected which is supported on TPM1.2.
482 If you want a fully functional TPM enable all hashing algorithms.
483 If you enabled measured boot all hashing algorithms are selected.
Simon Glass350497c2015-08-22 18:31:19 -0600484
Simon Glass93a45b12018-10-01 12:22:19 -0600485config SPL_TPM
486 bool "Trusted Platform Module (TPM) Support in SPL"
487 depends on SPL_DM
Simon Glass2b95b492023-01-07 14:57:20 -0700488 imply SPL_CRC8
Simon Glass93a45b12018-10-01 12:22:19 -0600489 help
490 This enables support for TPMs which can be used to provide security
491 features for your board. The TPM can be connected via LPC or I2C
492 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
493 command to interactive the TPM. Driver model support is provided
494 for the low-level TPM interface, but only one TPM is supported at
495 a time by the TPM library.
496
497config TPL_TPM
498 bool "Trusted Platform Module (TPM) Support in TPL"
499 depends on TPL_DM
500 help
501 This enables support for TPMs which can be used to provide security
502 features for your board. The TPM can be connected via LPC or I2C
503 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
504 command to interactive the TPM. Driver model support is provided
505 for the low-level TPM interface, but only one TPM is supported at
506 a time by the TPM library.
507
Simon Glasse7ca7da2022-04-30 00:56:53 -0600508config VPL_TPM
509 bool "Trusted Platform Module (TPM) Support in VPL"
510 depends on VPL_DM
511 help
512 This enables support for TPMs which can be used to provide security
513 features for your board. The TPM can be connected via LPC or I2C
514 and a sandbox TPM is provided for testing purposes. Use the 'tpm'
515 command to interactive the TPM. Driver model support is provided
516 for the low-level TPM interface, but only one TPM is supported at
517 a time by the TPM library.
518
Raymond Maof0c91252025-01-27 06:58:48 -0800519config TPM_PCR_ALLOCATE
520 bool "Re-configurate TPM algorithms in run-time (PCR allocate)"
521 depends on TPM_V2 && (MEASURED_BOOT || EFI_TCG2_PROTOCOL)
522 help
523 This enables a detection for the dismatches of algorithms among TPM
524 device, eventlog from previous boot stage and U-Boot support.
525 A PCR allocate command will be sent to reconfigurate the TPM device
526 in run-time to make sure algorithms in TPM device, eventlog and
527 U-Boot are aligned with each other.
528 A system reboot will be proceeded after then to activate the new
529 algorithms.
530
Simon Glass528fdd12017-04-26 22:27:49 -0600531endmenu
532
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300533menu "Android Verified Boot"
534
535config LIBAVB
536 bool "Android Verified Boot 2.0 support"
537 depends on ANDROID_BOOT_IMAGE
Igor Opaniuk525d1d82018-06-03 21:56:37 +0300538 help
539 This enables support of Android Verified Boot 2.0 which can be used
540 to assure the end user of the integrity of the software running on a
541 device. Introduces such features as boot chain of trust, rollback
542 protection etc.
543
544endmenu
545
gaurav ranaef201592015-02-20 12:51:46 +0530546menu "Hashing Support"
547
Qu Wenruob98e8a22021-12-27 14:12:07 +0800548config BLAKE2
549 bool "Enable BLAKE2 support"
550 help
551 This option enables support of hashing using BLAKE2B algorithm.
552 The hash is calculated in software.
553 The BLAKE2 algorithm produces a hash value (digest) between 1 and
554 64 bytes.
555
gaurav ranaef201592015-02-20 12:51:46 +0530556config SHA1
557 bool "Enable SHA1 support"
558 help
559 This option enables support of hashing using SHA1 algorithm.
560 The hash is calculated in software.
561 The SHA1 algorithm produces a 160-bit (20-byte) hash value
562 (digest).
563
564config SHA256
565 bool "Enable SHA256 support"
566 help
567 This option enables support of hashing using SHA256 algorithm.
568 The hash is calculated in software.
569 The SHA256 algorithm produces a 256-bit (32-byte) hash value
570 (digest).
571
Reuben Dowle1908fd92020-04-16 17:36:52 +1200572config SHA512
573 bool "Enable SHA512 support"
Manorit Chawdhrya58132a2023-07-14 11:22:39 +0530574 default y if TI_SECURE_DEVICE && FIT_SIGNATURE
Reuben Dowle1908fd92020-04-16 17:36:52 +1200575 help
576 This option enables support of hashing using SHA512 algorithm.
577 The hash is calculated in software.
578 The SHA512 algorithm produces a 512-bit (64-byte) hash value
579 (digest).
580
581config SHA384
582 bool "Enable SHA384 support"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500583 select SHA512
Reuben Dowle1908fd92020-04-16 17:36:52 +1200584 help
585 This option enables support of hashing using SHA384 algorithm.
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500586 The hash is calculated in software. This is also selects SHA512,
587 because these implementations share the bulk of the code..
Reuben Dowle1908fd92020-04-16 17:36:52 +1200588 The SHA384 algorithm produces a 384-bit (48-byte) hash value
589 (digest).
590
gaurav ranaef201592015-02-20 12:51:46 +0530591config SHA_HW_ACCEL
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200592 bool "Enable hardware acceleration for SHA hash functions"
gaurav ranaef201592015-02-20 12:51:46 +0530593 help
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200594 This option enables hardware acceleration for the SHA1 and SHA256
595 hashing algorithms. This affects the 'hash' command and also the
596 hash_lookup_algo() function.
597
Simon Glassf7b37c22021-09-25 19:43:17 -0600598if SPL
599
Oleksandr Suvorov15a23ca2023-08-03 19:05:40 +0300600config SPL_CRC32
601 bool "Enable CRC32 support in SPL"
602 default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION
603 default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
604 help
605 This option enables support of hashing using CRC32 algorithm.
606 The CRC32 algorithm produces 32-bit checksum value. For FIT
607 images, this is the least secure type of checksum, suitable for
608 detected accidental image corruption. For secure applications you
609 should consider SHA256 or SHA384.
610
Simon Glassf7b37c22021-09-25 19:43:17 -0600611config SPL_SHA1
612 bool "Enable SHA1 support in SPL"
613 default y if SHA1
614 help
615 This option enables support of hashing using SHA1 algorithm.
616 The hash is calculated in software.
617 The SHA1 algorithm produces a 160-bit (20-byte) hash value
618 (digest).
619
620config SPL_SHA256
621 bool "Enable SHA256 support in SPL"
622 default y if SHA256
623 help
624 This option enables support of hashing using SHA256 algorithm.
625 The hash is calculated in software.
626 The SHA256 algorithm produces a 256-bit (32-byte) hash value
627 (digest).
628
629config SPL_SHA512
630 bool "Enable SHA512 support in SPL"
631 default y if SHA512
632 help
633 This option enables support of hashing using SHA512 algorithm.
634 The hash is calculated in software.
635 The SHA512 algorithm produces a 512-bit (64-byte) hash value
636 (digest).
637
638config SPL_SHA384
639 bool "Enable SHA384 support in SPL"
640 default y if SHA384
641 select SPL_SHA512
642 help
643 This option enables support of hashing using SHA384 algorithm.
644 The hash is calculated in software. This is also selects SHA512,
645 because these implementations share the bulk of the code..
646 The SHA384 algorithm produces a 384-bit (48-byte) hash value
647 (digest).
648
Simon Glass383dd572021-09-25 19:43:18 -0600649config SPL_SHA_HW_ACCEL
650 bool "Enable hardware acceleration for SHA hash functions"
651 default y if SHA_HW_ACCEL
652 help
653 This option enables hardware acceleration for the SHA1 and SHA256
654 hashing algorithms. This affects the 'hash' command and also the
655 hash_lookup_algo() function.
656
657config SPL_SHA_PROG_HW_ACCEL
658 bool "Enable Progressive hashing support using hardware in SPL"
659 depends on SHA_PROG_HW_ACCEL
660 default y
661 help
662 This option enables hardware-acceleration for SHA progressive
663 hashing.
664 Data can be streamed in a block at a time and the hashing is
665 performed in hardware.
666
Simon Glassf7b37c22021-09-25 19:43:17 -0600667endif
668
Simon Glass540883b2023-02-22 09:34:01 -0700669config VPL_SHA1
670 bool "Enable SHA1 support in VPL"
671 depends on VPL
672 default y if SHA1
673 help
674 This option enables support of hashing using SHA1 algorithm.
675 The hash is calculated in software.
676 The SHA1 algorithm produces a 160-bit (20-byte) hash value
677 (digest).
678
679config VPL_SHA256
680 bool "Enable SHA256 support in VPL"
681 depends on VPL
682 default y if SHA256
683 help
684 This option enables support of hashing using SHA256 algorithm.
685 The hash is calculated in software.
686 The SHA256 algorithm produces a 256-bit (32-byte) hash value
687 (digest).
688
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200689if SHA_HW_ACCEL
690
691config SHA512_HW_ACCEL
692 bool "Enable hardware acceleration for SHA512"
Alexandru Gagniuc5df5d692021-09-02 19:54:18 -0500693 depends on SHA512
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200694 help
695 This option enables hardware acceleration for the SHA384 and SHA512
696 hashing algorithms. This affects the 'hash' command and also the
697 hash_lookup_algo() function.
gaurav ranaef201592015-02-20 12:51:46 +0530698
699config SHA_PROG_HW_ACCEL
700 bool "Enable Progressive hashing support using hardware"
gaurav ranaef201592015-02-20 12:51:46 +0530701 help
Joel Stanley92efc1f2021-02-17 13:50:42 +1030702 This option enables hardware-acceleration for SHA progressive
703 hashing.
704 Data can be streamed in a block at a time and the hashing is
705 performed in hardware.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000706
Heinrich Schuchardtd42f81f2021-05-14 07:08:27 +0200707endif
708
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000709config MD5
Simon Glassd33d0db2020-05-06 08:03:56 -0600710 bool "Support MD5 algorithm"
711 help
712 This option enables MD5 support. MD5 is an algorithm designed
713 in 1991 that produces a 16-byte digest (or checksum) from its input
714 data. It has a number of vulnerabilities which preclude its use in
715 security applications, but it can be useful for providing a quick
716 checksum of a block of data.
717
718config SPL_MD5
719 bool "Support MD5 algorithm in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400720 depends on SPL
Simon Glassd33d0db2020-05-06 08:03:56 -0600721 help
722 This option enables MD5 support in SPL. MD5 is an algorithm designed
723 in 1991 that produces a 16-byte digest (or checksum) from its input
724 data. It has a number of vulnerabilities which preclude its use in
725 security applications, but it can be useful for providing a quick
726 checksum of a block of data.
Andre Przywaraf0fa1132017-03-15 01:19:05 +0000727
Simon Glass2b95b492023-01-07 14:57:20 -0700728config CRC8
729 def_bool y
730 help
731 Enables CRC8 support in U-Boot. This is normally required. CRC8 is
732 a simple and fast checksumming algorithm which does a bytewise
733 checksum with feedback to produce an 8-bit result. The code is small
734 and it does not require a lookup table (unlike CRC32).
735
736config SPL_CRC8
737 bool "Support CRC8 in SPL"
738 depends on SPL
739 help
740 Enables CRC8 support in SPL. This is not normally required. CRC8 is
741 a simple and fast checksumming algorithm which does a bytewise
742 checksum with feedback to produce an 8-bit result. The code is small
743 and it does not require a lookup table (unlike CRC32).
744
Simon Glass4649af32024-12-19 11:29:05 -0700745config TPL_CRC8
746 bool "Support CRC8 in TPL"
747 depends on TPL
748 help
749 Enables CRC8 support in TPL. This is not normally required. CRC8 is
750 a simple and fast checksumming algorithm which does a bytewise
751 checksum with feedback to produce an 8-bit result. The code is small
752 and it does not require a lookup table (unlike CRC32).
753
754config VPL_CRC8
755 bool "Support CRC8 in VPL"
756 depends on VPL
757 help
758 Enables CRC8 support in VPL. This is not normally required. CRC8 is
759 a simple and fast checksumming algorithm which does a bytewise
760 checksum with feedback to produce an 8-bit result. The code is small
761 and it does not require a lookup table (unlike CRC32).
762
Simon Glass52b51ab2025-01-26 11:43:14 -0700763config CRC16
764 bool "Support CRC16"
765 default y
766 help
767 Enables CRC16 support. This is normally required. Two algorithms are
768 provided:
769
770 - CCITT, with a polynomical x^16 + x^12 + x^5 + 1
771 - standard, with polynomial x^16 + x^15 + x^2 + 1 (0x8005)
772
Sean Anderson01349c12023-10-14 16:47:49 -0400773config SPL_CRC16
774 bool "Support CRC16 in SPL"
775 depends on SPL
776 help
777 Enables CRC16 support in SPL. This is not normally required.
778
Simon Glass577226c2021-09-25 19:43:24 -0600779config CRC32
780 def_bool y
781 help
782 Enables CRC32 support in U-Boot. This is normally required.
783
Marek Behúncdccc032017-09-03 17:00:23 +0200784config CRC32C
785 bool
786
Marek Behúnb139a7f2019-04-29 22:40:43 +0200787config XXHASH
788 bool
789
gaurav ranaef201592015-02-20 12:51:46 +0530790endmenu
791
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700792menu "Compression Support"
793
794config LZ4
795 bool "Enable LZ4 decompression support"
796 help
797 If this option is set, support for LZ4 compressed images
798 is included. The LZ4 algorithm can run in-place as long as the
799 compressed image is loaded to the end of the output buffer, and
800 trades lower compression ratios for much faster decompression.
Patrick Delaunaycd831af2021-03-10 10:16:28 +0100801
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700802 NOTE: This implements the release version of the LZ4 frame
803 format as generated by default by the 'lz4' command line tool.
804 This is not the same as the outdated, less efficient legacy
805 frame format currently (2015) implemented in the Linux kernel
806 (generated by 'lz4 -l'). The two formats are incompatible.
807
Simon Glass264aa5f2017-05-17 03:25:42 -0600808config LZMA
809 bool "Enable LZMA decompression support"
810 help
811 This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
812 a dictionary compression algorithm that provides a high compression
813 ratio and fairly fast decompression speed. See also
814 CONFIG_CMD_LZMADEC which provides a decode command.
815
Boris Brezillonaa57d0f2017-02-27 18:22:06 +0100816config LZO
Tom Rinic20bb732017-07-22 18:36:16 -0400817 bool "Enable LZO decompression support"
818 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300819 This enables support for the LZO compression algorithm.
York Suna6945fe2017-08-15 11:14:43 -0700820
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100821config GZIP
Heiko Schocherb93cc602019-04-29 08:59:38 +0200822 bool "Enable gzip decompression support"
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100823 select ZLIB
824 default y
825 help
826 This enables support for GZIP compression algorithm.
827
Joao Marcos Costaae8abb12020-07-30 15:33:49 +0200828config ZLIB_UNCOMPRESS
829 bool "Enables zlib's uncompress() functionality"
830 help
831 This enables an extra zlib functionality: the uncompress() function,
832 which decompresses data from a buffer into another, knowing their
833 sizes. Unlike gunzip(), there is no header parsing.
834
Michael Walle3a6e3512020-05-22 14:07:36 +0200835config GZIP_COMPRESSED
836 bool
837 select ZLIB
838
Atish Patra1fa79622020-03-05 16:24:21 -0800839config BZIP2
840 bool "Enable bzip2 decompression support"
841 help
842 This enables support for BZIP2 compression algorithm.
843
Marek Vasutaeaa29d2019-03-08 16:06:55 +0100844config ZLIB
845 bool
846 default y
847 help
848 This enables ZLIB compression lib.
849
Marek Behúne87e2002019-04-29 22:40:44 +0200850config ZSTD
851 bool "Enable Zstandard decompression support"
852 select XXHASH
853 help
854 This enables Zstandard decompression library.
855
Brandon Maierdbe88da2023-01-12 10:27:45 -0600856if ZSTD
857
858config ZSTD_LIB_MINIFY
859 bool "Minify Zstandard code"
860 default y
861 help
862 This disables various optional components and changes the
863 compilation flags to prioritize space-saving.
864
865 For detailed info, see zstd's lib/README.md
866
867 https://github.com/facebook/zstd/blob/dev/lib/README.md
868
869endif
870
Simon Glass1af8b152023-02-22 09:33:54 -0700871config SPL_BZIP2
872 bool "Enable bzip2 decompression support for SPL build"
873 depends on SPL
874 help
875 This enables support for bzip2 compression algorithm for SPL boot.
876
Simon Glasse107bcd2018-11-06 15:21:30 -0700877config SPL_LZ4
878 bool "Enable LZ4 decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400879 depends on SPL
Simon Glasse107bcd2018-11-06 15:21:30 -0700880 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200881 This enables support for the LZ4 decompression algorithm in SPL. LZ4
Simon Glasse107bcd2018-11-06 15:21:30 -0700882 is a lossless data compression algorithm that is focused on
883 fast compression and decompression speed. It belongs to the LZ77
884 family of byte-oriented compression schemes.
885
Simon Glass2d311212024-12-19 11:29:03 -0700886config TPL_LZ4
887 bool "Enable LZ4 decompression support in TPL"
888 depends on TPL
889 help
890 This enables support for the LZ4 decompression algorithm in TPL. LZ4
891 is a lossless data compression algorithm that is focused on
892 fast compression and decompression speed. It belongs to the LZ77
893 family of byte-oriented compression schemes.
894
895config VPL_LZ4
896 bool "Enable LZ4 decompression support in VPL"
897 depends on VPL
898 help
899 This enables support for the LZ4 decompression algorithm in VPL. LZ4
900 is a lossless data compression algorithm that is focused on
901 fast compression and decompression speed. It belongs to the LZ77
902 family of byte-oriented compression schemes.
903
developer6a4e1d32020-04-21 09:28:38 +0200904config SPL_LZMA
905 bool "Enable LZMA decompression support for SPL build"
Tom Rini0a83cc22022-06-10 23:03:09 -0400906 depends on SPL
developer6a4e1d32020-04-21 09:28:38 +0200907 help
Marcin Juszkiewicza360c2c2020-05-26 19:07:15 +0200908 This enables support for LZMA compression algorithm for SPL boot.
developer6a4e1d32020-04-21 09:28:38 +0200909
Simon Glass2d311212024-12-19 11:29:03 -0700910config TPL_LZMA
911 bool "Enable LZMA decompression support for TPL build"
912 depends on TPL
913 help
914 This enables support for LZMA compression algorithm for TPL boot.
915
Simon Glasse7ca7da2022-04-30 00:56:53 -0600916config VPL_LZMA
917 bool "Enable LZMA decompression support for VPL build"
918 default y if LZMA
919 help
920 This enables support for LZMA compression algorithm for VPL boot.
921
Jean-Jacques Hiblotdbde2882017-09-15 12:57:30 +0200922config SPL_LZO
923 bool "Enable LZO decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400924 depends on SPL
Jean-Jacques Hiblotdbde2882017-09-15 12:57:30 +0200925 help
926 This enables support for LZO compression algorithm in the SPL.
927
York Suna6945fe2017-08-15 11:14:43 -0700928config SPL_GZIP
929 bool "Enable gzip decompression support for SPL build"
930 select SPL_ZLIB
931 help
Oleksandr Suvorov30a4c312021-09-01 16:05:08 +0300932 This enables support for the GZIP compression algorithm for SPL boot.
York Suna6945fe2017-08-15 11:14:43 -0700933
Simon Glass2d311212024-12-19 11:29:03 -0700934config TPL_GZIP
935 bool "Enable gzip decompression support for SPL build"
936 select TPL_ZLIB
937 help
938 This enables support for the GZIP compression algorithm for TPL
939
York Suna6945fe2017-08-15 11:14:43 -0700940config SPL_ZLIB
941 bool
942 help
943 This enables compression lib for SPL boot.
944
Simon Glass2d311212024-12-19 11:29:03 -0700945config TPL_ZLIB
946 bool
947 help
948 This enables compression lib for TPL
949
Marek Behúne87e2002019-04-29 22:40:44 +0200950config SPL_ZSTD
951 bool "Enable Zstandard decompression support in SPL"
Tom Rini0a83cc22022-06-10 23:03:09 -0400952 depends on SPL
Marek Behúne87e2002019-04-29 22:40:44 +0200953 select XXHASH
954 help
955 This enables Zstandard decompression library in the SPL.
956
Julius Wernerf41a3ca2015-10-06 20:03:53 -0700957endmenu
958
Przemyslaw Marczak37550132015-04-20 20:07:40 +0200959config ERRNO_STR
960 bool "Enable function for getting errno-related string message"
961 help
962 The function errno_str(int errno), returns a pointer to the errno
963 corresponding text message:
964 - if errno is null or positive number - a pointer to "Success" message
965 - if errno is negative - a pointer to errno related message
966
Alexey Brodkin2d2fa492018-06-05 17:17:57 +0300967config HEXDUMP
968 bool "Enable hexdump"
969 help
970 This enables functions for printing dumps of binary data.
971
Simon Glassa37fd4d2020-09-12 11:13:35 -0600972config SPL_HEXDUMP
973 bool "Enable hexdump in SPL"
Heinrich Schuchardt11df0722021-07-24 17:35:46 +0200974 depends on SPL && HEXDUMP
Simon Glassa37fd4d2020-09-12 11:13:35 -0600975 help
976 This enables functions for printing dumps of binary data in
977 SPL.
978
Sean Anderson3b4a6f52020-10-27 19:55:36 -0400979config GETOPT
980 bool "Enable getopt"
981 help
982 This enables functions for parsing command-line options.
983
Simon Glassa66c5412016-02-22 22:55:42 -0700984config OF_LIBFDT
985 bool "Enable the FDT library"
986 default y if OF_CONTROL
987 help
988 This enables the FDT library (libfdt). It provides functions for
989 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +0200990 removing nodes and properties, scanning through the tree and finding
Simon Glassa66c5412016-02-22 22:55:42 -0700991 particular compatible nodes. The library operates on a flattened
992 version of the device tree.
993
Simon Glassc48044d2019-10-27 09:47:40 -0600994config OF_LIBFDT_ASSUME_MASK
995 hex "Mask of conditions to assume for libfdt"
996 depends on OF_LIBFDT || FIT
Tom Rinif18679c2023-08-02 11:09:43 -0400997 default 0x0
Simon Glassc48044d2019-10-27 09:47:40 -0600998 help
999 Use this to change the assumptions made by libfdt about the
1000 device tree it is working with. A value of 0 means that no assumptions
1001 are made, and libfdt is able to deal with malicious data. A value of
1002 0xff means all assumptions are made and any invalid data may cause
1003 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1004
Maxime Ripard9e901ce2016-07-05 10:26:44 +02001005config OF_LIBFDT_OVERLAY
1006 bool "Enable the FDT library overlay support"
Tom Rinic1e49ba2018-05-08 08:52:17 -04001007 depends on OF_LIBFDT
Praneeth Bajjuri7b71a012018-04-25 16:03:23 -05001008 default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
Maxime Ripard9e901ce2016-07-05 10:26:44 +02001009 help
1010 This enables the FDT library (libfdt) overlay support.
1011
Tom Rinid2cd4312022-08-02 07:33:27 -04001012config SYS_FDT_PAD
Heinrich Schuchardt6f69e212025-03-02 16:02:31 +01001013 hex "Free space added to device-tree before booting"
Tom Rinid2cd4312022-08-02 07:33:27 -04001014 depends on OF_LIBFDT
1015 default 0x13000 if FMAN_ENET || QE || U_QE
1016 default 0x3000
1017 help
Heinrich Schuchardt6f69e212025-03-02 16:02:31 +01001018 The operating system may need a free area at the end of the device-
1019 tree for fix-ups. This setting defines by how many bytes U-Boot
1020 extends the device-tree before booting.
Tom Rinid2cd4312022-08-02 07:33:27 -04001021
Simon Glass8b426922016-02-22 22:55:45 -07001022config SPL_OF_LIBFDT
1023 bool "Enable the FDT library for SPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -06001024 depends on SPL_LIBGENERIC_SUPPORT
Simon Glass8b426922016-02-22 22:55:45 -07001025 default y if SPL_OF_CONTROL
1026 help
1027 This enables the FDT library (libfdt). It provides functions for
1028 accessing binary device tree images in memory, such as adding and
Anatolij Gustschinda707d42017-08-18 17:58:51 +02001029 removing nodes and properties, scanning through the tree and finding
Simon Glass8b426922016-02-22 22:55:45 -07001030 particular compatible nodes. The library operates on a flattened
1031 version of the device tree.
1032
Simon Glassc48044d2019-10-27 09:47:40 -06001033config SPL_OF_LIBFDT_ASSUME_MASK
1034 hex "Mask of conditions to assume for libfdt"
Tom Rini0a83cc22022-06-10 23:03:09 -04001035 depends on SPL_OF_LIBFDT || (FIT && SPL)
Simon Glassc48044d2019-10-27 09:47:40 -06001036 default 0xff
1037 help
1038 Use this to change the assumptions made by libfdt in SPL about the
1039 device tree it is working with. A value of 0 means that no assumptions
1040 are made, and libfdt is able to deal with malicious data. A value of
1041 0xff means all assumptions are made and any invalid data may cause
1042 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1043
Simon Glassca8ec4b2018-10-01 12:22:21 -06001044config TPL_OF_LIBFDT
1045 bool "Enable the FDT library for TPL"
Simon Glasse7ca7da2022-04-30 00:56:53 -06001046 depends on TPL_LIBGENERIC_SUPPORT
Simon Glassca8ec4b2018-10-01 12:22:21 -06001047 default y if TPL_OF_CONTROL
1048 help
1049 This enables the FDT library (libfdt). It provides functions for
1050 accessing binary device tree images in memory, such as adding and
1051 removing nodes and properties, scanning through the tree and finding
1052 particular compatible nodes. The library operates on a flattened
1053 version of the device tree.
1054
Simon Glassc48044d2019-10-27 09:47:40 -06001055config TPL_OF_LIBFDT_ASSUME_MASK
1056 hex "Mask of conditions to assume for libfdt"
Tom Rini36a4ca02022-06-08 08:24:39 -04001057 depends on TPL_OF_LIBFDT || (FIT && TPL)
Simon Glassc48044d2019-10-27 09:47:40 -06001058 default 0xff
1059 help
1060 Use this to change the assumptions made by libfdt in TPL about the
1061 device tree it is working with. A value of 0 means that no assumptions
1062 are made, and libfdt is able to deal with malicious data. A value of
1063 0xff means all assumptions are made and any invalid data may cause
1064 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1065
Simon Glasse7ca7da2022-04-30 00:56:53 -06001066config VPL_OF_LIBFDT
1067 bool "Enable the FDT library for VPL"
Tom Rini7fb323b2022-06-08 08:24:40 -04001068 depends on VPL
Simon Glasse7ca7da2022-04-30 00:56:53 -06001069 default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
1070 help
1071 This enables the FDT library (libfdt). It provides functions for
1072 accessing binary device tree images in memory, such as adding and
1073 removing nodes and properties, scanning through the tree and finding
1074 particular compatible nodes. The library operates on a flattened
1075 version of the device tree.
1076
1077config VPL_OF_LIBFDT_ASSUME_MASK
1078 hex "Mask of conditions to assume for libfdt"
Tom Rini7fb323b2022-06-08 08:24:40 -04001079 depends on VPL_OF_LIBFDT || (FIT && VPL)
Simon Glasse7ca7da2022-04-30 00:56:53 -06001080 default 0xff
1081 help
1082 Use this to change the assumptions made by libfdt in SPL about the
1083 device tree it is working with. A value of 0 means that no assumptions
1084 are made, and libfdt is able to deal with malicious data. A value of
1085 0xff means all assumptions are made and any invalid data may cause
1086 unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
1087
Alexander Graffb228082016-08-19 01:23:23 +02001088menu "System tables"
Alexander Graf66f96e12016-08-19 01:23:29 +02001089 depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
Alexander Graffb228082016-08-19 01:23:23 +02001090
Simon Glass5d093f32020-11-04 09:57:25 -07001091config BLOBLIST_TABLES
1092 bool "Put tables in a bloblist"
Patrick Rudolphad392d52024-10-23 15:20:07 +02001093 depends on BLOBLIST
Simon Glass4d8c5202025-01-10 17:00:17 -07001094 default y if X86
Patrick Rudolphad392d52024-10-23 15:20:07 +02001095 default y if (ARM && EFI_LOADER && GENERATE_ACPI_TABLE)
1096 default n
Simon Glass5d093f32020-11-04 09:57:25 -07001097 help
Patrick Rudolphad392d52024-10-23 15:20:07 +02001098 On x86 normally tables are placed at address 0xf0000 and can be up
1099 to 64KB long. With this option, tables are instead placed in the
1100 bloblist with a pointer from 0xf0000. The size can then be larger
1101 and the tables can be placed high in memory.
1102 On other architectures the tables are always placed in high memory.
Simon Glass5d093f32020-11-04 09:57:25 -07001103
Alexander Graffb228082016-08-19 01:23:23 +02001104config GENERATE_SMBIOS_TABLE
1105 bool "Generate an SMBIOS (System Management BIOS) table"
Simon Glass5059dbe2023-09-19 21:00:13 -06001106 depends on SMBIOS
Alexander Graffb228082016-08-19 01:23:23 +02001107 default y
Alexander Graffb228082016-08-19 01:23:23 +02001108 help
1109 The System Management BIOS (SMBIOS) specification addresses how
1110 motherboard and system vendors present management information about
1111 their products in a standard format by extending the BIOS interface
1112 on Intel architecture systems.
1113
1114 Check http://www.dmtf.org/standards/smbios for details.
1115
Tom Rinid0dca222023-11-20 15:17:23 -05001116 See also SYSINFO_SMBIOS which allows SMBIOS values to be provided in
Simon Glass052a03e2020-11-05 06:32:11 -07001117 the devicetree.
1118
Raymond Maoa28ef802024-12-06 14:54:22 -08001119config GENERATE_SMBIOS_TABLE_VERBOSE
1120 bool "Generate a verbose SMBIOS (System Management BIOS) table"
1121 depends on GENERATE_SMBIOS_TABLE
1122 help
1123 Provide verbose SMBIOS information.
1124
Simon Glasse70648e2023-09-14 10:55:39 -06001125endmenu
1126
Tero Kristocfbe15c2021-06-11 11:45:02 +03001127config LIB_RATIONAL
1128 bool "enable continued fraction calculation routines"
1129
1130config SPL_LIB_RATIONAL
1131 bool "enable continued fraction calculation routines for SPL"
1132 depends on SPL
1133
AKASHI Takahirof7025262019-11-13 09:44:53 +09001134config ASN1_COMPILER
1135 bool
Philippe Reynes2aba9442022-03-28 22:56:54 +02001136 help
1137 ASN.1 (Abstract Syntax Notation One) is a standard interface
1138 description language for defining data structures that can be
1139 serialized and deserialized in a cross-platform way. It is
1140 broadly used in telecommunications and computer networking,
1141 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1142 This option enables the support of the asn1 compiler.
AKASHI Takahirof7025262019-11-13 09:44:53 +09001143
AKASHI Takahiro3a888712019-11-13 09:44:55 +09001144config ASN1_DECODER
1145 bool
1146 help
Philippe Reynes2aba9442022-03-28 22:56:54 +02001147 ASN.1 (Abstract Syntax Notation One) is a standard interface
1148 description language for defining data structures that can be
1149 serialized and deserialized in a cross-platform way. It is
1150 broadly used in telecommunications and computer networking,
1151 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1152 This option enables the support of the asn1 decoder.
AKASHI Takahiro3a888712019-11-13 09:44:55 +09001153
Philippe Reynescf538b52022-03-28 22:56:56 +02001154config SPL_ASN1_DECODER
1155 bool
1156 help
1157 ASN.1 (Abstract Syntax Notation One) is a standard interface
1158 description language for defining data structures that can be
1159 serialized and deserialized in a cross-platform way. It is
1160 broadly used in telecommunications and computer networking,
1161 and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
1162 This option enables the support of the asn1 decoder in the SPL.
1163
AKASHI Takahiro54923642019-11-13 09:44:57 +09001164config OID_REGISTRY
1165 bool
1166 help
Philippe Reynese35c3a22022-03-28 22:56:55 +02001167 In computing, object identifiers or OIDs are an identifier mechanism
1168 standardized by the International Telecommunication Union (ITU) and
1169 ISO/IEC for naming any object, concept, or "thing" with a globally
1170 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
AKASHI Takahiro54923642019-11-13 09:44:57 +09001171 Enable fast lookup object identifier registry.
1172
Philippe Reynescf538b52022-03-28 22:56:56 +02001173config SPL_OID_REGISTRY
1174 bool
1175 help
1176 In computing, object identifiers or OIDs are an identifier mechanism
1177 standardized by the International Telecommunication Union (ITU) and
1178 ISO/IEC for naming any object, concept, or "thing" with a globally
1179 unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
1180 Enable fast lookup object identifier registry in the SPL.
1181
Simon Glass5059dbe2023-09-19 21:00:13 -06001182config SMBIOS
1183 bool "SMBIOS support"
1184 depends on X86 || EFI_LOADER
1185 default y
Simon Glassaadec122023-09-20 07:29:51 -06001186 select LAST_STAGE_INIT
Simon Glass5059dbe2023-09-19 21:00:13 -06001187 help
1188 Indicates that this platform can support System Management BIOS
1189 (SMBIOS) tables. These provide various pieces of information about
1190 the board, such as the manufacturer and the model name.
1191
1192 See GENERATE_SMBIOS_TABLE which controls whether U-Boot actually
1193 creates these tables, rather than them coming from a previous firmware
1194 stage.
1195
Christian Gmeiner19859982020-11-03 15:34:51 +01001196config SMBIOS_PARSER
1197 bool "SMBIOS parser"
1198 help
1199 A simple parser for SMBIOS data.
1200
Michal Simekdd5000ef2024-04-16 08:55:16 +02001201source "lib/optee/Kconfig"
Simon Glass9539e692015-07-31 09:31:36 -06001202
Thierry Reding52c7f1f32019-03-21 19:10:04 +01001203config TEST_FDTDEC
1204 bool "enable fdtdec test"
1205 depends on OF_LIBFDT
1206
AKASHI Takahiro51ba5222019-11-13 09:44:49 +09001207config LIB_DATE
1208 bool
1209
Keerthy76f361a2020-02-12 13:55:03 +05301210config LIB_ELF
1211 bool
1212 help
Patrick Delaunayfb67df82021-01-04 15:33:28 +01001213 Support basic elf loading/validating functions.
1214 This supports for 32 bit and 64 bit versions.
Keerthy76f361a2020-02-12 13:55:03 +05301215
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001216config LMB
1217 bool "Enable the logical memory blocks library (lmb)"
Tom Rini53320122022-04-06 09:21:25 -04001218 default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001219 NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
Sughosh Ganuad3b6e92024-08-26 17:29:29 +05301220 select ARCH_MISC_INIT if PPC
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001221 help
Sughosh Ganu69db78f2024-08-26 17:29:21 +05301222 Support the library logical memory blocks. This will require
1223 a malloc() implementation for defining the data structures
1224 needed for maintaining the LMB memory map.
1225
1226config SPL_LMB
1227 bool "Enable LMB module for SPL"
1228 depends on SPL && SPL_FRAMEWORK && SPL_SYS_MALLOC
1229 help
1230 Enable support for Logical Memory Block library routines in
1231 SPL. This will require a malloc() implementation for defining
1232 the data structures needed for maintaining the LMB memory map.
Patrick Delaunayd62063d2021-03-10 10:16:25 +01001233
Sughosh Ganu1a36d442024-10-15 21:07:11 +05301234config LMB_ARCH_MEM_MAP
1235 bool "Add an architecture specific memory map"
1236 depends on LMB
Sughosh Ganu526eebd2024-10-15 21:07:13 +05301237 default y if FSL_LAYERSCAPE || X86
Sughosh Ganu1a36d442024-10-15 21:07:11 +05301238 help
1239 Some architectures have special or unique aspects which need
1240 consideration when adding memory ranges to the list of available
1241 memory map. Enable this config in such scenarios which allow
1242 architectures and boards to define their own memory map.
1243
1244config SPL_LMB_ARCH_MEM_MAP
1245 bool "Add an architecture specific memory map"
1246 depends on SPL_LMB
1247 help
1248 Some architectures have special or unique scenarios which need
1249 consideration when adding memory ranges to the list of available
1250 memory map. Enable this config in such scenarios which allow
1251 architectures and boards to define their own memory map.
1252
Simon Glass42d97e52022-12-21 16:08:28 -07001253config PHANDLE_CHECK_SEQ
1254 bool "Enable phandle check while getting sequence number"
1255 help
1256 When there are multiple device tree nodes with same name,
Anand Moon6c368f42024-06-23 23:10:21 +05301257 enable this config option to distinguish them using
Simon Glass42d97e52022-12-21 16:08:28 -07001258 phandles in fdtdec_get_alias_seq() function.
1259
Eugen Hristevdb6bbcb2022-01-04 18:20:19 +02001260endmenu
Sughosh Ganu1cadae22022-10-21 18:16:03 +05301261
Michal Simekdd5000ef2024-04-16 08:55:16 +02001262source "lib/fwu_updates/Kconfig"