xref: /openbmc/u-boot/lib/Kconfig (revision 667ff89b)
1menu "Library routines"
2
3config 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
10config 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
18config 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
24config 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
30config HAVE_PRIVATE_LIBGCC
31	bool
32
33config LIB_UUID
34	bool
35
36config PRINTF
37	bool
38	default y
39
40config SPL_PRINTF
41	bool
42	select SPL_SPRINTF
43	select SPL_STRTO if !USE_TINY_PRINTF
44
45config TPL_PRINTF
46	bool
47	select TPL_SPRINTF
48	select TPL_STRTO if !USE_TINY_PRINTF
49
50config SPRINTF
51	bool
52	default y
53
54config SPL_SPRINTF
55	bool
56
57config TPL_SPRINTF
58	bool
59
60config STRTO
61	bool
62	default y
63
64config SPL_STRTO
65	bool
66
67config TPL_STRTO
68	bool
69
70config IMAGE_SPARSE
71	bool
72
73config 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
81config 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
90config 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
98config USE_TINY_PRINTF
99	bool "Enable tiny printf() version"
100	help
101	  This option enables a tiny, stripped down printf version.
102	  This should only be used in space limited environments,
103	  like SPL versions with hard memory limits. This version
104	  reduces the code size by about 2.5KiB on armv7.
105
106	  The supported format specifiers are %c, %s, %u/%d and %x.
107
108config PANIC_HANG
109	bool "Do not reset the system on fatal error"
110	help
111	  Define this option to stop the system in case of a fatal error,
112	  so that you have to reset it manually. This is probably NOT a good
113	  idea for an embedded system where you want the system to reboot
114	  automatically as fast as possible, but it may be useful during
115	  development since you can try to debug the conditions that lead to
116	  the situation.
117
118config REGEX
119	bool "Enable regular expression support"
120	default y if NET
121	help
122	  If this variable is defined, U-Boot is linked against the
123	  SLRE (Super Light Regular Expression) library, which adds
124	  regex support to some commands, for example "env grep" and
125	  "setexpr".
126
127choice
128	prompt "Pseudo-random library support type"
129	depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID
130	default LIB_RAND
131	help
132	  Select the library to provide pseudo-random number generator
133	  functions.  LIB_HW_RAND supports certain hardware engines that
134	  provide this functionality.  If in doubt, select LIB_RAND.
135
136config LIB_RAND
137	bool "Pseudo-random library support"
138
139config LIB_HW_RAND
140	bool "HW Engine for random libray support"
141
142endchoice
143
144config SPL_TINY_MEMSET
145	bool "Use a very small memset() in SPL"
146	help
147	  The faster memset() is the arch-specific one (if available) enabled
148	  by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
149	  better performance by writing a word at a time. But in very
150	  size-constrained environments even this may be too big. Enable this
151	  option to reduce code size slightly at the cost of some speed.
152
153config TPL_TINY_MEMSET
154	bool "Use a very small memset() in TPL"
155	help
156	  The faster memset() is the arch-specific one (if available) enabled
157	  by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
158	  better performance by writing a word at a time. But in very
159	  size-constrained environments even this may be too big. Enable this
160	  option to reduce code size slightly at the cost of some speed.
161
162config RBTREE
163	bool
164
165config BITREVERSE
166	bool "Bit reverse library from Linux"
167
168source lib/dhry/Kconfig
169
170menu "Security support"
171
172config AES
173	bool "Support the AES algorithm"
174	help
175	  This provides a means to encrypt and decrypt data using the AES
176	  (Advanced Encryption Standard). This algorithm uses a symetric key
177	  and is widely used as a streaming cipher. Different key lengths are
178	  supported by the algorithm but only a 128-bit key is supported at
179	  present.
180
181source lib/rsa/Kconfig
182
183config TPM
184	bool "Trusted Platform Module (TPM) Support"
185	depends on DM
186	help
187	  This enables support for TPMs which can be used to provide security
188	  features for your board. The TPM can be connected via LPC or I2C
189	  and a sandbox TPM is provided for testing purposes. Use the 'tpm'
190	  command to interactive the TPM. Driver model support is provided
191	  for the low-level TPM interface, but only one TPM is supported at
192	  a time by the TPM library.
193
194config SPL_TPM
195	bool "Trusted Platform Module (TPM) Support in SPL"
196	depends on SPL_DM
197	help
198	  This enables support for TPMs which can be used to provide security
199	  features for your board. The TPM can be connected via LPC or I2C
200	  and a sandbox TPM is provided for testing purposes. Use the 'tpm'
201	  command to interactive the TPM. Driver model support is provided
202	  for the low-level TPM interface, but only one TPM is supported at
203	  a time by the TPM library.
204
205config TPL_TPM
206	bool "Trusted Platform Module (TPM) Support in TPL"
207	depends on TPL_DM
208	help
209	  This enables support for TPMs which can be used to provide security
210	  features for your board. The TPM can be connected via LPC or I2C
211	  and a sandbox TPM is provided for testing purposes. Use the 'tpm'
212	  command to interactive the TPM. Driver model support is provided
213	  for the low-level TPM interface, but only one TPM is supported at
214	  a time by the TPM library.
215
216endmenu
217
218menu "Android Verified Boot"
219
220config LIBAVB
221	bool "Android Verified Boot 2.0 support"
222	depends on ANDROID_BOOT_IMAGE
223	default n
224	help
225	  This enables support of Android Verified Boot 2.0 which can be used
226	  to assure the end user of the integrity of the software running on a
227	  device. Introduces such features as boot chain of trust, rollback
228	  protection etc.
229
230endmenu
231
232menu "Hashing Support"
233
234config SHA1
235	bool "Enable SHA1 support"
236	help
237	  This option enables support of hashing using SHA1 algorithm.
238	  The hash is calculated in software.
239	  The SHA1 algorithm produces a 160-bit (20-byte) hash value
240	  (digest).
241
242config SHA256
243	bool "Enable SHA256 support"
244	help
245	  This option enables support of hashing using SHA256 algorithm.
246	  The hash is calculated in software.
247	  The SHA256 algorithm produces a 256-bit (32-byte) hash value
248	  (digest).
249
250config SHA512_ALGO
251	bool "Enable SHA512 algorithm"
252	help
253	  This option enables support of internal SHA512 algorithm.
254
255config SHA512
256	bool "Enable SHA512 support"
257	depends on SHA512_ALGO
258	help
259	  This option enables support of hashing using SHA512 algorithm.
260	  The hash is calculated in software.
261	  The SHA512 algorithm produces a 512-bit (64-byte) hash value
262	  (digest).
263
264config SHA384
265	bool "Enable SHA384 support"
266	depends on SHA512_ALGO
267	help
268	  This option enables support of hashing using SHA384 algorithm.
269	  The hash is calculated in software.
270	  The SHA384 algorithm produces a 384-bit (48-byte) hash value
271	  (digest).
272
273config SHA_HW_ACCEL
274	bool "Enable hashing using hardware"
275	help
276	  This option enables hardware acceleration for SHA hashing.
277	  This affects the 'hash' command and also the hash_lookup_algo()
278	  function.
279
280config SHA_PROG_HW_ACCEL
281	bool "Enable Progressive hashing support using hardware"
282	depends on SHA_HW_ACCEL
283	help
284	  This option enables hardware-acceleration for SHA progressive
285	  hashing.
286	  Data can be streamed in a block at a time and the hashing is
287	  performed in hardware.
288
289config MD5
290	bool
291
292config CRC32C
293	bool
294
295endmenu
296
297menu "Compression Support"
298
299config LZ4
300	bool "Enable LZ4 decompression support"
301	help
302	  If this option is set, support for LZ4 compressed images
303	  is included. The LZ4 algorithm can run in-place as long as the
304	  compressed image is loaded to the end of the output buffer, and
305	  trades lower compression ratios for much faster decompression.
306
307	  NOTE: This implements the release version of the LZ4 frame
308	  format as generated by default by the 'lz4' command line tool.
309	  This is not the same as the outdated, less efficient legacy
310	  frame format currently (2015) implemented in the Linux kernel
311	  (generated by 'lz4 -l'). The two formats are incompatible.
312
313config LZMA
314	bool "Enable LZMA decompression support"
315	help
316	  This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
317	  a dictionary compression algorithm that provides a high compression
318	  ratio and fairly fast decompression speed. See also
319	  CONFIG_CMD_LZMADEC which provides a decode command.
320
321config LZO
322	bool "Enable LZO decompression support"
323	help
324	  This enables support for LZO compression algorithm.r
325
326config SPL_LZ4
327	bool "Enable LZ4 decompression support in SPL"
328	help
329	  This enables support for tge LZ4 decompression algorithm in SPL. LZ4
330	  is a lossless data compression algorithm that is focused on
331	  fast compression and decompression speed. It belongs to the LZ77
332	  family of byte-oriented compression schemes.
333
334config SPL_LZO
335	bool "Enable LZO decompression support in SPL"
336	help
337	  This enables support for LZO compression algorithm in the SPL.
338
339config SPL_GZIP
340	bool "Enable gzip decompression support for SPL build"
341	select SPL_ZLIB
342	help
343	  This enables support for GZIP compression altorithm for SPL boot.
344
345config SPL_ZLIB
346	bool
347	help
348	  This enables compression lib for SPL boot.
349
350endmenu
351
352config ERRNO_STR
353	bool "Enable function for getting errno-related string message"
354	help
355	  The function errno_str(int errno), returns a pointer to the errno
356	  corresponding text message:
357	  - if errno is null or positive number - a pointer to "Success" message
358	  - if errno is negative - a pointer to errno related message
359
360config HEXDUMP
361	bool "Enable hexdump"
362	help
363	  This enables functions for printing dumps of binary data.
364
365config OF_LIBFDT
366	bool "Enable the FDT library"
367	default y if OF_CONTROL
368	help
369	  This enables the FDT library (libfdt). It provides functions for
370	  accessing binary device tree images in memory, such as adding and
371	  removing nodes and properties, scanning through the tree and finding
372	  particular compatible nodes. The library operates on a flattened
373	  version of the device tree.
374
375config OF_LIBFDT_OVERLAY
376	bool "Enable the FDT library overlay support"
377	depends on OF_LIBFDT
378	default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
379	help
380	  This enables the FDT library (libfdt) overlay support.
381
382config SPL_OF_LIBFDT
383	bool "Enable the FDT library for SPL"
384	default y if SPL_OF_CONTROL
385	help
386	  This enables the FDT library (libfdt). It provides functions for
387	  accessing binary device tree images in memory, such as adding and
388	  removing nodes and properties, scanning through the tree and finding
389	  particular compatible nodes. The library operates on a flattened
390	  version of the device tree.
391
392config TPL_OF_LIBFDT
393	bool "Enable the FDT library for TPL"
394	default y if TPL_OF_CONTROL
395	help
396	  This enables the FDT library (libfdt). It provides functions for
397	  accessing binary device tree images in memory, such as adding and
398	  removing nodes and properties, scanning through the tree and finding
399	  particular compatible nodes. The library operates on a flattened
400	  version of the device tree.
401
402config FDT_FIXUP_PARTITIONS
403	bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
404	depends on OF_LIBFDT
405	depends on CMD_MTDPARTS
406	help
407	  Allow overwriting defined partitions in the device tree blob
408	  using partition info defined in the 'mtdparts' environment
409	  variable.
410
411menu "System tables"
412	depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
413
414config GENERATE_SMBIOS_TABLE
415	bool "Generate an SMBIOS (System Management BIOS) table"
416	default y
417	depends on X86 || EFI_LOADER
418	help
419	  The System Management BIOS (SMBIOS) specification addresses how
420	  motherboard and system vendors present management information about
421	  their products in a standard format by extending the BIOS interface
422	  on Intel architecture systems.
423
424	  Check http://www.dmtf.org/standards/smbios for details.
425
426config SMBIOS_MANUFACTURER
427	string "SMBIOS Manufacturer"
428	depends on GENERATE_SMBIOS_TABLE
429	default SYS_VENDOR
430	help
431	  The board manufacturer to store in SMBIOS structures.
432	  Change this to override the default one (CONFIG_SYS_VENDOR).
433
434config SMBIOS_PRODUCT_NAME
435	string "SMBIOS Product Name"
436	depends on GENERATE_SMBIOS_TABLE
437	default SYS_BOARD
438	help
439	  The product name to store in SMBIOS structures.
440	  Change this to override the default one (CONFIG_SYS_BOARD).
441
442endmenu
443
444source lib/efi/Kconfig
445source lib/efi_loader/Kconfig
446source lib/optee/Kconfig
447
448endmenu
449