Merge branch '2019-07-12-master-imports'
[oweals/u-boot.git] / lib / Kconfig
1 menu "Library routines"
2
3 config BCH
4         bool "Enable Software based BCH ECC"
5         help
6           Enables software based BCH ECC algorithm present in lib/bch.c
7           This is used by SoC platforms which do not have built-in ELM
8           hardware engine required for BCH ECC correction.
9
10 config CC_OPTIMIZE_LIBS_FOR_SPEED
11         bool "Optimize libraries for speed"
12         help
13           Enabling this option will pass "-O2" to gcc when compiling
14           under "lib" directory.
15
16           If unsure, say N.
17
18 config DYNAMIC_CRC_TABLE
19         bool "Enable Dynamic tables for CRC"
20         help
21           Enable this option to calculate entries for CRC tables at runtime.
22           This can be helpful when reducing the size of the build image
23
24 config HAVE_ARCH_IOMAP
25         bool
26         help
27           Enable this option if architecture provides io{read,write}{8,16,32}
28           I/O accessor functions.
29
30 config HAVE_PRIVATE_LIBGCC
31         bool
32
33 config LIB_UUID
34         bool
35
36 config PRINTF
37         bool
38         default y
39
40 config SPL_PRINTF
41         bool
42         select SPL_SPRINTF
43         select SPL_STRTO if !USE_TINY_PRINTF
44
45 config TPL_PRINTF
46         bool
47         select TPL_SPRINTF
48         select TPL_STRTO if !USE_TINY_PRINTF
49
50 config SPRINTF
51         bool
52         default y
53
54 config SPL_SPRINTF
55         bool
56
57 config TPL_SPRINTF
58         bool
59
60 config STRTO
61         bool
62         default y
63
64 config SPL_STRTO
65         bool
66
67 config TPL_STRTO
68         bool
69
70 config IMAGE_SPARSE
71         bool
72
73 config IMAGE_SPARSE_FILLBUF_SIZE
74         hex "Android sparse image CHUNK_TYPE_FILL buffer size"
75         default 0x80000
76         depends on IMAGE_SPARSE
77         help
78           Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
79           chunks.
80
81 config USE_PRIVATE_LIBGCC
82         bool "Use private libgcc"
83         depends on HAVE_PRIVATE_LIBGCC
84         default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
85         help
86           This option allows you to use the built-in libgcc implementation
87           of U-Boot instead of the one provided by the compiler.
88           If unsure, say N.
89
90 config SYS_HZ
91         int
92         default 1000
93         help
94           The frequency of the timer returned by get_timer().
95           get_timer() must operate in milliseconds and this option must be
96           set to 1000.
97
98 config USE_TINY_PRINTF
99         bool "Enable tiny printf() version"
100         depends on SPL || TPL
101         default y
102         help
103           This option enables a tiny, stripped down printf version.
104           This should only be used in space limited environments,
105           like SPL versions with hard memory limits. This version
106           reduces the code size by about 2.5KiB on armv7.
107
108           The supported format specifiers are %c, %s, %u/%d and %x.
109
110 config PANIC_HANG
111         bool "Do not reset the system on fatal error"
112         help
113           Define this option to stop the system in case of a fatal error,
114           so that you have to reset it manually. This is probably NOT a good
115           idea for an embedded system where you want the system to reboot
116           automatically as fast as possible, but it may be useful during
117           development since you can try to debug the conditions that lead to
118           the situation.
119
120 config REGEX
121         bool "Enable regular expression support"
122         default y if NET
123         help
124           If this variable is defined, U-Boot is linked against the
125           SLRE (Super Light Regular Expression) library, which adds
126           regex support to some commands, for example "env grep" and
127           "setexpr".
128
129 choice
130         prompt "Pseudo-random library support type"
131         depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID
132         default LIB_RAND
133         help
134           Select the library to provide pseudo-random number generator
135           functions.  LIB_HW_RAND supports certain hardware engines that
136           provide this functionality.  If in doubt, select LIB_RAND.
137
138 config LIB_RAND
139         bool "Pseudo-random library support"
140
141 config LIB_HW_RAND
142         bool "HW Engine for random libray support"
143
144 endchoice
145
146 config SPL_TINY_MEMSET
147         bool "Use a very small memset() in SPL"
148         help
149           The faster memset() is the arch-specific one (if available) enabled
150           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
151           better performance by writing a word at a time. But in very
152           size-constrained environments even this may be too big. Enable this
153           option to reduce code size slightly at the cost of some speed.
154
155 config TPL_TINY_MEMSET
156         bool "Use a very small memset() in TPL"
157         help
158           The faster memset() is the arch-specific one (if available) enabled
159           by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
160           better performance by writing a word at a time. But in very
161           size-constrained environments even this may be too big. Enable this
162           option to reduce code size slightly at the cost of some speed.
163
164 config RBTREE
165         bool
166
167 config BITREVERSE
168         bool "Bit reverse library from Linux"
169
170 config TRACE
171         bool "Support for tracing of function calls and timing"
172         imply CMD_TRACE
173         help
174           Enables function tracing within U-Boot. This allows recording of call
175           traces including timing information. The command can write data to
176           memory for exporting for analysis (e.g. using bootchart).
177           See doc/README.trace for full details.
178
179 config TRACE_BUFFER_SIZE
180         hex "Size of trace buffer in U-Boot"
181         depends on TRACE
182         default 0x01000000
183         help
184           Sets the size of the trace buffer in U-Boot. This is allocated from
185           memory during relocation. If this buffer is too small, the trace
186           history will be truncated, with later records omitted.
187
188           If early trace is enabled (i.e. before relocation), this buffer must
189           be large enough to include all the data from the early trace buffer as
190           well, since this is copied over to the main buffer during relocation.
191
192           A trace record is emitted for each function call and each record is
193           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
194           the size is too small then 'trace stats' will show a message saying
195           how many records were dropped due to buffer overflow.
196
197 config TRACE_CALL_DEPTH_LIMIT
198         int "Trace call depth limit"
199         depends on TRACE
200         default 15
201         help
202           Sets the maximum call depth up to which function calls are recorded.
203
204 config TRACE_EARLY
205         bool "Enable tracing before relocation"
206         depends on TRACE
207         help
208           Sometimes it is helpful to trace execution of U-Boot before
209           relocation. This is possible by using a arch-specific, fixed buffer
210           position in memory. Enable this option to start tracing as early as
211           possible after U-Boot starts.
212
213 config TRACE_EARLY_SIZE
214         hex "Size of early trace buffer in U-Boot"
215         depends on TRACE_EARLY
216         default 0x00100000
217         help
218           Sets the size of the early trace buffer in bytes. This is used to hold
219           tracing information before relocation.
220
221 config TRACE_EARLY_CALL_DEPTH_LIMIT
222         int "Early trace call depth limit"
223         depends on TRACE_EARLY
224         default 200
225         help
226           Sets the maximum call depth up to which function calls are recorded
227           during early tracing.
228
229 config TRACE_EARLY_ADDR
230         hex "Address of early trace buffer in U-Boot"
231         depends on TRACE_EARLY
232         default 0x00100000
233         help
234           Sets the address of the early trace buffer in U-Boot. This memory
235           must be accessible before relocation.
236
237           A trace record is emitted for each function call and each record is
238           12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
239           the size is too small then the message which says the amount of early
240           data being coped will the the same as the
241
242 source lib/dhry/Kconfig
243
244 menu "Security support"
245
246 config AES
247         bool "Support the AES algorithm"
248         help
249           This provides a means to encrypt and decrypt data using the AES
250           (Advanced Encryption Standard). This algorithm uses a symetric key
251           and is widely used as a streaming cipher. Different key lengths are
252           supported by the algorithm but only a 128-bit key is supported at
253           present.
254
255 source lib/rsa/Kconfig
256
257 config TPM
258         bool "Trusted Platform Module (TPM) Support"
259         depends on DM
260         help
261           This enables support for TPMs which can be used to provide security
262           features for your board. The TPM can be connected via LPC or I2C
263           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
264           command to interactive the TPM. Driver model support is provided
265           for the low-level TPM interface, but only one TPM is supported at
266           a time by the TPM library.
267
268 config SPL_TPM
269         bool "Trusted Platform Module (TPM) Support in SPL"
270         depends on SPL_DM
271         help
272           This enables support for TPMs which can be used to provide security
273           features for your board. The TPM can be connected via LPC or I2C
274           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
275           command to interactive the TPM. Driver model support is provided
276           for the low-level TPM interface, but only one TPM is supported at
277           a time by the TPM library.
278
279 config TPL_TPM
280         bool "Trusted Platform Module (TPM) Support in TPL"
281         depends on TPL_DM
282         help
283           This enables support for TPMs which can be used to provide security
284           features for your board. The TPM can be connected via LPC or I2C
285           and a sandbox TPM is provided for testing purposes. Use the 'tpm'
286           command to interactive the TPM. Driver model support is provided
287           for the low-level TPM interface, but only one TPM is supported at
288           a time by the TPM library.
289
290 endmenu
291
292 menu "Android Verified Boot"
293
294 config LIBAVB
295         bool "Android Verified Boot 2.0 support"
296         depends on ANDROID_BOOT_IMAGE
297         default n
298         help
299           This enables support of Android Verified Boot 2.0 which can be used
300           to assure the end user of the integrity of the software running on a
301           device. Introduces such features as boot chain of trust, rollback
302           protection etc.
303
304 endmenu
305
306 menu "Hashing Support"
307
308 config SHA1
309         bool "Enable SHA1 support"
310         help
311           This option enables support of hashing using SHA1 algorithm.
312           The hash is calculated in software.
313           The SHA1 algorithm produces a 160-bit (20-byte) hash value
314           (digest).
315
316 config SHA256
317         bool "Enable SHA256 support"
318         help
319           This option enables support of hashing using SHA256 algorithm.
320           The hash is calculated in software.
321           The SHA256 algorithm produces a 256-bit (32-byte) hash value
322           (digest).
323
324 config SHA_HW_ACCEL
325         bool "Enable hashing using hardware"
326         help
327           This option enables hardware acceleration
328           for SHA1/SHA256 hashing.
329           This affects the 'hash' command and also the
330           hash_lookup_algo() function.
331
332 config SHA_PROG_HW_ACCEL
333         bool "Enable Progressive hashing support using hardware"
334         depends on SHA_HW_ACCEL
335         help
336           This option enables hardware-acceleration for
337           SHA1/SHA256 progressive hashing.
338           Data can be streamed in a block at a time and the hashing
339           is performed in hardware.
340
341 config MD5
342         bool
343
344 config CRC32C
345         bool
346
347 config XXHASH
348         bool
349
350 endmenu
351
352 menu "Compression Support"
353
354 config LZ4
355         bool "Enable LZ4 decompression support"
356         help
357           If this option is set, support for LZ4 compressed images
358           is included. The LZ4 algorithm can run in-place as long as the
359           compressed image is loaded to the end of the output buffer, and
360           trades lower compression ratios for much faster decompression.
361           
362           NOTE: This implements the release version of the LZ4 frame
363           format as generated by default by the 'lz4' command line tool.
364           This is not the same as the outdated, less efficient legacy
365           frame format currently (2015) implemented in the Linux kernel
366           (generated by 'lz4 -l'). The two formats are incompatible.
367
368 config LZMA
369         bool "Enable LZMA decompression support"
370         help
371           This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
372           a dictionary compression algorithm that provides a high compression
373           ratio and fairly fast decompression speed. See also
374           CONFIG_CMD_LZMADEC which provides a decode command.
375
376 config LZO
377         bool "Enable LZO decompression support"
378         help
379           This enables support for LZO compression algorithm.r
380
381 config GZIP
382         bool "Enable gzip decompression support"
383         select ZLIB
384         default y
385         help
386           This enables support for GZIP compression algorithm.
387
388 config ZLIB
389         bool
390         default y
391         help
392           This enables ZLIB compression lib.
393
394 config ZSTD
395         bool "Enable Zstandard decompression support"
396         select XXHASH
397         help
398           This enables Zstandard decompression library.
399
400 config SPL_LZ4
401         bool "Enable LZ4 decompression support in SPL"
402         help
403           This enables support for tge LZ4 decompression algorithm in SPL. LZ4
404           is a lossless data compression algorithm that is focused on
405           fast compression and decompression speed. It belongs to the LZ77
406           family of byte-oriented compression schemes.
407
408 config SPL_LZO
409         bool "Enable LZO decompression support in SPL"
410         help
411           This enables support for LZO compression algorithm in the SPL.
412
413 config SPL_GZIP
414         bool "Enable gzip decompression support for SPL build"
415         select SPL_ZLIB
416         help
417           This enables support for GZIP compression altorithm for SPL boot.
418
419 config SPL_ZLIB
420         bool
421         help
422           This enables compression lib for SPL boot.
423
424 config SPL_ZSTD
425         bool "Enable Zstandard decompression support in SPL"
426         select XXHASH
427         help
428           This enables Zstandard decompression library in the SPL.
429
430 endmenu
431
432 config ERRNO_STR
433         bool "Enable function for getting errno-related string message"
434         help
435           The function errno_str(int errno), returns a pointer to the errno
436           corresponding text message:
437           - if errno is null or positive number - a pointer to "Success" message
438           - if errno is negative - a pointer to errno related message
439
440 config HEXDUMP
441         bool "Enable hexdump"
442         help
443           This enables functions for printing dumps of binary data.
444
445 config OF_LIBFDT
446         bool "Enable the FDT library"
447         default y if OF_CONTROL
448         help
449           This enables the FDT library (libfdt). It provides functions for
450           accessing binary device tree images in memory, such as adding and
451           removing nodes and properties, scanning through the tree and finding
452           particular compatible nodes. The library operates on a flattened
453           version of the device tree.
454
455 config OF_LIBFDT_OVERLAY
456         bool "Enable the FDT library overlay support"
457         depends on OF_LIBFDT
458         default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
459         help
460           This enables the FDT library (libfdt) overlay support.
461
462 config SPL_OF_LIBFDT
463         bool "Enable the FDT library for SPL"
464         default y if SPL_OF_CONTROL
465         help
466           This enables the FDT library (libfdt). It provides functions for
467           accessing binary device tree images in memory, such as adding and
468           removing nodes and properties, scanning through the tree and finding
469           particular compatible nodes. The library operates on a flattened
470           version of the device tree.
471
472 config TPL_OF_LIBFDT
473         bool "Enable the FDT library for TPL"
474         default y if TPL_OF_CONTROL
475         help
476           This enables the FDT library (libfdt). It provides functions for
477           accessing binary device tree images in memory, such as adding and
478           removing nodes and properties, scanning through the tree and finding
479           particular compatible nodes. The library operates on a flattened
480           version of the device tree.
481
482 config FDT_FIXUP_PARTITIONS
483         bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
484         depends on OF_LIBFDT
485         depends on CMD_MTDPARTS
486         help
487           Allow overwriting defined partitions in the device tree blob
488           using partition info defined in the 'mtdparts' environment
489           variable.
490
491 menu "System tables"
492         depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
493
494 config GENERATE_SMBIOS_TABLE
495         bool "Generate an SMBIOS (System Management BIOS) table"
496         default y
497         depends on X86 || EFI_LOADER
498         help
499           The System Management BIOS (SMBIOS) specification addresses how
500           motherboard and system vendors present management information about
501           their products in a standard format by extending the BIOS interface
502           on Intel architecture systems.
503
504           Check http://www.dmtf.org/standards/smbios for details.
505
506 config SMBIOS_MANUFACTURER
507         string "SMBIOS Manufacturer"
508         depends on GENERATE_SMBIOS_TABLE
509         default SYS_VENDOR
510         help
511           The board manufacturer to store in SMBIOS structures.
512           Change this to override the default one (CONFIG_SYS_VENDOR).
513
514 config SMBIOS_PRODUCT_NAME
515         string "SMBIOS Product Name"
516         depends on GENERATE_SMBIOS_TABLE
517         default SYS_BOARD
518         help
519           The product name to store in SMBIOS structures.
520           Change this to override the default one (CONFIG_SYS_BOARD).
521
522 endmenu
523
524 source lib/efi/Kconfig
525 source lib/efi_loader/Kconfig
526 source lib/optee/Kconfig
527
528 config TEST_FDTDEC
529         bool "enable fdtdec test"
530         depends on OF_LIBFDT
531
532 endmenu