xref: /openbmc/u-boot/lib/Kconfig (revision c83c436d)
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 envrionments 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 envrionments 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 SHA_HW_ACCEL
251	bool "Enable hashing using hardware"
252	help
253	  This option enables hardware acceleration
254	  for SHA1/SHA256 hashing.
255	  This affects the 'hash' command and also the
256	  hash_lookup_algo() function.
257
258config SHA_PROG_HW_ACCEL
259	bool "Enable Progressive hashing support using hardware"
260	depends on SHA_HW_ACCEL
261	help
262	  This option enables hardware-acceleration for
263	  SHA1/SHA256 progressive hashing.
264	  Data can be streamed in a block at a time and the hashing
265	  is performed in hardware.
266
267config MD5
268	bool
269
270config CRC32C
271	bool
272
273endmenu
274
275menu "Compression Support"
276
277config LZ4
278	bool "Enable LZ4 decompression support"
279	help
280	  If this option is set, support for LZ4 compressed images
281	  is included. The LZ4 algorithm can run in-place as long as the
282	  compressed image is loaded to the end of the output buffer, and
283	  trades lower compression ratios for much faster decompression.
284
285	  NOTE: This implements the release version of the LZ4 frame
286	  format as generated by default by the 'lz4' command line tool.
287	  This is not the same as the outdated, less efficient legacy
288	  frame format currently (2015) implemented in the Linux kernel
289	  (generated by 'lz4 -l'). The two formats are incompatible.
290
291config LZMA
292	bool "Enable LZMA decompression support"
293	help
294	  This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
295	  a dictionary compression algorithm that provides a high compression
296	  ratio and fairly fast decompression speed. See also
297	  CONFIG_CMD_LZMADEC which provides a decode command.
298
299config LZO
300	bool "Enable LZO decompression support"
301	help
302	  This enables support for LZO compression algorithm.r
303
304config SPL_LZ4
305	bool "Enable LZ4 decompression support in SPL"
306	help
307	  This enables support for tge LZ4 decompression algorithm in SPL. LZ4
308	  is a lossless data compression algorithm that is focused on
309	  fast compression and decompression speed. It belongs to the LZ77
310	  family of byte-oriented compression schemes.
311
312config SPL_LZO
313	bool "Enable LZO decompression support in SPL"
314	help
315	  This enables support for LZO compression algorithm in the SPL.
316
317config SPL_GZIP
318	bool "Enable gzip decompression support for SPL build"
319	select SPL_ZLIB
320	help
321	  This enables support for GZIP compression altorithm for SPL boot.
322
323config SPL_ZLIB
324	bool
325	help
326	  This enables compression lib for SPL boot.
327
328endmenu
329
330config ERRNO_STR
331	bool "Enable function for getting errno-related string message"
332	help
333	  The function errno_str(int errno), returns a pointer to the errno
334	  corresponding text message:
335	  - if errno is null or positive number - a pointer to "Success" message
336	  - if errno is negative - a pointer to errno related message
337
338config HEXDUMP
339	bool "Enable hexdump"
340	help
341	  This enables functions for printing dumps of binary data.
342
343config OF_LIBFDT
344	bool "Enable the FDT library"
345	default y if OF_CONTROL
346	help
347	  This enables the FDT library (libfdt). It provides functions for
348	  accessing binary device tree images in memory, such as adding and
349	  removing nodes and properties, scanning through the tree and finding
350	  particular compatible nodes. The library operates on a flattened
351	  version of the device tree.
352
353config OF_LIBFDT_OVERLAY
354	bool "Enable the FDT library overlay support"
355	depends on OF_LIBFDT
356	default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
357	help
358	  This enables the FDT library (libfdt) overlay support.
359
360config SPL_OF_LIBFDT
361	bool "Enable the FDT library for SPL"
362	default y if SPL_OF_CONTROL
363	help
364	  This enables the FDT library (libfdt). It provides functions for
365	  accessing binary device tree images in memory, such as adding and
366	  removing nodes and properties, scanning through the tree and finding
367	  particular compatible nodes. The library operates on a flattened
368	  version of the device tree.
369
370config TPL_OF_LIBFDT
371	bool "Enable the FDT library for TPL"
372	default y if TPL_OF_CONTROL
373	help
374	  This enables the FDT library (libfdt). It provides functions for
375	  accessing binary device tree images in memory, such as adding and
376	  removing nodes and properties, scanning through the tree and finding
377	  particular compatible nodes. The library operates on a flattened
378	  version of the device tree.
379
380config FDT_FIXUP_PARTITIONS
381	bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
382	depends on OF_LIBFDT
383	depends on CMD_MTDPARTS
384	help
385	  Allow overwriting defined partitions in the device tree blob
386	  using partition info defined in the 'mtdparts' environment
387	  variable.
388
389menu "System tables"
390	depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
391
392config GENERATE_SMBIOS_TABLE
393	bool "Generate an SMBIOS (System Management BIOS) table"
394	default y
395	depends on X86 || EFI_LOADER
396	help
397	  The System Management BIOS (SMBIOS) specification addresses how
398	  motherboard and system vendors present management information about
399	  their products in a standard format by extending the BIOS interface
400	  on Intel architecture systems.
401
402	  Check http://www.dmtf.org/standards/smbios for details.
403
404config SMBIOS_MANUFACTURER
405	string "SMBIOS Manufacturer"
406	depends on GENERATE_SMBIOS_TABLE
407	default SYS_VENDOR
408	help
409	  The board manufacturer to store in SMBIOS structures.
410	  Change this to override the default one (CONFIG_SYS_VENDOR).
411
412config SMBIOS_PRODUCT_NAME
413	string "SMBIOS Product Name"
414	depends on GENERATE_SMBIOS_TABLE
415	default SYS_BOARD
416	help
417	  The product name to store in SMBIOS structures.
418	  Change this to override the default one (CONFIG_SYS_BOARD).
419
420endmenu
421
422source lib/efi/Kconfig
423source lib/efi_loader/Kconfig
424source lib/optee/Kconfig
425
426endmenu
427