xref: /openbmc/u-boot/Kconfig (revision a35332fa)
1#
2# For a description of the syntax of this configuration file,
3# see the file Documentation/kbuild/kconfig-language.txt in the
4# Linux kernel source tree.
5#
6mainmenu "U-Boot $UBOOTVERSION Configuration"
7
8config UBOOTVERSION
9	string
10	option env="UBOOTVERSION"
11
12# Allow defaults in arch-specific code to override any given here
13source "arch/Kconfig"
14
15menu "General setup"
16
17config BROKEN
18	bool
19	help
20	  This option cannot be enabled. It is used as dependency
21	  for broken and incomplete features.
22
23config LOCALVERSION
24	string "Local version - append to U-Boot release"
25	help
26	  Append an extra string to the end of your U-Boot version.
27	  This will show up in your boot log, for example.
28	  The string you set here will be appended after the contents of
29	  any files with a filename matching localversion* in your
30	  object and source tree, in that order.  Your total string can
31	  be a maximum of 64 characters.
32
33config LOCALVERSION_AUTO
34	bool "Automatically append version information to the version string"
35	default y
36	help
37	  This will try to automatically determine if the current tree is a
38	  release tree by looking for Git tags that belong to the current
39	  top of tree revision.
40
41	  A string of the format -gxxxxxxxx will be added to the localversion
42	  if a Git-based tree is found.  The string generated by this will be
43	  appended after any matching localversion* files, and after the value
44	  set in CONFIG_LOCALVERSION.
45
46	  (The actual string used here is the first eight characters produced
47	  by running the command:
48
49	    $ git rev-parse --verify HEAD
50
51	  which is done within the script "scripts/setlocalversion".)
52
53config CC_OPTIMIZE_FOR_SIZE
54	bool "Optimize for size"
55	default y
56	help
57	  Enabling this option will pass "-Os" instead of "-O2" to gcc
58	  resulting in a smaller U-Boot image.
59
60	  This option is enabled by default for U-Boot.
61
62config DISTRO_DEFAULTS
63	bool "Select defaults suitable for booting general purpose Linux distributions"
64	default y if ARCH_SUNXI || TEGRA
65	default y if ARCH_LS2080A
66	default y if ARCH_MESON
67	default y if ARCH_ROCKCHIP
68	default n
69	imply USE_BOOTCOMMAND
70	select CMD_BOOTZ if ARM && !ARM64
71	select CMD_BOOTI if ARM64
72	select CMD_DHCP
73	select CMD_PXE
74	select CMD_EXT2
75	select CMD_EXT4
76	select CMD_FAT
77	select CMD_FS_GENERIC
78	select CMD_MII
79	select CMD_PING
80	select CMD_PART
81	select HUSH_PARSER
82	help
83	  Select this to enable various options and commands which are suitable
84	  for building u-boot for booting general purpose Linux distributions.
85
86config SYS_BOOT_GET_CMDLINE
87	bool "Enable kernel command line setup"
88	help
89	  Enables allocating and saving kernel cmdline in space between
90	  "bootm_low" and "bootm_low" + BOOTMAPSZ.
91
92config SYS_BOOT_GET_KBD
93	bool "Enable kernel board information setup"
94	help
95	  Enables allocating and saving a kernel copy of the bd_info in
96	  space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
97
98config SYS_MALLOC_F
99	bool "Enable malloc() pool before relocation"
100	default y if DM
101	help
102	  Before relocation, memory is very limited on many platforms. Still,
103	  we can provide a small malloc() pool if needed. Driver model in
104	  particular needs this to operate, so that it can allocate the
105	  initial serial device and any others that are needed.
106
107config SYS_MALLOC_F_LEN
108	hex "Size of malloc() pool before relocation"
109	depends on SYS_MALLOC_F
110	default 0x400
111	help
112	  Before relocation, memory is very limited on many platforms. Still,
113	  we can provide a small malloc() pool if needed. Driver model in
114	  particular needs this to operate, so that it can allocate the
115	  initial serial device and any others that are needed.
116
117config SPL_SYS_MALLOC_F_LEN
118        hex "Size of malloc() pool in SPL before relocation"
119        depends on SYS_MALLOC_F
120        default SYS_MALLOC_F_LEN
121        help
122          Before relocation, memory is very limited on many platforms. Still,
123          we can provide a small malloc() pool if needed. Driver model in
124          particular needs this to operate, so that it can allocate the
125          initial serial device and any others that are needed.
126
127config TPL_SYS_MALLOC_F_LEN
128        hex "Size of malloc() pool in TPL before relocation"
129        depends on SYS_MALLOC_F
130        default SYS_MALLOC_F_LEN
131        help
132          Before relocation, memory is very limited on many platforms. Still,
133          we can provide a small malloc() pool if needed. Driver model in
134          particular needs this to operate, so that it can allocate the
135          initial serial device and any others that are needed.
136
137menuconfig EXPERT
138	bool "Configure standard U-Boot features (expert users)"
139	default y
140	help
141	  This option allows certain base U-Boot options and settings
142	  to be disabled or tweaked. This is for specialized
143	  environments which can tolerate a "non-standard" U-Boot.
144	  Use this only if you really know what you are doing.
145
146if EXPERT
147	config SYS_MALLOC_CLEAR_ON_INIT
148	bool "Init with zeros the memory reserved for malloc (slow)"
149	default y
150	help
151	  This setting is enabled by default. The reserved malloc
152	  memory is initialized with zeros, so first malloc calls
153	  will return the pointer to the zeroed memory. But this
154	  slows the boot time.
155
156	  It is recommended to disable it, when CONFIG_SYS_MALLOC_LEN
157	  value, has more than few MiB, e.g. when uses bzip2 or bmp logo.
158	  Then the boot time can be significantly reduced.
159	  Warning:
160	  When disabling this, please check if malloc calls, maybe
161	  should be replaced by calloc - if one expects zeroed memory.
162
163config TOOLS_DEBUG
164	bool "Enable debug information for tools"
165	help
166	  Enable generation of debug information for tools such as mkimage.
167	  This can be used for debugging purposes. With debug information
168	  it is possible to set breakpoints on particular lines, single-step
169	  debug through the source code, etc.
170
171endif # EXPERT
172
173config PHYS_64BIT
174	bool "64bit physical address support"
175	help
176	  Say Y here to support 64bit physical memory address.
177	  This can be used not only for 64bit SoCs, but also for
178	  large physical address extention on 32bit SoCs.
179
180config BUILD_ROM
181	bool "Build U-Boot as BIOS replacement"
182	depends on X86
183	help
184	  This option allows to build a ROM version of U-Boot.
185	  The build process generally requires several binary blobs
186	  which are not shipped in the U-Boot source tree.
187	  Please, see doc/README.x86 for details.
188
189endmenu		# General setup
190
191menu "Boot images"
192
193config ANDROID_BOOT_IMAGE
194	bool "Enable support for Android Boot Images"
195	default y if FASTBOOT
196	help
197	  This enables support for booting images which use the Android
198	  image format header.
199
200config FIT
201	bool "Support Flattened Image Tree"
202	select MD5
203	select SHA1
204	help
205	  This option allows you to boot the new uImage structure,
206	  Flattened Image Tree.  FIT is formally a FDT, which can include
207	  images of various types (kernel, FDT blob, ramdisk, etc.)
208	  in a single blob.  To boot this new uImage structure,
209	  pass the address of the blob to the "bootm" command.
210	  FIT is very flexible, supporting compression, multiple images,
211	  multiple configurations, verification through hashing and also
212	  verified boot (secure boot using RSA).
213
214if FIT
215
216config FIT_ENABLE_SHA256_SUPPORT
217	bool "Support SHA256 checksum of FIT image contents"
218	select SHA256
219	default y
220	help
221	  Enable this to support SHA256 checksum of FIT image contents. A
222	  SHA256 checksum is a 256-bit (32-byte) hash value used to check that
223	  the image contents have not been corrupted. SHA256 is recommended
224	  for use in secure applications since (as at 2016) there is no known
225	  feasible attack that could produce a 'collision' with differing
226	  input data. Use this for the highest security. Note that only the
227	  SHA256 variant is supported: SHA512 and others are not currently
228	  supported in U-Boot.
229
230config FIT_SIGNATURE
231	bool "Enable signature verification of FIT uImages"
232	depends on DM
233	select RSA
234	help
235	  This option enables signature verification of FIT uImages,
236	  using a hash signed and verified using RSA. If
237	  CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
238	  hashing is available using hardware, then the RSA library will use
239	  it. See doc/uImage.FIT/signature.txt for more details.
240
241	  WARNING: When relying on signed FIT images with a required signature
242	  check the legacy image format is disabled by default, so that
243	  unsigned images cannot be loaded. If a board needs the legacy image
244	  format support in this case, enable it using
245	  CONFIG_IMAGE_FORMAT_LEGACY.
246
247config FIT_VERBOSE
248	bool "Show verbose messages when FIT images fail"
249	help
250	  Generally a system will have valid FIT images so debug messages
251	  are a waste of code space. If you are debugging your images then
252	  you can enable this option to get more verbose information about
253	  failures.
254
255config FIT_BEST_MATCH
256	bool "Select the best match for the kernel device tree"
257	help
258	  When no configuration is explicitly selected, default to the
259	  one whose fdt's compatibility field best matches that of
260	  U-Boot itself. A match is considered "best" if it matches the
261	  most specific compatibility entry of U-Boot's fdt's root node.
262	  The order of entries in the configuration's fdt is ignored.
263
264config FIT_IMAGE_POST_PROCESS
265	bool "Enable post-processing of FIT artifacts after loading by U-Boot"
266	depends on TI_SECURE_DEVICE
267	help
268	  Allows doing any sort of manipulation to blobs after they got extracted
269	  from FIT images like stripping off headers or modifying the size of the
270	  blob, verification, authentication, decryption etc. in a platform or
271	  board specific way. In order to use this feature a platform or board-
272	  specific implementation of board_fit_image_post_process() must be
273	  provided. Also, anything done during this post-processing step would
274	  need to be comprehended in how the images were prepared before being
275	  injected into the FIT creation (i.e. the blobs would have been pre-
276	  processed before being added to the FIT image).
277
278if SPL
279
280config SPL_FIT
281	bool "Support Flattened Image Tree within SPL"
282	depends on SPL
283	select SPL_OF_LIBFDT
284
285config SPL_FIT_SIGNATURE
286	bool "Enable signature verification of FIT firmware within SPL"
287	depends on SPL_DM
288	select SPL_FIT
289	select SPL_RSA
290
291config SPL_LOAD_FIT
292	bool "Enable SPL loading U-Boot as a FIT"
293	select SPL_FIT
294	help
295	  Normally with the SPL framework a legacy image is generated as part
296	  of the build. This contains U-Boot along with information as to
297	  where it should be loaded. This option instead enables generation
298	  of a FIT (Flat Image Tree) which provides more flexibility. In
299	  particular it can handle selecting from multiple device tree
300	  and passing the correct one to U-Boot.
301
302config SPL_FIT_IMAGE_POST_PROCESS
303	bool "Enable post-processing of FIT artifacts after loading by the SPL"
304	depends on SPL_LOAD_FIT
305	help
306	  Allows doing any sort of manipulation to blobs after they got extracted
307	  from the U-Boot FIT image like stripping off headers or modifying the
308	  size of the blob, verification, authentication, decryption etc. in a
309	  platform or board specific way. In order to use this feature a platform
310	  or board-specific implementation of board_fit_image_post_process() must
311	  be provided. Also, anything done during this post-processing step would
312	  need to be comprehended in how the images were prepared before being
313	  injected into the FIT creation (i.e. the blobs would have been pre-
314	  processed before being added to the FIT image).
315
316config SPL_FIT_SOURCE
317	string ".its source file for U-Boot FIT image"
318	depends on SPL_FIT
319	help
320	  Specifies a (platform specific) FIT source file to generate the
321	  U-Boot FIT image. This could specify further image to load and/or
322	  execute.
323
324config SPL_FIT_GENERATOR
325	string ".its file generator script for U-Boot FIT image"
326	depends on SPL_FIT
327	default "board/sunxi/mksunxi_fit_atf.sh" if SPL_LOAD_FIT && ARCH_SUNXI
328	help
329	  Specifies a (platform specific) script file to generate the FIT
330	  source file used to build the U-Boot FIT image file. This gets
331	  passed a list of supported device tree file stub names to
332	  include in the generated image.
333
334endif # SPL
335
336endif # FIT
337
338config OF_BOARD_SETUP
339	bool "Set up board-specific details in device tree before boot"
340	depends on OF_LIBFDT
341	help
342	  This causes U-Boot to call ft_board_setup() before booting into
343	  the Operating System. This function can set up various
344	  board-specific information in the device tree for use by the OS.
345	  The device tree is then passed to the OS.
346
347config OF_SYSTEM_SETUP
348	bool "Set up system-specific details in device tree before boot"
349	depends on OF_LIBFDT
350	help
351	  This causes U-Boot to call ft_system_setup() before booting into
352	  the Operating System. This function can set up various
353	  system-specific information in the device tree for use by the OS.
354	  The device tree is then passed to the OS.
355
356config OF_STDOUT_VIA_ALIAS
357	bool "Update the device-tree stdout alias from U-Boot"
358	depends on OF_LIBFDT
359	help
360	  This uses U-Boot's serial alias from the aliases node to update
361	  the device tree passed to the OS. The "linux,stdout-path" property
362	  in the chosen node is set to point to the correct serial node.
363	  This option currently references CONFIG_CONS_INDEX, which is
364	  incorrect when used with device tree as this option does not
365	  exist / should not be used.
366
367config SYS_EXTRA_OPTIONS
368	string "Extra Options (DEPRECATED)"
369	help
370	  The old configuration infrastructure (= mkconfig + boards.cfg)
371	  provided the extra options field. If you have something like
372	  "HAS_BAR,BAZ=64", the optional options
373	    #define CONFIG_HAS
374	    #define CONFIG_BAZ	64
375	  will be defined in include/config.h.
376	  This option was prepared for the smooth migration from the old
377	  configuration to Kconfig. Since this option will be removed sometime,
378	  new boards should not use this option.
379
380config SYS_TEXT_BASE
381	depends on ARC || X86 || ARCH_UNIPHIER || ARCH_ZYNQMP || \
382		(M68K && !TARGET_ASTRO_MCF5373L) || MICROBLAZE || MIPS || \
383		ARCH_ZYNQ || ARCH_KEYSTONE || ARCH_OMAP2PLUS
384	depends on !EFI_APP
385	hex "Text Base"
386	help
387	  TODO: Move CONFIG_SYS_TEXT_BASE for all the architecture
388
389	default 0x80800000 if ARCH_OMAP2PLUS
390
391
392config SYS_CLK_FREQ
393	depends on ARC || ARCH_SUNXI
394	int "CPU clock frequency"
395	help
396	  TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
397
398config ARCH_FIXUP_FDT_MEMORY
399	bool "Enable arch_fixup_memory_banks() call"
400	default y
401	help
402	  Enable FDT memory map syncup before OS boot. This feature can be
403	  used for booting OS with different memory setup where the part of
404	  the memory location should be used for different purpose.
405
406endmenu		# Boot images
407
408source "api/Kconfig"
409
410source "common/Kconfig"
411
412source "cmd/Kconfig"
413
414source "disk/Kconfig"
415
416source "dts/Kconfig"
417
418source "env/Kconfig"
419
420source "net/Kconfig"
421
422source "drivers/Kconfig"
423
424source "fs/Kconfig"
425
426source "lib/Kconfig"
427
428source "test/Kconfig"
429