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