1menu "Boot options"
2
3menu "Boot images"
4
5config ANDROID_BOOT_IMAGE
6	bool "Enable support for Android Boot Images"
7	default y if FASTBOOT
8	help
9	  This enables support for booting images which use the Android
10	  image format header.
11
12config FIT
13	bool "Support Flattened Image Tree"
14	select MD5
15	select SHA1
16	help
17	  This option allows you to boot the new uImage structure,
18	  Flattened Image Tree.  FIT is formally a FDT, which can include
19	  images of various types (kernel, FDT blob, ramdisk, etc.)
20	  in a single blob.  To boot this new uImage structure,
21	  pass the address of the blob to the "bootm" command.
22	  FIT is very flexible, supporting compression, multiple images,
23	  multiple configurations, verification through hashing and also
24	  verified boot (secure boot using RSA).
25
26if FIT
27
28config FIT_EXTERNAL_OFFSET
29	hex "FIT external data offset"
30	default 0x0
31	help
32	  This specifies a data offset in fit image.
33	  The offset is from data payload offset to the beginning of
34	  fit image header. When specifies a offset, specific data
35	  could be put in the hole between data payload and fit image
36	  header, such as CSF data on i.MX platform.
37
38config FIT_ENABLE_SHA256_SUPPORT
39	bool "Support SHA256 checksum of FIT image contents"
40	default y
41	select SHA256
42	help
43	  Enable this to support SHA256 checksum of FIT image contents. A
44	  SHA256 checksum is a 256-bit (32-byte) hash value used to check that
45	  the image contents have not been corrupted.
46
47config FIT_ENABLE_SHA384_SUPPORT
48	bool "Support SHA384 checksum of FIT image contents"
49	default n
50	select SHA384
51	help
52	  Enable this to support SHA384 checksum of FIT image contents. A
53	  SHA384 checksum is a 384-bit (48-byte) hash value used to check that
54	  the image contents have not been corrupted. Use this for the highest
55	  security.
56
57config FIT_ENABLE_SHA512_SUPPORT
58	bool "Support SHA512 checksum of FIT image contents"
59	default n
60	select SHA512
61	help
62	  Enable this to support SHA512 checksum of FIT image contents. A
63	  SHA512 checksum is a 512-bit (64-byte) hash value used to check that
64	  the image contents have not been corrupted.
65
66config FIT_FULL_CHECK
67	bool "Do a full check of the FIT before using it"
68	default y
69	help
70	  Enable this do a full check of the FIT to make sure it is valid. This
71	  helps to protect against carefully crafted FITs which take advantage
72	  of bugs or omissions in the code. This includes a bad structure,
73	  multiple root nodes and the like.
74
75config FIT_SIGNATURE
76	bool "Enable signature verification of FIT uImages"
77	depends on DM
78	select HASH
79	select RSA
80	select RSA_VERIFY
81	select IMAGE_SIGN_INFO
82	select FIT_FULL_CHECK
83	help
84	  This option enables signature verification of FIT uImages,
85	  using a hash signed and verified using RSA. If
86	  CONFIG_SHA_PROG_HW_ACCEL is defined, i.e support for progressive
87	  hashing is available using hardware, then the RSA library will use
88	  it. See doc/uImage.FIT/signature.txt for more details.
89
90	  WARNING: When relying on signed FIT images with a required signature
91	  check the legacy image format is disabled by default, so that
92	  unsigned images cannot be loaded. If a board needs the legacy image
93	  format support in this case, enable it using
94	  CONFIG_LEGACY_IMAGE_FORMAT.
95
96config FIT_SIGNATURE_MAX_SIZE
97	hex "Max size of signed FIT structures"
98	depends on FIT_SIGNATURE
99	default 0x10000000
100	help
101	  This option sets a max size in bytes for verified FIT uImages.
102	  A sane value of 256MB protects corrupted DTB structures from overlapping
103	  device memory. Assure this size does not extend past expected storage
104	  space.
105
106config FIT_ENABLE_RSASSA_PSS_SUPPORT
107	bool "Support rsassa-pss signature scheme of FIT image contents"
108	depends on FIT_SIGNATURE
109	default n
110	help
111	  Enable this to support the pss padding algorithm as described
112	  in the rfc8017 (https://tools.ietf.org/html/rfc8017).
113
114config FIT_CIPHER
115	bool "Enable ciphering data in a FIT uImages"
116	depends on DM
117	select AES
118	help
119	  Enable the feature of data ciphering/unciphering in the tool mkimage
120	  and in the u-boot support of the FIT image.
121
122config FIT_VERBOSE
123	bool "Show verbose messages when FIT images fail"
124	help
125	  Generally a system will have valid FIT images so debug messages
126	  are a waste of code space. If you are debugging your images then
127	  you can enable this option to get more verbose information about
128	  failures.
129
130config FIT_BEST_MATCH
131	bool "Select the best match for the kernel device tree"
132	help
133	  When no configuration is explicitly selected, default to the
134	  one whose fdt's compatibility field best matches that of
135	  U-Boot itself. A match is considered "best" if it matches the
136	  most specific compatibility entry of U-Boot's fdt's root node.
137	  The order of entries in the configuration's fdt is ignored.
138
139config FIT_IMAGE_POST_PROCESS
140	bool "Enable post-processing of FIT artifacts after loading by U-Boot"
141	depends on TI_SECURE_DEVICE || SOCFPGA_SECURE_VAB_AUTH
142	help
143	  Allows doing any sort of manipulation to blobs after they got extracted
144	  from FIT images like stripping off headers or modifying the size of the
145	  blob, verification, authentication, decryption etc. in a platform or
146	  board specific way. In order to use this feature a platform or board-
147	  specific implementation of board_fit_image_post_process() must be
148	  provided. Also, anything done during this post-processing step would
149	  need to be comprehended in how the images were prepared before being
150	  injected into the FIT creation (i.e. the blobs would have been pre-
151	  processed before being added to the FIT image).
152
153config FIT_PRINT
154        bool "Support FIT printing"
155        default y
156        help
157          Support printing the content of the fitImage in a verbose manner.
158
159if SPL
160
161config SPL_FIT
162	bool "Support Flattened Image Tree within SPL"
163	depends on SPL
164	select SPL_OF_LIBFDT
165
166config SPL_FIT_PRINT
167	bool "Support FIT printing within SPL"
168	depends on SPL_FIT
169	help
170	  Support printing the content of the fitImage in a verbose manner in SPL.
171
172config SPL_FIT_FULL_CHECK
173	bool "Do a full check of the FIT before using it"
174	help
175	  Enable this do a full check of the FIT to make sure it is valid. This
176	  helps to protect against carefully crafted FITs which take advantage
177	  of bugs or omissions in the code. This includes a bad structure,
178	  multiple root nodes and the like.
179
180
181config SPL_FIT_SIGNATURE
182	bool "Enable signature verification of FIT firmware within SPL"
183	depends on SPL_DM
184	depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL
185	select FIT_SIGNATURE
186	select SPL_FIT
187	select SPL_CRYPTO_SUPPORT
188	select SPL_HASH_SUPPORT
189	select SPL_RSA
190	select SPL_RSA_VERIFY
191	select SPL_IMAGE_SIGN_INFO
192	select SPL_FIT_FULL_CHECK
193
194config SPL_LOAD_FIT
195	bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"
196	select SPL_FIT
197	help
198	  Normally with the SPL framework a legacy image is generated as part
199	  of the build. This contains U-Boot along with information as to
200	  where it should be loaded. This option instead enables generation
201	  of a FIT (Flat Image Tree) which provides more flexibility. In
202	  particular it can handle selecting from multiple device tree
203	  and passing the correct one to U-Boot.
204
205	  This path has the following limitations:
206
207	  1. "loadables" images, other than FDTs, which do not have a "load"
208	     property will not be loaded. This limitation also applies to FPGA
209	     images with the correct "compatible" string.
210	  2. For FPGA images, only the "compatible" = "u-boot,fpga-legacy"
211	     loading method is supported.
212	  3. FDTs are only loaded for images with an "os" property of "u-boot".
213	     "linux" images are also supported with Falcon boot mode.
214
215config SPL_LOAD_FIT_ADDRESS
216	hex "load address of fit image"
217	depends on SPL_LOAD_FIT
218	default 0x0
219	help
220	  Specify the load address of the fit image that will be loaded
221	  by SPL.
222
223config SPL_LOAD_FIT_APPLY_OVERLAY
224	bool "Enable SPL applying DT overlays from FIT"
225	depends on SPL_LOAD_FIT
226	select OF_LIBFDT_OVERLAY
227	help
228	  The device tree is loaded from the FIT image. Allow the SPL is to
229	  also load device-tree overlays from the FIT image an apply them
230	  over the device tree.
231
232config SPL_LOAD_FIT_APPLY_OVERLAY_BUF_SZ
233	depends on SPL_LOAD_FIT_APPLY_OVERLAY
234	default 0x10000
235	hex "size of temporary buffer used to load the overlays"
236	help
237	  The size of the area where the overlays will be loaded and
238	  uncompress. Must be at least as large as biggest overlay
239	  (uncompressed)
240
241config SPL_LOAD_FIT_FULL
242	bool "Enable SPL loading U-Boot as a FIT (full fitImage features)"
243	select SPL_FIT
244	help
245	  Normally with the SPL framework a legacy image is generated as part
246	  of the build. This contains U-Boot along with information as to
247	  where it should be loaded. This option instead enables generation
248	  of a FIT (Flat Image Tree) which provides more flexibility. In
249	  particular it can handle selecting from multiple device tree
250	  and passing the correct one to U-Boot.
251
252config SPL_FIT_IMAGE_POST_PROCESS
253	bool "Enable post-processing of FIT artifacts after loading by the SPL"
254	depends on SPL_LOAD_FIT
255	help
256	  Allows doing any sort of manipulation to blobs after they got extracted
257	  from the U-Boot FIT image like stripping off headers or modifying the
258	  size of the blob, verification, authentication, decryption etc. in a
259	  platform or board specific way. In order to use this feature a platform
260	  or board-specific implementation of board_fit_image_post_process() must
261	  be provided. Also, anything done during this post-processing step would
262	  need to be comprehended in how the images were prepared before being
263	  injected into the FIT creation (i.e. the blobs would have been pre-
264	  processed before being added to the FIT image).
265
266config SPL_FIT_SOURCE
267	string ".its source file for U-Boot FIT image"
268	depends on SPL_FIT
269	help
270	  Specifies a (platform specific) FIT source file to generate the
271	  U-Boot FIT image. This could specify further image to load and/or
272	  execute.
273
274config USE_SPL_FIT_GENERATOR
275	bool "Use a script to generate the .its script"
276	default y if SPL_FIT && (!ARCH_SUNXI && !RISCV)
277
278config SPL_FIT_GENERATOR
279	string ".its file generator script for U-Boot FIT image"
280	depends on USE_SPL_FIT_GENERATOR
281	default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP
282	default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP
283	help
284	  Specifies a (platform specific) script file to generate the FIT
285	  source file used to build the U-Boot FIT image file. This gets
286	  passed a list of supported device tree file stub names to
287	  include in the generated image.
288
289endif # SPL
290
291endif # FIT
292
293config LEGACY_IMAGE_FORMAT
294	bool "Enable support for the legacy image format"
295	default y if !FIT_SIGNATURE
296	help
297	  This option enables the legacy image format. It is enabled by
298	  default for backward compatibility, unless FIT_SIGNATURE is
299	  set where it is disabled so that unsigned images cannot be
300	  loaded. If a board needs the legacy image format support in this
301	  case, enable it here.
302
303config SUPPORT_RAW_INITRD
304	bool "Enable raw initrd images"
305	help
306	  Note, defining the SUPPORT_RAW_INITRD allows user to supply
307	  kernel with raw initrd images. The syntax is slightly different, the
308	  address of the initrd must be augmented by it's size, in the following
309	  format: "<initrd address>:<initrd size>".
310
311config OF_BOARD_SETUP
312	bool "Set up board-specific details in device tree before boot"
313	depends on OF_LIBFDT
314	help
315	  This causes U-Boot to call ft_board_setup() before booting into
316	  the Operating System. This function can set up various
317	  board-specific information in the device tree for use by the OS.
318	  The device tree is then passed to the OS.
319
320config OF_SYSTEM_SETUP
321	bool "Set up system-specific details in device tree before boot"
322	depends on OF_LIBFDT
323	help
324	  This causes U-Boot to call ft_system_setup() before booting into
325	  the Operating System. This function can set up various
326	  system-specific information in the device tree for use by the OS.
327	  The device tree is then passed to the OS.
328
329config OF_STDOUT_VIA_ALIAS
330	bool "Update the device-tree stdout alias from U-Boot"
331	depends on OF_LIBFDT
332	help
333	  This uses U-Boot's serial alias from the aliases node to update
334	  the device tree passed to the OS. The "linux,stdout-path" property
335	  in the chosen node is set to point to the correct serial node.
336	  This option currently references CONFIG_CONS_INDEX, which is
337	  incorrect when used with device tree as this option does not
338	  exist / should not be used.
339
340config SYS_EXTRA_OPTIONS
341	string "Extra Options (DEPRECATED)"
342	help
343	  The old configuration infrastructure (= mkconfig + boards.cfg)
344	  provided the extra options field. If you have something like
345	  "HAS_BAR,BAZ=64", the optional options
346	    #define CONFIG_HAS
347	    #define CONFIG_BAZ	64
348	  will be defined in include/config.h.
349	  This option was prepared for the smooth migration from the old
350	  configuration to Kconfig. Since this option will be removed sometime,
351	  new boards should not use this option.
352
353config HAVE_SYS_TEXT_BASE
354	bool
355	depends on !NIOS2 && !XTENSA
356	depends on !EFI_APP
357	default y
358
359config SYS_TEXT_BASE
360	depends on HAVE_SYS_TEXT_BASE
361	default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3
362	default 0x4a000000 if ARCH_SUNXI && !MACH_SUN9I && !MACH_SUN8I_V3S
363	default 0x2a000000 if ARCH_SUNXI && MACH_SUN9I
364	default 0x42e00000 if ARCH_SUNXI && MACH_SUN8I_V3S
365	hex "Text Base"
366	help
367	  The address in memory that U-Boot will be running from, initially.
368
369config SYS_CLK_FREQ
370	depends on ARC || ARCH_SUNXI || MPC83xx
371	int "CPU clock frequency"
372	help
373	  TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
374
375config ARCH_FIXUP_FDT_MEMORY
376	bool "Enable arch_fixup_memory_banks() call"
377	default y
378	help
379	  Enable FDT memory map syncup before OS boot. This feature can be
380	  used for booting OS with different memory setup where the part of
381	  the memory location should be used for different purpose.
382
383config CHROMEOS
384	bool "Support booting Chrome OS"
385	help
386	  Chrome OS requires U-Boot to set up a table indicating the boot mode
387	  (e.g. Developer mode) and a few other things. Enable this if you are
388	  booting on a Chromebook to avoid getting an error about an invalid
389	  firmware ID.
390
391config CHROMEOS_VBOOT
392	bool "Support Chrome OS verified boot"
393	help
394	  This is intended to enable the full Chrome OS verified boot support
395	  in U-Boot. It is not actually implemented in the U-Boot source code
396	  at present, so this option is always set to 'n'. It allows
397	  distinguishing between booting Chrome OS in a basic way (developer
398	  mode) and a full boot.
399
400endmenu		# Boot images
401
402menu "Boot timing"
403
404config BOOTSTAGE
405	bool "Boot timing and reporting"
406	help
407	  Enable recording of boot time while booting. To use it, insert
408	  calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
409	  bootstage.h. Only a single entry is recorded for each ID. You can
410	  give the entry a name with bootstage_mark_name(). You can also
411	  record elapsed time in a particular stage using bootstage_start()
412	  before starting and bootstage_accum() when finished. Bootstage will
413	  add up all the accumulated time and report it.
414
415	  Normally, IDs are defined in bootstage.h but a small number of
416	  additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
417	  as the ID.
418
419	  Calls to show_boot_progress() will also result in log entries but
420	  these will not have names.
421
422config SPL_BOOTSTAGE
423	bool "Boot timing and reported in SPL"
424	depends on BOOTSTAGE
425	help
426	  Enable recording of boot time in SPL. To make this visible to U-Boot
427	  proper, enable BOOTSTAGE_STASH as well. This will stash the timing
428	  information when SPL finishes and load it when U-Boot proper starts
429	  up.
430
431config TPL_BOOTSTAGE
432	bool "Boot timing and reported in TPL"
433	depends on BOOTSTAGE
434	help
435	  Enable recording of boot time in SPL. To make this visible to U-Boot
436	  proper, enable BOOTSTAGE_STASH as well. This will stash the timing
437	  information when TPL finishes and load it when U-Boot proper starts
438	  up.
439
440config BOOTSTAGE_REPORT
441	bool "Display a detailed boot timing report before booting the OS"
442	depends on BOOTSTAGE
443	help
444	  Enable output of a boot time report just before the OS is booted.
445	  This shows how long it took U-Boot to go through each stage of the
446	  boot process. The report looks something like this:
447
448		Timer summary in microseconds:
449		       Mark    Elapsed  Stage
450			  0          0  reset
451		  3,575,678  3,575,678  board_init_f start
452		  3,575,695         17  arch_cpu_init A9
453		  3,575,777         82  arch_cpu_init done
454		  3,659,598     83,821  board_init_r start
455		  3,910,375    250,777  main_loop
456		 29,916,167 26,005,792  bootm_start
457		 30,361,327    445,160  start_kernel
458
459config BOOTSTAGE_RECORD_COUNT
460	int "Number of boot stage records to store"
461	depends on BOOTSTAGE
462	default 30
463	help
464	  This is the size of the bootstage record list and is the maximum
465	  number of bootstage records that can be recorded.
466
467config SPL_BOOTSTAGE_RECORD_COUNT
468	int "Number of boot stage records to store for SPL"
469	depends on SPL_BOOTSTAGE
470	default 5
471	help
472	  This is the size of the bootstage record list and is the maximum
473	  number of bootstage records that can be recorded.
474
475config TPL_BOOTSTAGE_RECORD_COUNT
476	int "Number of boot stage records to store for TPL"
477	depends on TPL_BOOTSTAGE
478	default 5
479	help
480	  This is the size of the bootstage record list and is the maximum
481	  number of bootstage records that can be recorded.
482
483config BOOTSTAGE_FDT
484	bool "Store boot timing information in the OS device tree"
485	depends on BOOTSTAGE
486	help
487	  Stash the bootstage information in the FDT. A root 'bootstage'
488	  node is created with each bootstage id as a child. Each child
489	  has a 'name' property and either 'mark' containing the
490	  mark time in microseconds, or 'accum' containing the
491	  accumulated time for that bootstage id in microseconds.
492	  For example:
493
494		bootstage {
495			154 {
496				name = "board_init_f";
497				mark = <3575678>;
498			};
499			170 {
500				name = "lcd";
501				accum = <33482>;
502			};
503		};
504
505	  Code in the Linux kernel can find this in /proc/devicetree.
506
507config BOOTSTAGE_STASH
508	bool "Stash the boot timing information in memory before booting OS"
509	depends on BOOTSTAGE
510	help
511	  Some OSes do not support device tree. Bootstage can instead write
512	  the boot timing information in a binary format at a given address.
513	  This happens through a call to bootstage_stash(), typically in
514	  the CPU's cleanup_before_linux() function. You can use the
515	  'bootstage stash' and 'bootstage unstash' commands to do this on
516	  the command line.
517
518config BOOTSTAGE_STASH_ADDR
519	hex "Address to stash boot timing information"
520	default 0
521	help
522	  Provide an address which will not be overwritten by the OS when it
523	  starts, so that it can read this information when ready.
524
525config BOOTSTAGE_STASH_SIZE
526	hex "Size of boot timing stash region"
527	default 0x1000
528	help
529	  This should be large enough to hold the bootstage stash. A value of
530	  4096 (4KiB) is normally plenty.
531
532config SHOW_BOOT_PROGRESS
533	bool "Show boot progress in a board-specific manner"
534	help
535	  Defining this option allows to add some board-specific code (calling
536	  a user-provided function show_boot_progress(int) that enables you to
537	  show the system's boot progress on some display (for example, some
538	  LEDs) on your board. At the moment, the following checkpoints are
539	  implemented:
540
541	  Legacy uImage format:
542
543	  Arg	Where			When
544	    1	common/cmd_bootm.c	before attempting to boot an image
545	   -1	common/cmd_bootm.c	Image header has bad	 magic number
546	    2	common/cmd_bootm.c	Image header has correct magic number
547	   -2	common/cmd_bootm.c	Image header has bad	 checksum
548	    3	common/cmd_bootm.c	Image header has correct checksum
549	   -3	common/cmd_bootm.c	Image data   has bad	 checksum
550	    4	common/cmd_bootm.c	Image data   has correct checksum
551	   -4	common/cmd_bootm.c	Image is for unsupported architecture
552	    5	common/cmd_bootm.c	Architecture check OK
553	   -5	common/cmd_bootm.c	Wrong Image Type (not kernel, multi)
554	    6	common/cmd_bootm.c	Image Type check OK
555	   -6	common/cmd_bootm.c	gunzip uncompression error
556	   -7	common/cmd_bootm.c	Unimplemented compression type
557	    7	common/cmd_bootm.c	Uncompression OK
558	    8	common/cmd_bootm.c	No uncompress/copy overwrite error
559	   -9	common/cmd_bootm.c	Unsupported OS (not Linux, BSD, VxWorks, QNX)
560
561	    9	common/image.c		Start initial ramdisk verification
562	  -10	common/image.c		Ramdisk header has bad	   magic number
563	  -11	common/image.c		Ramdisk header has bad	   checksum
564	   10	common/image.c		Ramdisk header is OK
565	  -12	common/image.c		Ramdisk data   has bad	   checksum
566	   11	common/image.c		Ramdisk data   has correct checksum
567	   12	common/image.c		Ramdisk verification complete, start loading
568	  -13	common/image.c		Wrong Image Type (not PPC Linux ramdisk)
569	   13	common/image.c		Start multifile image verification
570	   14	common/image.c		No initial ramdisk, no multifile, continue.
571
572	   15	arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
573
574	  -30	arch/powerpc/lib/board.c	Fatal error, hang the system
575	  -31	post/post.c		POST test failed, detected by post_output_backlog()
576	  -32	post/post.c		POST test failed, detected by post_run_single()
577
578	   34	common/cmd_doc.c	before loading a Image from a DOC device
579	  -35	common/cmd_doc.c	Bad usage of "doc" command
580	   35	common/cmd_doc.c	correct usage of "doc" command
581	  -36	common/cmd_doc.c	No boot device
582	   36	common/cmd_doc.c	correct boot device
583	  -37	common/cmd_doc.c	Unknown Chip ID on boot device
584	   37	common/cmd_doc.c	correct chip ID found, device available
585	  -38	common/cmd_doc.c	Read Error on boot device
586	   38	common/cmd_doc.c	reading Image header from DOC device OK
587	  -39	common/cmd_doc.c	Image header has bad magic number
588	   39	common/cmd_doc.c	Image header has correct magic number
589	  -40	common/cmd_doc.c	Error reading Image from DOC device
590	   40	common/cmd_doc.c	Image header has correct magic number
591	   41	common/cmd_ide.c	before loading a Image from a IDE device
592	  -42	common/cmd_ide.c	Bad usage of "ide" command
593	   42	common/cmd_ide.c	correct usage of "ide" command
594	  -43	common/cmd_ide.c	No boot device
595	   43	common/cmd_ide.c	boot device found
596	  -44	common/cmd_ide.c	Device not available
597	   44	common/cmd_ide.c	Device available
598	  -45	common/cmd_ide.c	wrong partition selected
599	   45	common/cmd_ide.c	partition selected
600	  -46	common/cmd_ide.c	Unknown partition table
601	   46	common/cmd_ide.c	valid partition table found
602	  -47	common/cmd_ide.c	Invalid partition type
603	   47	common/cmd_ide.c	correct partition type
604	  -48	common/cmd_ide.c	Error reading Image Header on boot device
605	   48	common/cmd_ide.c	reading Image Header from IDE device OK
606	  -49	common/cmd_ide.c	Image header has bad magic number
607	   49	common/cmd_ide.c	Image header has correct magic number
608	  -50	common/cmd_ide.c	Image header has bad	 checksum
609	   50	common/cmd_ide.c	Image header has correct checksum
610	  -51	common/cmd_ide.c	Error reading Image from IDE device
611	   51	common/cmd_ide.c	reading Image from IDE device OK
612	   52	common/cmd_nand.c	before loading a Image from a NAND device
613	  -53	common/cmd_nand.c	Bad usage of "nand" command
614	   53	common/cmd_nand.c	correct usage of "nand" command
615	  -54	common/cmd_nand.c	No boot device
616	   54	common/cmd_nand.c	boot device found
617	  -55	common/cmd_nand.c	Unknown Chip ID on boot device
618	   55	common/cmd_nand.c	correct chip ID found, device available
619	  -56	common/cmd_nand.c	Error reading Image Header on boot device
620	   56	common/cmd_nand.c	reading Image Header from NAND device OK
621	  -57	common/cmd_nand.c	Image header has bad magic number
622	   57	common/cmd_nand.c	Image header has correct magic number
623	  -58	common/cmd_nand.c	Error reading Image from NAND device
624	   58	common/cmd_nand.c	reading Image from NAND device OK
625
626	  -60	common/env_common.c	Environment has a bad CRC, using default
627
628	   64	net/eth.c		starting with Ethernet configuration.
629	  -64	net/eth.c		no Ethernet found.
630	   65	net/eth.c		Ethernet found.
631
632	  -80	common/cmd_net.c	usage wrong
633	   80	common/cmd_net.c	before calling net_loop()
634	  -81	common/cmd_net.c	some error in net_loop() occurred
635	   81	common/cmd_net.c	net_loop() back without error
636	  -82	common/cmd_net.c	size == 0 (File with size 0 loaded)
637	   82	common/cmd_net.c	trying automatic boot
638	   83	common/cmd_net.c	running "source" command
639	  -83	common/cmd_net.c	some error in automatic boot or "source" command
640	   84	common/cmd_net.c	end without errors
641
642	  FIT uImage format:
643
644	  Arg	Where			When
645	  100	common/cmd_bootm.c	Kernel FIT Image has correct format
646	  -100	common/cmd_bootm.c	Kernel FIT Image has incorrect format
647	  101	common/cmd_bootm.c	No Kernel subimage unit name, using configuration
648	  -101	common/cmd_bootm.c	Can't get configuration for kernel subimage
649	  102	common/cmd_bootm.c	Kernel unit name specified
650	  -103	common/cmd_bootm.c	Can't get kernel subimage node offset
651	  103	common/cmd_bootm.c	Found configuration node
652	  104	common/cmd_bootm.c	Got kernel subimage node offset
653	  -104	common/cmd_bootm.c	Kernel subimage hash verification failed
654	  105	common/cmd_bootm.c	Kernel subimage hash verification OK
655	  -105	common/cmd_bootm.c	Kernel subimage is for unsupported architecture
656	  106	common/cmd_bootm.c	Architecture check OK
657	  -106	common/cmd_bootm.c	Kernel subimage has wrong type
658	  107	common/cmd_bootm.c	Kernel subimage type OK
659	  -107	common/cmd_bootm.c	Can't get kernel subimage data/size
660	  108	common/cmd_bootm.c	Got kernel subimage data/size
661	  -108	common/cmd_bootm.c	Wrong image type (not legacy, FIT)
662	  -109	common/cmd_bootm.c	Can't get kernel subimage type
663	  -110	common/cmd_bootm.c	Can't get kernel subimage comp
664	  -111	common/cmd_bootm.c	Can't get kernel subimage os
665	  -112	common/cmd_bootm.c	Can't get kernel subimage load address
666	  -113	common/cmd_bootm.c	Image uncompress/copy overwrite error
667
668	  120	common/image.c		Start initial ramdisk verification
669	  -120	common/image.c		Ramdisk FIT image has incorrect format
670	  121	common/image.c		Ramdisk FIT image has correct format
671	  122	common/image.c		No ramdisk subimage unit name, using configuration
672	  -122	common/image.c		Can't get configuration for ramdisk subimage
673	  123	common/image.c		Ramdisk unit name specified
674	  -124	common/image.c		Can't get ramdisk subimage node offset
675	  125	common/image.c		Got ramdisk subimage node offset
676	  -125	common/image.c		Ramdisk subimage hash verification failed
677	  126	common/image.c		Ramdisk subimage hash verification OK
678	  -126	common/image.c		Ramdisk subimage for unsupported architecture
679	  127	common/image.c		Architecture check OK
680	  -127	common/image.c		Can't get ramdisk subimage data/size
681	  128	common/image.c		Got ramdisk subimage data/size
682	  129	common/image.c		Can't get ramdisk load address
683	  -129	common/image.c		Got ramdisk load address
684
685	  -130	common/cmd_doc.c	Incorrect FIT image format
686	  131	common/cmd_doc.c	FIT image format OK
687
688	  -140	common/cmd_ide.c	Incorrect FIT image format
689	  141	common/cmd_ide.c	FIT image format OK
690
691	  -150	common/cmd_nand.c	Incorrect FIT image format
692	  151	common/cmd_nand.c	FIT image format OK
693
694endmenu
695
696menu "Boot media"
697
698config NOR_BOOT
699	bool "Support for booting from NOR flash"
700	depends on NOR
701	help
702	  Enabling this will make a U-Boot binary that is capable of being
703	  booted via NOR.  In this case we will enable certain pinmux early
704	  as the ROM only partially sets up pinmux.  We also default to using
705	  NOR for environment.
706
707config NAND_BOOT
708	bool "Support for booting from NAND flash"
709	default n
710	imply MTD_RAW_NAND
711	help
712	  Enabling this will make a U-Boot binary that is capable of being
713	  booted via NAND flash. This is not a must, some SoCs need this,
714	  some not.
715
716config ONENAND_BOOT
717	bool "Support for booting from ONENAND"
718	default n
719	imply MTD_RAW_NAND
720	help
721	  Enabling this will make a U-Boot binary that is capable of being
722	  booted via ONENAND. This is not a must, some SoCs need this,
723	  some not.
724
725config QSPI_BOOT
726	bool "Support for booting from QSPI flash"
727	default n
728	help
729	  Enabling this will make a U-Boot binary that is capable of being
730	  booted via QSPI flash. This is not a must, some SoCs need this,
731	  some not.
732
733config SATA_BOOT
734	bool "Support for booting from SATA"
735	default n
736	help
737	  Enabling this will make a U-Boot binary that is capable of being
738	  booted via SATA. This is not a must, some SoCs need this,
739	  some not.
740
741config SD_BOOT
742	bool "Support for booting from SD/EMMC"
743	default n
744	help
745	  Enabling this will make a U-Boot binary that is capable of being
746	  booted via SD/EMMC. This is not a must, some SoCs need this,
747	  some not.
748
749config SPI_BOOT
750	bool "Support for booting from SPI flash"
751	default n
752	help
753	  Enabling this will make a U-Boot binary that is capable of being
754	  booted via SPI flash. This is not a must, some SoCs need this,
755	  some not.
756
757endmenu
758
759menu "Autoboot options"
760
761config AUTOBOOT
762	bool "Autoboot"
763	default y
764	help
765	  This enables the autoboot.  See doc/README.autoboot for detail.
766
767config BOOTDELAY
768	int "delay in seconds before automatically booting"
769	default 2
770	depends on AUTOBOOT
771	help
772	  Delay before automatically running bootcmd;
773	  set to 0 to autoboot with no delay, but you can stop it by key input.
774	  set to -1 to disable autoboot.
775	  set to -2 to autoboot with no delay and not check for abort
776
777	  If this value is >= 0 then it is also used for the default delay
778	  before starting the default entry in bootmenu. If it is < 0 then
779	  a default value of 10s is used.
780
781	  See doc/README.autoboot for details.
782
783config AUTOBOOT_KEYED
784	bool "Stop autobooting via specific input key / string"
785	default n
786	help
787	  This option enables stopping (aborting) of the automatic
788	  boot feature only by issuing a specific input key or
789	  string. If not enabled, any input key will abort the
790	  U-Boot automatic booting process and bring the device
791	  to the U-Boot prompt for user input.
792
793config AUTOBOOT_PROMPT
794	string "Autoboot stop prompt"
795	depends on AUTOBOOT_KEYED
796	default "Autoboot in %d seconds\\n"
797	help
798	  This string is displayed before the boot delay selected by
799	  CONFIG_BOOTDELAY starts. If it is not defined	there is no
800	  output indicating that autoboot is in progress.
801
802	  Note that this define is used as the (only) argument to a
803	  printf() call, so it may contain '%' format specifications,
804	  provided that it also includes, sepearated by commas exactly
805	  like in a printf statement, the required arguments. It is
806	  the responsibility of the user to select only such arguments
807	  that are valid in the given context.
808
809config AUTOBOOT_ENCRYPTION
810	bool "Enable encryption in autoboot stopping"
811	depends on AUTOBOOT_KEYED
812	help
813	  This option allows a string to be entered into U-Boot to stop the
814	  autoboot. The string itself is hashed and compared against the hash
815	  in the environment variable 'bootstopkeysha256'. If it matches then
816	  boot stops and a command-line prompt is presented.
817
818	  This provides a way to ship a secure production device which can also
819	  be accessed at the U-Boot command line.
820
821config AUTOBOOT_DELAY_STR
822	string "Delay autobooting via specific input key / string"
823	depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
824	help
825	  This option delays the automatic boot feature by issuing
826	  a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
827	  or the environment variable "bootdelaykey" is specified
828	  and this string is received from console input before
829	  autoboot starts booting, U-Boot gives a command prompt. The
830	  U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
831	  used, otherwise it never times out.
832
833config AUTOBOOT_STOP_STR
834	string "Stop autobooting via specific input key / string"
835	depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
836	help
837	  This option enables stopping (aborting) of the automatic
838	  boot feature only by issuing a specific input key or
839	  string. If CONFIG_AUTOBOOT_STOP_STR or the environment
840	  variable "bootstopkey" is specified and this string is
841	  received from console input before autoboot starts booting,
842	  U-Boot gives a command prompt. The U-Boot prompt never
843	  times out, even if CONFIG_BOOT_RETRY_TIME is used.
844
845config AUTOBOOT_KEYED_CTRLC
846	bool "Enable Ctrl-C autoboot interruption"
847	depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
848	default n
849	help
850	  This option allows for the boot sequence to be interrupted
851	  by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
852	  Setting this variable	provides an escape sequence from the
853	  limited "password" strings.
854
855config AUTOBOOT_STOP_STR_SHA256
856	string "Stop autobooting via SHA256 encrypted password"
857	depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
858	help
859	  This option adds the feature to only stop the autobooting,
860	  and therefore boot into the U-Boot prompt, when the input
861	  string / password matches a values that is encypted via
862	  a SHA256 hash and saved in the environment variable
863	  "bootstopkeysha256". If the value in that variable
864	  includes a ":", the portion prior to the ":" will be treated
865	  as a salt value.
866
867config AUTOBOOT_USE_MENUKEY
868	bool "Allow a specify key to run a menu from the environment"
869	depends on !AUTOBOOT_KEYED
870	help
871	  If a specific key is pressed to stop autoboot, then the commands in
872	  the environment variable 'menucmd' are executed before boot starts.
873
874config AUTOBOOT_MENUKEY
875	int "ASCII value of boot key to show a menu"
876	default 0
877	depends on AUTOBOOT_USE_MENUKEY
878	help
879	  If this key is pressed to stop autoboot, then the commands in the
880	  environment variable 'menucmd' will be executed before boot starts.
881	  For example, 33 means "!" in ASCII, so pressing ! at boot would take
882	  this action.
883
884config AUTOBOOT_MENU_SHOW
885	bool "Show a menu on boot"
886	depends on CMD_BOOTMENU
887	help
888	  This enables the boot menu, controlled by environment variables
889	  defined by the board. The menu starts after running the 'preboot'
890	  environmnent variable (if enabled) and before handling the boot delay.
891	  See README.bootmenu for more details.
892
893endmenu
894
895config USE_BOOTARGS
896	bool "Enable boot arguments"
897	help
898	  Provide boot arguments to bootm command. Boot arguments are specified
899	  in CONFIG_BOOTARGS option. Enable this option to be able to specify
900	  CONFIG_BOOTARGS string. If this option is disabled, CONFIG_BOOTARGS
901	  will be undefined and won't take any space in U-Boot image.
902
903config BOOTARGS
904	string "Boot arguments"
905	depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
906	help
907	  This can be used to pass arguments to the bootm command. The value of
908	  CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
909	  this value will also override the "chosen" node in FDT blob.
910
911config BOOTARGS_SUBST
912	bool "Support substituting strings in boot arguments"
913	help
914	  This allows substituting string values in the boot arguments. These
915	  are applied after the commandline has been built.
916
917	  One use for this is to insert the root-disk UUID into the command
918	  line where bootargs contains "root=${uuid}"
919
920		setenv bootargs "console= root=${uuid}"
921		# Set the 'uuid' environment variable
922		part uuid mmc 2:2 uuid
923
924		# Command-line substitution will put the real uuid into the
925		# kernel command line
926		bootm
927
928config USE_BOOTCOMMAND
929	bool "Enable a default value for bootcmd"
930	help
931	  Provide a default value for the bootcmd entry in the environment.  If
932	  autoboot is enabled this is what will be run automatically.  Enable
933	  this option to be able to specify CONFIG_BOOTCOMMAND as a string.  If
934	  this option is disabled, CONFIG_BOOTCOMMAND will be undefined and
935	  won't take any space in U-Boot image.
936
937config BOOTCOMMAND
938	string "bootcmd value"
939	depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
940	default "run distro_bootcmd" if DISTRO_DEFAULTS
941	help
942	  This is the string of commands that will be used as bootcmd and if
943	  AUTOBOOT is set, automatically run.
944
945config USE_PREBOOT
946	bool "Enable preboot"
947	help
948	  When this option is enabled, the existence of the environment
949	  variable "preboot" will be checked immediately before starting the
950	  CONFIG_BOOTDELAY countdown and/or running the auto-boot command resp.
951	  entering interactive mode.
952
953	  This feature is especially useful when "preboot" is automatically
954	  generated or modified. For example, the boot code can modify the
955	  "preboot" when a user holds down a certain combination of keys.
956
957config PREBOOT
958	string "preboot default value"
959	depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
960	default "usb start" if USB_KEYBOARD
961	default ""
962	help
963	  This is the default of "preboot" environment variable.
964
965config DEFAULT_FDT_FILE
966	string "Default fdt file"
967	help
968	  This option is used to set the default fdt file to boot OS.
969
970endmenu		# Booting
971