1menu "Command line interface"
2
3config CMDLINE
4	bool "Support U-Boot commands"
5	default y
6	help
7	  Enable U-Boot's command-line functions. This provides a means
8	  to enter commands into U-Boot for a wide variety of purposes. It
9	  also allows scripts (containing commands) to be executed.
10	  Various commands and command categorys can be indivdually enabled.
11	  Depending on the number of commands enabled, this can add
12	  substantially to the size of U-Boot.
13
14config HUSH_PARSER
15	bool "Use hush shell"
16	depends on CMDLINE
17	help
18	  This option enables the "hush" shell (from Busybox) as command line
19	  interpreter, thus enabling powerful command line syntax like
20	  if...then...else...fi conditionals or `&&' and '||'
21	  constructs ("shell scripts").
22
23	  If disabled, you get the old, much simpler behaviour with a somewhat
24	  smaller memory footprint.
25
26config CMDLINE_EDITING
27	bool "Enable command line editing"
28	depends on CMDLINE
29	default y
30	help
31	  Enable editing and History functions for interactive command line
32	  input operations
33
34config CMDLINE_PS_SUPPORT
35	bool "Enable support for changing the command prompt string at run-time"
36	depends on HUSH_PARSER
37	help
38	  Only static string in the prompt is supported so far.  The string is
39	  obtained from environment variables PS1 and PS2.
40
41config AUTO_COMPLETE
42	bool "Enable auto complete using TAB"
43	depends on CMDLINE
44	default y
45	help
46	  Enable auto completion of commands using TAB.
47
48config SYS_LONGHELP
49	bool "Enable long help messages"
50	depends on CMDLINE
51	default y if CMDLINE
52	help
53	  Defined when you want long help messages included
54	  Do not set this option when short of memory.
55
56config SYS_PROMPT
57	string "Shell prompt"
58	default "Zynq> " if ARCH_ZYNQ
59	default "ZynqMP> " if ARCH_ZYNQMP
60	default "=> "
61	help
62	  This string is displayed in the command line to the left of the
63	  cursor.
64
65config SYS_PROMPT_HUSH_PS2
66	string "Hush shell secondary prompt"
67	depends on HUSH_PARSER
68	default "> "
69	help
70	  This defines the secondary prompt string, which is
71	  printed when the command interpreter needs more input
72	  to complete a command. Usually "> ".
73
74config SYS_MAXARGS
75	int "Maximum number arguments accepted by commands"
76	default 16
77
78config SYS_CBSIZE
79	int "Console input buffer size"
80	default 2048 if ARCH_TEGRA || ARCH_VERSAL || ARCH_ZYNQ || ARCH_ZYNQMP || \
81		RCAR_GEN3 || TARGET_SOCFPGA_SOC64
82	default 512 if ARCH_MX5 || ARCH_MX6 || ARCH_MX7 || FSL_LSCH2 || \
83		FSL_LSCH3 || X86
84	default 256 if M68K || PPC
85	default 1024
86
87config SYS_PBSIZE
88	int "Buffer size for console output"
89	default 1024 if ARCH_SUNXI
90	default 1044
91
92config SYS_XTRACE
93	bool "Command execution tracer"
94	depends on CMDLINE
95	default y if CMDLINE
96	help
97	  This option enables the possiblity to print all commands before
98	  executing them and after all variables are evaluated (similar
99	  to Bash's xtrace/'set -x' feature).
100	  To enable the tracer a variable "xtrace" needs to be defined in
101	  the environment.
102
103config BUILD_BIN2C
104	bool
105
106comment "Commands"
107
108menu "Info commands"
109
110config CMD_ACPI
111	bool "acpi"
112	depends on ACPI
113	default y
114	help
115	  List and dump ACPI tables. ACPI (Advanced Configuration and Power
116	  Interface) is used mostly on x86 for providing information to the
117	  Operating System about devices in the system. The tables are set up
118	  by the firmware, typically U-Boot but possibly an earlier firmware
119	  module, if U-Boot is chain-loaded from something else. ACPI tables
120	  can also include code, to perform hardware-specific tasks required
121	  by the Operating Systems. This allows some amount of separation
122	  between the firmware and OS, and is particularly useful when you
123	  want to make hardware changes without the OS needing to be adjusted.
124
125config CMD_ADDRMAP
126	bool "addrmap"
127	depends on ADDR_MAP
128	default y
129	help
130	  List non-identity virtual-physical memory mappings for 32-bit CPUs.
131
132config CMD_BDI
133	bool "bdinfo"
134	default y
135	help
136	  Print board info
137
138config CMD_CONFIG
139	bool "config"
140	default SANDBOX
141	select BUILD_BIN2C
142	help
143	  Print ".config" contents.
144
145	  If this option is enabled, the ".config" file contents are embedded
146	  in the U-Boot image and can be printed on the console by the "config"
147	  command.  This provides information of which options are enabled on
148	  the running U-Boot.
149
150config CMD_CONSOLE
151	bool "coninfo"
152	default y
153	help
154	  Print console devices and information.
155
156config CMD_CPU
157	bool "cpu"
158	depends on CPU
159	help
160	  Print information about available CPUs. This normally shows the
161	  number of CPUs, type (e.g. manufacturer, architecture, product or
162	  internal name) and clock frequency. Other information may be
163	  available depending on the CPU driver.
164
165config CMD_FWU_METADATA
166	bool "fwu metadata read"
167	depends on FWU_MULTI_BANK_UPDATE
168	help
169	  Command to read the metadata and dump it's contents
170
171config CMD_LICENSE
172	bool "license"
173	select BUILD_BIN2C
174	help
175	  Print GPL license text
176
177config CMD_PMC
178	bool "pmc"
179	help
180	  Provides access to the Intel Power-Management Controller (PMC) so
181	  that its state can be examined. This does not currently support
182	  changing the state but it is still useful for debugging and seeing
183	  what is going on.
184
185config CMD_REGINFO
186	bool "reginfo"
187	depends on PPC
188	help
189	  Register dump
190
191config CMD_TLV_EEPROM
192	bool "tlv_eeprom"
193	depends on I2C_EEPROM
194	select CRC32
195	help
196	  Display and program the system EEPROM data block in ONIE Tlvinfo
197	  format. TLV stands for Type-Length-Value.
198
199config SPL_CMD_TLV_EEPROM
200	bool "tlv_eeprom for SPL"
201	depends on SPL_I2C_EEPROM
202	select SPL_DRIVERS_MISC
203	select SPL_CRC32
204	help
205	  Read system EEPROM data block in ONIE Tlvinfo format from SPL.
206
207config CMD_SBI
208	bool "sbi"
209	depends on RISCV_SMODE && SBI_V02
210	help
211	  Display information about the SBI implementation.
212
213endmenu
214
215menu "Boot commands"
216
217config CMD_BOOTD
218	bool "bootd"
219	default y
220	help
221	  Run the command stored in the environment "bootcmd", i.e.
222	  "bootd" does the same thing as "run bootcmd".
223
224config CMD_BOOTM
225	bool "bootm"
226	default y
227	help
228	  Boot an application image from the memory.
229
230config CMD_BOOTM_PRE_LOAD
231       bool "enable pre-load on bootm"
232       depends on CMD_BOOTM
233       depends on IMAGE_PRE_LOAD
234       default n
235       help
236         Enable support of stage pre-load for the bootm command.
237	 This stage allow to check or modify the image provided
238	 to the bootm command.
239
240config CMD_BOOTDEV
241	bool "bootdev"
242	depends on BOOTSTD
243	default y if BOOTSTD_FULL
244	help
245	  Support listing available bootdevs (boot devices) which can provide an
246	  OS to boot, as well as showing information about a particular one.
247
248	  This command is not necessary for bootstd to work.
249
250config CMD_BOOTFLOW
251	bool "bootflow"
252	depends on BOOTSTD
253	default y
254	help
255	  Support scanning for bootflows available with the bootdevs. The
256	  bootflows can optionally be booted.
257
258config CMD_BOOTFLOW_FULL
259	bool "bootflow - extract subcommands"
260	depends on BOOTSTD_FULL
261	default y
262	help
263	  Add the ability to list the available bootflows, select one and obtain
264	  information about it.
265
266	  This command is not necessary for bootstd to work.
267
268config CMD_BOOTMETH
269	bool "bootmeth"
270	depends on BOOTSTD
271	default y if BOOTSTD_FULL
272	help
273	  Support listing available bootmethds (methods used to boot an
274	  Operating System), as well as selecting the order that the bootmeths
275	  are used.
276
277	  This command is not necessary for bootstd to work.
278
279config BOOTM_EFI
280	bool "Support booting UEFI FIT images"
281	depends on CMD_BOOTEFI && CMD_BOOTM && FIT
282	default y
283	help
284	  Support booting UEFI FIT images via the bootm command.
285
286config CMD_BOOTZ
287	bool "bootz"
288	help
289	  Boot the Linux zImage
290
291config CMD_BOOTI
292	bool "booti"
293	depends on ARM64 || RISCV
294	default y
295	help
296	  Boot an AArch64 Linux Kernel image from memory.
297
298config BOOTM_LINUX
299	bool "Support booting Linux OS images"
300	depends on CMD_BOOTM || CMD_BOOTZ || CMD_BOOTI
301	default y
302	help
303	  Support booting the Linux kernel directly via a command such as bootm
304	  or booti or bootz.
305
306config BOOTM_NETBSD
307	bool "Support booting NetBSD (non-EFI) loader images"
308	depends on CMD_BOOTM
309	default y
310	help
311	  Support booting NetBSD via the bootm command.
312
313config BOOTM_OPENRTOS
314	bool "Support booting OPENRTOS / FreeRTOS images"
315	depends on CMD_BOOTM
316	help
317	  Support booting OPENRTOS / FreeRTOS via the bootm command.
318
319config BOOTM_OSE
320	bool "Support booting Enea OSE images"
321	depends on (ARM && (ARM64 || CPU_V7A || CPU_V7R) || SANDBOX || PPC || X86)
322	depends on CMD_BOOTM
323	help
324	  Support booting Enea OSE images via the bootm command.
325
326config BOOTM_PLAN9
327	bool "Support booting Plan9 OS images"
328	depends on CMD_BOOTM
329	default y
330	help
331	  Support booting Plan9 images via the bootm command.
332
333config BOOTM_RTEMS
334	bool "Support booting RTEMS OS images"
335	depends on CMD_BOOTM
336	default y
337	help
338	  Support booting RTEMS images via the bootm command.
339
340config CMD_SEAMA
341	bool "Support read SEAMA NAND images"
342	depends on MTD_RAW_NAND
343	help
344	  Support reading NAND Seattle Image (SEAMA) images.
345
346config CMD_VBE
347	bool "vbe - Verified Boot for Embedded"
348	depends on BOOTMETH_VBE
349	default y if BOOTSTD_FULL
350	help
351	  Provides various subcommands related to VBE, such as listing the
352	  available methods, looking at the state and changing which method
353	  is used to boot. Updating the parameters is not currently
354	  supported.
355
356config BOOTM_VXWORKS
357	bool "Support booting VxWorks OS images"
358	depends on CMD_BOOTM
359	default y
360	help
361	  Support booting VxWorks images via the bootm command.
362
363config SYS_BOOTM_LEN
364	hex "Maximum size of a decompresed OS image"
365	depends on CMD_BOOTM || CMD_BOOTI || CMD_BOOTZ || \
366		   LEGACY_IMAGE_FORMAT || SPL_LEGACY_IMAGE_FORMAT
367	default 0x4000000 if PPC || ARM64
368	default 0x1000000 if X86 || ARCH_MX6 || ARCH_MX7
369	default 0x800000
370	help
371	  This is the maximum size of the buffer that is used to decompress the OS
372	  image in to, if passing a compressed image to bootm/booti/bootz.
373
374config CMD_BOOTEFI
375	bool "bootefi"
376	depends on EFI_LOADER
377	default y
378	help
379	  Boot an EFI image from memory.
380
381config CMD_BOOTEFI_HELLO_COMPILE
382	bool "Compile a standard EFI hello world binary for testing"
383	depends on CMD_BOOTEFI && !CPU_V7M
384	default y
385	help
386	  This compiles a standard EFI hello world application with U-Boot so
387	  that it can be used with the test/py testing framework. This is useful
388	  for testing that EFI is working at a basic level, and for bringing
389	  up EFI support on a new architecture.
390
391	  No additional space will be required in the resulting U-Boot binary
392	  when this option is enabled.
393
394config CMD_BOOTEFI_HELLO
395	bool "Allow booting a standard EFI hello world for testing"
396	depends on CMD_BOOTEFI_HELLO_COMPILE
397	default y if CMD_BOOTEFI_SELFTEST
398	help
399	  This adds a standard EFI hello world application to U-Boot so that
400	  it can be used with the 'bootefi hello' command. This is useful
401	  for testing that EFI is working at a basic level, and for bringing
402	  up EFI support on a new architecture.
403
404source lib/efi_selftest/Kconfig
405
406config CMD_BOOTMENU
407	bool "bootmenu"
408	select MENU
409	select CHARSET
410	help
411	  Add an ANSI terminal boot menu command.
412
413config CMD_ADTIMG
414	bool "adtimg"
415	help
416	  Android DTB/DTBO image manipulation commands. Read dtb/dtbo files from
417	  image into RAM, dump image structure information, etc. Those dtb/dtbo
418	  files should be merged in one dtb further, which needs to be passed to
419	  the kernel, as part of a boot process.
420
421config CMD_ABOOTIMG
422	bool "abootimg"
423	depends on ANDROID_BOOT_IMAGE
424	help
425	  Android Boot Image manipulation commands. Allows one to extract
426	  images contained in boot.img, like kernel, ramdisk, dtb, etc, and
427	  obtain corresponding meta-information from boot.img.
428
429	  See doc/android/boot-image.rst for details.
430
431config CMD_ELF
432	bool "bootelf, bootvx"
433	default y
434	select LIB_ELF
435	help
436	  Boot an ELF/vxWorks image from the memory.
437
438config CMD_FDT
439	bool "Flattened Device Tree utility commands"
440	default y
441	depends on OF_LIBFDT
442	help
443	  Do FDT related setup before booting into the Operating System.
444
445config SUPPORT_EXTENSION_SCAN
446	bool
447
448config CMD_EXTENSION
449	bool "Extension board management command"
450	select CMD_FDT
451	depends on SUPPORT_EXTENSION_SCAN
452	help
453	  Enables the "extension" command, which allows to detect
454	  extension boards connected to the system, and apply
455	  corresponding Device Tree overlays.
456
457config CMD_GO
458	bool "go"
459	default y
460	help
461	  Start an application at a given address.
462
463config CMD_RUN
464	bool "run"
465	default y
466	help
467	  Run the command in the given environment variable.
468
469config CMD_IMI
470	bool "iminfo"
471	default y
472	help
473	  Print header information for application image.
474
475config CMD_IMLS
476	bool "imls"
477	help
478	  List all images found in flash
479
480config CMD_XIMG
481	bool "imxtract"
482	default y
483	help
484	  Extract a part of a multi-image.
485
486config CMD_XXD
487	bool "xxd"
488	help
489	  Print file as hexdump to standard output
490
491config CMD_SPL
492	bool "spl export - Export boot information for Falcon boot"
493	depends on SPL
494	help
495	  Falcon mode allows booting directly from SPL into an Operating
496	  System such as Linux, thus skipping U-Boot proper. See
497	  doc/README.falcon for full information about how to use this
498	  command.
499
500config CMD_SPL_NAND_OFS
501	hex "Offset of OS args or dtb for Falcon-mode NAND boot"
502	depends on CMD_SPL && (TPL_NAND_SUPPORT || SPL_NAND_SUPPORT)
503	default 0
504	help
505	  This provides the offset of the command line arguments for Linux
506	  when booting from NAND in Falcon mode.  See doc/README.falcon
507	  for full information about how to use this option (and also see
508	  board/gateworks/gw_ventana/README for an example).
509
510config CMD_SPL_NOR_OFS
511	hex "Offset of OS args or dtb for Falcon-mode NOR boot"
512	depends on CMD_SPL && SPL_NOR_SUPPORT
513	default 0
514	help
515	  This provides the offset of the command line arguments or dtb for
516	  Linux when booting from NOR in Falcon mode.
517
518config CMD_SPL_WRITE_SIZE
519	hex "Size of argument area"
520	depends on CMD_SPL
521	default 0x2000
522	help
523	  This provides the size of the command-line argument area in NAND
524	  flash used by Falcon-mode boot. See the documentation until CMD_SPL
525	  for detail.
526
527config CMD_THOR_DOWNLOAD
528	bool "thor - TIZEN 'thor' download"
529	select DFU
530	help
531	  Implements the 'thor' download protocol. This is a way of
532	  downloading a software update over USB from an attached host.
533	  There is no documentation about this within the U-Boot source code
534	  but you should be able to find something on the interwebs.
535
536config THOR_RESET_OFF
537	bool "thor: Disable reset on completion"
538	depends on CMD_THOR_DOWNLOAD
539
540config CMD_ZBOOT
541	bool "zboot - x86 boot command"
542	help
543	  With x86 machines it is common to boot a bzImage file which
544	  contains both a kernel and a setup.bin file. The latter includes
545	  configuration information from the dark ages which x86 boards still
546	  need to pick things out of.
547
548	  Consider using FIT in preference to this since it supports directly
549	  booting both 32- and 64-bit kernels, as well as secure boot.
550	  Documentation is available in doc/uImage.FIT/x86-fit-boot.txt
551
552endmenu
553
554menu "Environment commands"
555
556config CMD_ASKENV
557	bool "ask for env variable"
558	help
559	  Ask for environment variable
560
561config CMD_EXPORTENV
562	bool "env export"
563	default y
564	help
565	  Export environments.
566
567config CMD_IMPORTENV
568	bool "env import"
569	default y
570	help
571	  Import environments.
572
573config CMD_EDITENV
574	bool "editenv"
575	default y
576	help
577	  Edit environment variable.
578
579config CMD_GREPENV
580	bool "search env"
581	help
582	  Allow for searching environment variables
583
584config CMD_SAVEENV
585	bool "saveenv"
586	default y
587	help
588	  Save all environment variables into the compiled-in persistent
589	  storage.
590
591config CMD_ERASEENV
592	bool "eraseenv"
593	depends on CMD_SAVEENV
594	help
595	  Erase environment variables from the compiled-in persistent
596	  storage.
597
598config CMD_ENV_EXISTS
599	bool "env exists"
600	default y
601	help
602	  Check if a variable is defined in the environment for use in
603	  shell scripting.
604
605config CMD_ENV_CALLBACK
606	bool "env callbacks - print callbacks and their associated variables"
607	help
608	  Some environment variable have callbacks defined by
609	  U_BOOT_ENV_CALLBACK. These are called when the variable changes.
610	  For example changing "baudrate" adjust the serial baud rate. This
611	  command lists the currently defined callbacks.
612
613config CMD_ENV_FLAGS
614	bool "env flags -print variables that have non-default flags"
615	help
616	  Some environment variables have special flags that control their
617	  behaviour. For example, serial# can only be written once and cannot
618	  be deleted. This command shows the variables that have special
619	  flags.
620
621config CMD_NVEDIT_EFI
622	bool "env [set|print] -e - set/print UEFI variables"
623	depends on EFI_LOADER
624	imply HEXDUMP
625	help
626	  UEFI variables are encoded as some form of U-Boot variables.
627	  If enabled, we are allowed to set/print UEFI variables using
628	  "env" command with "-e" option without knowing details.
629
630config CMD_NVEDIT_INDIRECT
631	bool "env indirect - Sets environment value from another"
632
633config CMD_NVEDIT_INFO
634	bool "env info - print or evaluate environment information"
635	help
636	  Print environment information:
637	  - env_valid : is environment valid
638	  - env_ready : is environment imported into hash table
639	  - env_use_default : is default environment used
640
641	  This command can be optionally used for evaluation in scripts:
642	  [-d] : evaluate whether default environment is used
643	  [-p] : evaluate whether environment can be persisted
644	  [-q] : quiet output
645	  The result of multiple evaluations will be combined with AND.
646
647config CMD_NVEDIT_LOAD
648	bool "env load"
649	help
650	  Load all environment variables from the compiled-in persistent
651	  storage.
652
653config CMD_NVEDIT_SELECT
654	bool "env select"
655	help
656	  Select the compiled-in persistent storage of environment variables.
657
658endmenu
659
660menu "Memory commands"
661
662config CMD_BINOP
663	bool "binop"
664	help
665	  Compute binary operations (xor, or, and) of byte arrays of arbitrary
666	  size from memory and store the result in memory or the environment.
667
668config CMD_BLOBLIST
669	bool "bloblist"
670	default y if BLOBLIST
671	help
672	  Show information about the bloblist, a collection of binary blobs
673	  held in memory that persist between SPL and U-Boot. In the case of
674	  x86 devices the bloblist can be used to hold ACPI tables so that they
675	  remain available in memory.
676
677config CMD_CRC32
678	bool "crc32"
679	default y
680	select HASH
681	help
682	  Compute CRC32.
683
684config CRC32_VERIFY
685	bool "crc32 -v"
686	depends on CMD_CRC32
687	help
688	  Add -v option to verify data against a crc32 checksum.
689
690config CMD_EEPROM
691	bool "eeprom - EEPROM subsystem"
692	help
693	  (deprecated, needs conversion to driver model)
694	  Provides commands to read and write EEPROM (Electrically Erasable
695	  Programmable Read Only Memory) chips that are connected over an
696	  I2C bus.
697
698config CMD_EEPROM_LAYOUT
699	bool "Enable layout-aware eeprom commands"
700	depends on CMD_EEPROM
701	help
702	  (deprecated, needs conversion to driver model)
703	  When enabled, additional eeprom sub-commands become available.
704
705	  eeprom print - prints the contents of the eeprom in a human-readable
706	  way (eeprom layout fields, and data formatted to be fit for human
707	  consumption).
708
709	  eeprom update - allows user to update eeprom fields by specifying
710	  the field name, and providing the new data in a human readable format
711	  (same format as displayed by the eeprom print command).
712
713	  Both commands can either auto detect the layout, or be told which
714	  layout to use.
715
716	  Feature API:
717	  __weak int parse_layout_version(char *str)
718		- override to provide your own layout name parsing
719	  __weak void __eeprom_layout_assign(struct eeprom_layout *layout,
720			int layout_version);
721		- override to setup the layout metadata based on the version
722	  __weak int eeprom_layout_detect(unsigned char *data)
723		- override to provide your own algorithm for detecting layout
724			version
725	  eeprom_field.c
726		- contains various printing and updating functions for common
727			types of eeprom fields. Can be used for defining
728			custom layouts.
729
730config EEPROM_LAYOUT_HELP_STRING
731	  string "Tells user what layout names are supported"
732	  depends on CMD_EEPROM_LAYOUT
733	  default "<not defined>"
734	  help
735	    Help printed with the LAYOUT VERSIONS part of the 'eeprom'
736	    command's help.
737
738config SYS_I2C_EEPROM_BUS
739	int "I2C bus of the EEPROM device."
740	depends on CMD_EEPROM
741	default 0
742
743config SYS_I2C_EEPROM_ADDR_LEN
744	int "Length in bytes of the EEPROM memory array address"
745	depends on CMD_EEPROM || ID_EEPROM
746	default 1
747	range 1 2
748	help
749	  Note: This is NOT the chip address length!
750
751config SYS_EEPROM_SIZE
752	depends on CMD_EEPROM
753	int "Size in bytes of the EEPROM device"
754	default 256
755
756config SYS_EEPROM_PAGE_WRITE_BITS
757	int "Number of bits used to address bytes in a single page"
758	depends on CMD_EEPROM
759	default 8
760	help
761	  The EEPROM page size is 2^SYS_EEPROM_PAGE_WRITE_BITS.
762	  A 64 byte page, for example would require six bits.
763
764config SYS_EEPROM_PAGE_WRITE_DELAY_MS
765	int "Number of milliseconds to delay between page writes"
766	depends on CMD_EEPROM || CMD_I2C
767	default 0
768
769config LOOPW
770	bool "loopw"
771	help
772	  Infinite write loop on address range
773
774config CMD_MD5SUM
775	bool "md5sum"
776	select MD5
777	help
778	  Compute MD5 checksum.
779
780config MD5SUM_VERIFY
781	bool "md5sum -v"
782	depends on CMD_MD5SUM
783	help
784	  Add -v option to verify data against an MD5 checksum.
785
786config CMD_MEMINFO
787	bool "meminfo"
788	help
789	  Display memory information.
790
791config CMD_MEMORY
792	bool "md, mm, nm, mw, cp, cmp, base, loop"
793	default y
794	help
795	  Memory commands.
796	    md - memory display
797	    mm - memory modify (auto-incrementing address)
798	    nm - memory modify (constant address)
799	    mw - memory write (fill)
800	    cp - memory copy
801	    cmp - memory compare
802	    base - print or set address offset
803	    loop - initialize loop on address range
804
805config CMD_MEM_SEARCH
806	bool "ms - Memory search"
807	help
808	  Memory-search command
809
810	  This allows searching through a region of memory looking for hex
811	  data (byte, 16-bit word, 32-bit long, also 64-bit on machines that
812	  support it). It is also possible to search for a string. The
813	  command accepts a memory range and a list of values to search for.
814	  The values need to appear in memory in the same order they are given
815	  in the command. At most 10 matches can be returned at a time, but
816	  pressing return will show the next 10 matches. Environment variables
817	  are set for use with scripting (memmatches, memaddr, mempos).
818
819config CMD_MX_CYCLIC
820	bool "Enable cyclic md/mw commands"
821	depends on CMD_MEMORY
822	help
823          Add the "mdc" and "mwc" memory commands. These are cyclic
824          "md/mw" commands.
825          Examples:
826
827	  => mdc.b 10 4 500
828	  This command will print 4 bytes (10,11,12,13) each 500 ms.
829
830	  => mwc.l 100 12345678 10
831	  This command will write 12345678 to address 100 all 10 ms.
832
833config CMD_RANDOM
834	bool "random"
835	default y
836	depends on CMD_MEMORY && (LIB_RAND || LIB_HW_RAND)
837	help
838	  random - fill memory with random data
839
840config CMD_MEMTEST
841	bool "memtest"
842	help
843	  Simple RAM read/write test.
844
845if CMD_MEMTEST
846
847config SYS_ALT_MEMTEST
848	bool "Alternative test"
849	help
850	  Use a more complete alternative memory test.
851
852if SYS_ALT_MEMTEST
853
854config SYS_ALT_MEMTEST_BITFLIP
855	bool "Bitflip test"
856	default y
857	help
858	  The alternative memory test includes bitflip test since 2020.07.
859	  The bitflip test significantly increases the overall test time.
860	  Bitflip test can optionally be disabled here.
861
862endif
863
864config SYS_MEMTEST_START
865	hex "default start address for mtest"
866	default 0x0
867	help
868	  This is the default start address for mtest for simple read/write
869	  test. If no arguments are given to mtest, default address is used
870	  as start address.
871
872config SYS_MEMTEST_END
873	hex "default end address for mtest"
874	default 0x1000
875	help
876	  This is the default end address for mtest for simple read/write
877	  test. If no arguments are given to mtest, default address is used
878	  as end address.
879
880endif
881
882config CMD_SHA1SUM
883	bool "sha1sum"
884	select SHA1
885	help
886	  Compute SHA1 checksum.
887
888config SHA1SUM_VERIFY
889	bool "sha1sum -v"
890	depends on CMD_SHA1SUM
891	help
892	  Add -v option to verify data against a SHA1 checksum.
893
894config CMD_STRINGS
895	bool "strings - display strings in memory"
896	help
897	  This works similarly to the Unix 'strings' command except that it
898	  works with a memory range. String of printable characters found
899	  within the range are displayed. The minimum number of characters
900	  for a sequence to be considered a string can be provided.
901
902endmenu
903
904menu "Compression commands"
905
906config CMD_LZMADEC
907	bool "lzmadec"
908	default y if CMD_BOOTI
909	select LZMA
910	help
911	  Support decompressing an LZMA (Lempel-Ziv-Markov chain algorithm)
912	  image from memory.
913
914config CMD_UNLZ4
915	bool "unlz4"
916	default y if CMD_BOOTI
917	select LZ4
918	help
919	  Support decompressing an LZ4 image from memory region.
920
921config CMD_UNZIP
922	bool "unzip"
923	default y if CMD_BOOTI
924	select GZIP
925	help
926	  Uncompress a zip-compressed memory region.
927
928config CMD_ZIP
929	bool "zip"
930	select GZIP_COMPRESSED
931	help
932	  Compress a memory region with zlib deflate method.
933
934endmenu
935
936menu "Device access commands"
937
938config CMD_ARMFLASH
939	#depends on FLASH_CFI_DRIVER
940	bool "armflash"
941	help
942	  ARM Ltd reference designs flash partition access
943
944config CMD_ADC
945	bool "adc - Access Analog to Digital Converters info and data"
946	select ADC
947	depends on DM_REGULATOR
948	help
949	  Shows ADC device info and permit printing one-shot analog converted
950	  data from a named Analog to Digital Converter.
951
952config CMD_BCB
953	bool "bcb"
954	depends on MMC
955	depends on PARTITIONS
956	help
957	  Read/modify/write the fields of Bootloader Control Block, usually
958	  stored on the flash "misc" partition with its structure defined in:
959	  https://android.googlesource.com/platform/bootable/recovery/+/master/
960	  bootloader_message/include/bootloader_message/bootloader_message.h
961
962	  Some real-life use-cases include (but are not limited to):
963	  - Determine the "boot reason" (and act accordingly):
964	    https://source.android.com/devices/bootloader/boot-reason
965	  - Get/pass a list of commands from/to recovery:
966	    https://android.googlesource.com/platform/bootable/recovery
967	  - Inspect/dump the contents of the BCB fields
968
969config CMD_BIND
970	bool "bind/unbind - Bind or unbind a device to/from a driver"
971	depends on DM
972	help
973	  Bind or unbind a device to/from a driver from the command line.
974	  This is useful in situations where a device may be handled by several
975	  drivers. For example, this can be used to bind a UDC to the usb ether
976	  gadget driver from the command line.
977
978config CMD_CLK
979	bool "clk - Show clock frequencies"
980	help
981	  (deprecated)
982	  Shows clock frequences by calling a sock_clk_dump() hook function.
983	  This is depreated in favour of using the CLK uclass and accessing
984	  clock values from associated drivers. However currently no command
985	  exists for this.
986
987config CMD_DEMO
988	bool "demo - Demonstration commands for driver model"
989	depends on DM
990	help
991	  Provides a 'demo' command which can be used to play around with
992	  driver model. To use this properly you will need to enable one or
993	  both of the demo devices (DM_DEMO_SHAPE and DM_DEMO_SIMPLE).
994	  Otherwise you will always get an empty list of devices. The demo
995	  devices are defined in the sandbox device tree, so the easiest
996	  option is to use sandbox and pass the -d point to sandbox's
997	  u-boot.dtb file.
998
999config CMD_DFU
1000	bool "dfu"
1001	select DFU
1002	help
1003	  Enables the command "dfu" which is used to have U-Boot create a DFU
1004	  class device via USB. This command requires that the "dfu_alt_info"
1005	  environment variable be set and define the alt settings to expose to
1006	  the host.
1007
1008config CMD_DM
1009	bool "dm - Access to driver model information"
1010	depends on DM
1011	help
1012	  Provides access to driver model data structures and information,
1013	  such as a list of devices, list of uclasses and the state of each
1014	  device (e.g. activated). This is not required for operation, but
1015	  can be useful to see the state of driver model for debugging or
1016	  interest.
1017
1018config CMD_FASTBOOT
1019	bool "fastboot - Android fastboot support"
1020	depends on FASTBOOT
1021	help
1022	  This enables the command "fastboot" which enables the Android
1023	  fastboot mode for the platform. Fastboot is a protocol for
1024	  downloading images, flashing and device control used on
1025	  Android devices. Fastboot requires either the network stack
1026	  enabled or support for acting as a USB device.
1027
1028	  See doc/android/fastboot.rst for more information.
1029
1030config CMD_FLASH
1031	bool "flinfo, erase, protect"
1032	default y
1033	depends on MTD || FLASH_CFI_DRIVER || MTD_NOR_FLASH
1034	help
1035	  NOR flash support.
1036	    flinfo - print FLASH memory information
1037	    erase - FLASH memory
1038	    protect - enable or disable FLASH write protection
1039
1040config CMD_FPGA
1041	bool "fpga"
1042	depends on FPGA
1043	default y
1044	help
1045	  FPGA support.
1046
1047config CMD_FPGA_LOADBP
1048	bool "fpga loadbp - load partial bitstream (Xilinx only)"
1049	depends on CMD_FPGA
1050	help
1051	  Supports loading an FPGA device from a bitstream buffer containing
1052	  a partial bitstream.
1053
1054config CMD_FPGA_LOADFS
1055	bool "fpga loadfs - load bitstream from FAT filesystem (Xilinx only)"
1056	depends on CMD_FPGA
1057	help
1058	  Supports loading an FPGA device from a FAT filesystem.
1059
1060config CMD_FPGA_LOADMK
1061	bool "fpga loadmk - load bitstream from image"
1062	depends on CMD_FPGA
1063	help
1064	  Supports loading an FPGA device from a image generated by mkimage.
1065
1066config CMD_FPGA_LOADP
1067	bool "fpga loadp - load partial bitstream"
1068	depends on CMD_FPGA
1069	help
1070	  Supports loading an FPGA device from a bitstream buffer containing
1071	  a partial bitstream.
1072
1073config CMD_FPGA_LOAD_SECURE
1074	bool "fpga loads - loads secure bitstreams"
1075	depends on CMD_FPGA
1076	select FPGA_LOAD_SECURE
1077	help
1078	  Enables the fpga loads command which is used to load secure
1079	  (authenticated or encrypted or both) bitstreams on to FPGA.
1080
1081config CMD_FPGAD
1082	bool "fpgad - dump FPGA registers"
1083	help
1084	  (legacy, needs conversion to driver model)
1085	  Provides a way to dump FPGA registers by calling the board-specific
1086	  fpga_get_reg() function. This functions similarly to the 'md'
1087	  command.
1088
1089config CMD_FUSE
1090	bool "fuse - support for the fuse subssystem"
1091	help
1092	  (deprecated - needs conversion to driver model)
1093	  This allows reading, sensing, programming or overriding fuses
1094	  which control the behaviour of the device. The command uses the
1095	  fuse_...() API.
1096
1097config CMD_GPIO
1098	bool "gpio"
1099	help
1100	  GPIO support.
1101
1102config CMD_GPIO_READ
1103	bool "gpio read - save GPIO value to variable"
1104	depends on CMD_GPIO
1105	help
1106	  Enables the 'gpio read' command that saves the value
1107	  of a GPIO pin to a variable.
1108
1109config CMD_PWM
1110	bool "pwm"
1111	depends on DM_PWM
1112	help
1113	  Control PWM channels, this allows invert/config/enable/disable PWM channels.
1114
1115config CMD_GPT
1116	bool "GPT (GUID Partition Table) command"
1117	select EFI_PARTITION
1118	select PARTITION_UUIDS
1119	imply RANDOM_UUID
1120	help
1121	  Enable the 'gpt' command to ready and write GPT style partition
1122	  tables.
1123
1124config RANDOM_UUID
1125	bool "GPT Random UUID generation"
1126	select LIB_UUID
1127	help
1128	  Enable the generation of partitions with random UUIDs if none
1129	  are provided.
1130
1131config CMD_GPT_RENAME
1132	bool "GPT partition renaming commands"
1133	depends on CMD_GPT
1134	help
1135	  Enables the 'gpt' command to interchange names on two GPT
1136	  partitions via the 'gpt swap' command or to rename single
1137	  partitions via the 'rename' command.
1138
1139config CMD_IDE
1140	bool "ide - Support for IDE drivers"
1141	select IDE
1142	help
1143	  Provides an 'ide' command which allows accessing the IDE drive,
1144	  resetting the IDE interface, printing the partition table and
1145	  geting device info. It also enables the 'diskboot' command which
1146	  permits booting from an IDE drive.
1147
1148config CMD_IO
1149	bool "io - Support for performing I/O accesses"
1150	help
1151	  Provides an 'iod' command to display I/O space and an 'iow' command
1152	  to write values to the I/O space. This can be useful for manually
1153	  checking the state of devices during boot when debugging device
1154	  drivers, etc.
1155
1156config CMD_IOTRACE
1157	bool "iotrace - Support for tracing I/O activity"
1158	help
1159	  Provides an 'iotrace' command which supports recording I/O reads and
1160	  writes in a trace buffer in memory . It also maintains a checksum
1161	  of the trace records (even if space is exhausted) so that the
1162	  sequence of I/O accesses can be verified.
1163
1164	  When debugging drivers it is useful to see what I/O accesses were
1165	  done and in what order.
1166
1167	  Even if the individual accesses are of little interest it can be
1168	  useful to verify that the access pattern is consistent each time
1169	  an operation is performed. In this case a checksum can be used to
1170	  characterise the operation of a driver. The checksum can be compared
1171	  across different runs of the operation to verify that the driver is
1172	  working properly.
1173
1174	  In particular, when performing major refactoring of the driver, where
1175	  the access pattern should not change, the checksum provides assurance
1176	  that the refactoring work has not broken the driver.
1177
1178	  This works by sneaking into the io.h heder for an architecture and
1179	  redirecting I/O accesses through iotrace's tracing mechanism.
1180
1181	  For now no commands are provided to examine the trace buffer. The
1182	  format is fairly simple, so 'md' is a reasonable substitute.
1183
1184	  Note: The checksum feature is only useful for I/O regions where the
1185	  contents do not change outside of software control. Where this is not
1186	  suitable you can fall back to manually comparing the addresses. It
1187	  might be useful to enhance tracing to only checksum the accesses and
1188	  not the data read/written.
1189
1190config CMD_I2C
1191	bool "i2c"
1192	help
1193	  I2C support.
1194
1195config CMD_W1
1196	depends on W1
1197	default y if W1
1198	bool "w1 - Support for Dallas 1-Wire protocol"
1199	help
1200	  Dallas 1-wire protocol support
1201
1202config CMD_LOADB
1203	bool "loadb"
1204	default y
1205	help
1206	  Load a binary file over serial line.
1207
1208config CMD_LOADM
1209	bool "loadm"
1210	help
1211	  Load a binary over memory mapped.
1212
1213config CMD_LOADS
1214	bool "loads - Load a file over serial in S-Record format"
1215	default y
1216	help
1217	  Load an S-Record file over serial line
1218
1219config LOADS_ECHO
1220	bool "Echo all characters received during a loads back to console"
1221	depends on CMD_LOADS
1222	help
1223	  If enabled, all characters received during a serial download (using
1224	  the "loads" command) are echoed back. This might be needed by some
1225	  terminal emulations (like "cu"), but may as well just take time on
1226	  others. This sets the initial value of the "loads_echo" environment
1227	  variable to 1.
1228
1229config CMD_SAVES
1230	bool "saves - Save a file over serial in S-Record format"
1231	help
1232	  Provides a way to save a binary file using the Motorola S-Record
1233	  format over the serial line.
1234
1235config SYS_LOADS_BAUD_CHANGE
1236	bool "Enable a temporary baudrate change during loads/saves command"
1237	depends on CMD_LOADS || CMD_SAVES
1238
1239config CMD_LOADXY_TIMEOUT
1240	int "loadxy_timeout"
1241	range 0 2000
1242	default 90
1243	help
1244	  Initial timeout for loadx and loady commands. Zero means infinity.
1245
1246config CMD_LSBLK
1247	depends on BLK
1248	bool "lsblk - list block drivers and devices"
1249	help
1250	  Print list of available block device drivers, and for each, the list
1251	  of known block devices.
1252
1253config CMD_MBR
1254	bool "MBR (Master Boot Record) command"
1255	select DOS_PARTITION
1256	help
1257	  Enable the 'mbr' command to ready and write MBR (Master Boot Record)
1258	  style partition tables.
1259
1260config CMD_MISC
1261	bool "misc"
1262	depends on MISC
1263	help
1264	  Enable the command "misc" for accessing miscellaneous devices with
1265	  a MISC uclass driver. The command provides listing all MISC devices
1266	  as well as read and write functionalities via their drivers.
1267
1268config CMD_MMC
1269	bool "mmc"
1270	depends on MMC
1271	help
1272	  MMC memory mapped support.
1273
1274if CMD_MMC
1275
1276config CMD_BKOPS_ENABLE
1277	bool "mmc bkops enable"
1278	depends on CMD_MMC
1279	help
1280	  Enable command for setting manual background operations handshake
1281	  on a eMMC device. The feature is optionally available on eMMC devices
1282	  conforming to standard >= 4.41.
1283
1284config CMD_MMC_RPMB
1285	bool "Enable support for RPMB in the mmc command"
1286	depends on SUPPORT_EMMC_RPMB
1287	help
1288	  Enable the commands for reading, writing and programming the
1289	  key for the Replay Protection Memory Block partition in eMMC.
1290
1291config CMD_MMC_SWRITE
1292	bool "mmc swrite"
1293	depends on MMC_WRITE
1294	select IMAGE_SPARSE
1295	help
1296	  Enable support for the "mmc swrite" command to write Android sparse
1297	  images to eMMC.
1298
1299endif
1300
1301config CMD_CLONE
1302	bool "clone"
1303	depends on BLK
1304	help
1305	  Enable storage cloning over block devices, useful for
1306	  initial flashing by external block device without network
1307	  or usb support.
1308
1309config CMD_OPTEE_RPMB
1310	bool "Enable read/write support on RPMB via OPTEE"
1311	depends on SUPPORT_EMMC_RPMB && OPTEE
1312	help
1313	  Enable the commands for reading, writing persistent named values
1314	  in the Replay Protection Memory Block partition in eMMC by
1315	  using Persistent Objects in OPTEE
1316
1317config CMD_MTD
1318	bool "mtd"
1319	depends on MTD
1320	select MTD_PARTITIONS
1321	help
1322	  MTD commands support.
1323
1324config CMD_MUX
1325	bool "mux"
1326	depends on MULTIPLEXER
1327	help
1328	 List, select, and deselect mux controllers on the fly.
1329
1330config CMD_NAND
1331	bool "nand"
1332	default y if NAND_SUNXI
1333	depends on MTD_RAW_NAND
1334	help
1335	  NAND support.
1336
1337if CMD_NAND
1338config CMD_NAND_TRIMFFS
1339	bool "nand write.trimffs"
1340	default y if ARCH_SUNXI
1341	help
1342	  Allows one to skip empty pages when flashing something on a NAND.
1343
1344config CMD_NAND_LOCK_UNLOCK
1345	bool "nand lock/unlock"
1346	help
1347	  NAND locking support.
1348
1349config CMD_NAND_TORTURE
1350	bool "nand torture"
1351	help
1352	  NAND torture support.
1353
1354endif # CMD_NAND
1355
1356config CMD_NVME
1357	bool "nvme"
1358	depends on NVME
1359	default y if NVME
1360	help
1361	  NVM Express device support
1362
1363config CMD_ONENAND
1364	bool "onenand - access to onenand device"
1365	depends on MTD
1366	help
1367	  OneNAND is a brand of NAND ('Not AND' gate) flash which provides
1368	  various useful features. This command allows reading, writing,
1369	  and erasing blocks. It allso provides a way to show and change
1370	  bad blocks, and test the device.
1371
1372config USE_ONENAND_BOARD_INIT
1373	bool "Call onenand_board_init() in the onenand command"
1374	depends on CMD_ONENAND
1375
1376config CMD_OSD
1377	bool "osd"
1378	help
1379	  Enable the 'osd' command which allows to query information from and
1380	  write text data to a on-screen display (OSD) device; a virtual device
1381	  associated with a display capable of displaying a text overlay on the
1382	  display it's associated with..
1383
1384config CMD_PART
1385	bool "part"
1386	depends on PARTITIONS
1387	select PARTITION_UUIDS
1388	help
1389	  Read and display information about the partition table on
1390	  various media.
1391
1392config CMD_PCI
1393	bool "pci - Access PCI devices"
1394	help
1395	  Provide access to PCI (Peripheral Interconnect Bus), a type of bus
1396	  used on some devices to allow the CPU to communicate with its
1397	  peripherals. Sub-commands allow bus enumeration, displaying and
1398	  changing configuration space and a few other features.
1399
1400config CMD_PCI_MPS
1401	bool "pci_mps - Configure PCI device MPS"
1402	depends on PCI
1403	help
1404	  Enables PCI Express Maximum Packet Size (MPS) tuning. This
1405	  command configures the PCI Express MPS of each endpoint to the
1406	  largest value supported by all devices below the root complex.
1407	  The Maximum Read Request Size will not be altered. This method is
1408	  the same algorithm as used by Linux pci=pcie_bus_safe.
1409
1410config CMD_PINMUX
1411	bool "pinmux - show pins muxing"
1412	depends on PINCTRL
1413	default y if PINCTRL
1414	help
1415	  Parse all available pin-controllers and show pins muxing. This
1416	  is useful for debug purpoer to check the pin muxing and to know if
1417	  a pin is configured as a GPIO or as an alternate function.
1418
1419config CMD_POWEROFF
1420	bool "poweroff"
1421	help
1422	  Poweroff/Shutdown the system
1423
1424config CMD_READ
1425	bool "read - Read binary data from a partition"
1426	help
1427	  Provides low-level access to the data in a partition.
1428
1429config CMD_REMOTEPROC
1430	bool "remoteproc"
1431	depends on REMOTEPROC
1432	help
1433	  Support for Remote Processor control
1434
1435config CMD_SATA
1436	bool "sata - Access SATA subsystem"
1437	select SATA
1438	help
1439	  SATA (Serial Advanced Technology Attachment) is a serial bus
1440	  standard for connecting to hard drives and other storage devices.
1441	  This command provides information about attached devices and allows
1442	  reading, writing and other operations.
1443
1444	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
1445	  Attachment, where AT refers to an IBM AT (Advanced Technology)
1446	  computer released in 1984.
1447
1448config CMD_SCSI
1449	bool "scsi - Access to SCSI devices"
1450	depends on SCSI
1451	default y
1452	help
1453	  This provides a 'scsi' command which provides access to SCSI (Small
1454	  Computer System Interface) devices. The command provides a way to
1455	  scan the bus, reset the bus, read and write data and get information
1456	  about devices.
1457
1458config CMD_SDRAM
1459	bool "sdram - Print SDRAM configuration information"
1460	help
1461	  Provides information about attached SDRAM. This assumed that the
1462	  SDRAM has an EEPROM with information that can be read using the
1463	  I2C bus. This is only available on some boards.
1464
1465config CMD_SF
1466	bool "sf"
1467	depends on DM_SPI_FLASH || SPI_FLASH
1468	default y if DM_SPI_FLASH
1469	help
1470	  SPI Flash support
1471
1472config CMD_SF_TEST
1473	bool "sf test - Allow testing of SPI flash"
1474	depends on CMD_SF
1475	help
1476	  Provides a way to test that SPI flash is working correctly. The
1477	  test is destructive, in that an area of SPI flash must be provided
1478	  for the test to use. Performance information is also provided,
1479	  measuring the performance of reading, writing and erasing in
1480	  Mbps (Million Bits Per Second). This value should approximately
1481	  equal the SPI bus speed for a single-bit-wide SPI bus, assuming
1482	  everything is working properly.
1483
1484config CMD_SPI
1485	bool "sspi - Command to access spi device"
1486	depends on SPI
1487	help
1488	  SPI utility command.
1489
1490config DEFAULT_SPI_BUS
1491	int "default spi bus used by sspi command"
1492	depends on CMD_SPI
1493	default 0
1494
1495config DEFAULT_SPI_MODE
1496	hex "default spi mode used by sspi command (see include/spi.h)"
1497	depends on CMD_SPI
1498	default 0
1499
1500config CMD_TEMPERATURE
1501	bool "temperature - display the temperature from thermal sensors"
1502	depends on DM_THERMAL
1503	help
1504	  Provides a way to list thermal sensors and to get their readings.
1505
1506config CMD_TSI148
1507	bool "tsi148 - Command to access tsi148 device"
1508	help
1509	  This provides various sub-commands to initialise and configure the
1510	  Turndra tsi148 device. See the command help for full details.
1511
1512config CMD_UFS
1513	bool "Enable UFS - Universal Flash Subsystem commands"
1514	depends on UFS
1515	help
1516	  "This provides commands to initialise and configure universal flash
1517	   subsystem devices"
1518
1519config CMD_UNIVERSE
1520	bool "universe - Command to set up the Turndra Universe controller"
1521	help
1522	  This allows setting up the VMEbus provided by this controller.
1523	  See the command help for full details.
1524
1525config CMD_USB
1526	bool "usb"
1527	depends on USB_HOST
1528	help
1529	  USB support.
1530
1531config CMD_USB_SDP
1532	bool "sdp"
1533	select USB_FUNCTION_SDP
1534	help
1535	  Enables the command "sdp" which is used to have U-Boot emulating the
1536	  Serial Download Protocol (SDP) via USB.
1537
1538config CMD_ROCKUSB
1539	bool "rockusb"
1540	depends on USB_FUNCTION_ROCKUSB
1541	help
1542	  Rockusb protocol is widely used by Rockchip SoC based devices. It can
1543	  read/write info, image to/from devices. This enable rockusb command
1544	  support to communication with rockusb device. for more detail about
1545	  this command, please read doc/README.rockusb.
1546
1547config CMD_USB_MASS_STORAGE
1548	bool "UMS usb mass storage"
1549	depends on USB_GADGET_DOWNLOAD
1550	select USB_FUNCTION_MASS_STORAGE
1551	depends on BLK && USB_GADGET
1552	help
1553	  Enables the command "ums" and the USB mass storage support to the
1554	  export a block device: U-Boot, the USB device, acts as a simple
1555	  external hard drive plugged on the host USB port.
1556
1557config CMD_UMS_ABORT_KEYED
1558	bool "UMS abort with any key"
1559	depends on CMD_USB_MASS_STORAGE
1560	help
1561	  Allow interruption of usb mass storage run with any key pressed.
1562
1563config CMD_PVBLOCK
1564	bool "Xen para-virtualized block device"
1565	depends on XEN
1566	select PVBLOCK
1567	help
1568	  Xen para-virtualized block device support
1569
1570config CMD_VIRTIO
1571	bool "virtio"
1572	depends on VIRTIO
1573	default y if VIRTIO
1574	help
1575	  VirtIO block device support
1576
1577config CMD_WDT
1578	bool "wdt"
1579	depends on WDT
1580	help
1581	  This provides commands to control the watchdog timer devices.
1582
1583config CMD_WRITE
1584	bool "write - Write binary data to a partition"
1585	help
1586	  Provides low-level write access to a partition.
1587
1588config CMD_AXI
1589	bool "axi"
1590	depends on AXI
1591	help
1592	  Enable the command "axi" for accessing AXI (Advanced eXtensible
1593	  Interface) busses, a on-chip interconnect specification for managing
1594	  functional blocks in SoC designs, which is also often used in designs
1595	  involving FPGAs (e.g.  communication with IP cores in Xilinx FPGAs).
1596endmenu
1597
1598
1599menu "Shell scripting commands"
1600
1601config CMD_CAT
1602	bool "cat"
1603	help
1604	  Print file to standard output
1605
1606config CMD_ECHO
1607	bool "echo"
1608	default y
1609	help
1610	  Echo args to console
1611
1612config CMD_ITEST
1613	bool "itest"
1614	default y
1615	help
1616	  Return true/false on integer compare.
1617
1618config CMD_SOURCE
1619	bool "source"
1620	default y
1621	help
1622	  Run script from memory
1623
1624config CMD_SETEXPR
1625	bool "setexpr"
1626	default y
1627	help
1628	  Evaluate boolean and math expressions and store the result in an env
1629	    variable.
1630	  Also supports loading the value at a memory location into a variable.
1631	  If CONFIG_REGEX is enabled, setexpr also supports a gsub function.
1632
1633config CMD_SETEXPR_FMT
1634	bool "setexpr_fmt"
1635	depends on CMD_SETEXPR
1636	help
1637	  Evaluate format string expression and store result in an environment
1638	    variable.
1639
1640endmenu
1641
1642menu "Android support commands"
1643
1644config CMD_AB_SELECT
1645	bool "ab_select"
1646	depends on ANDROID_AB
1647	help
1648	  On Android devices with more than one boot slot (multiple copies of
1649	  the kernel and system images) this provides a command to select which
1650	  slot should be used to boot from and register the boot attempt. This
1651	  is used by the new A/B update model where one slot is updated in the
1652	  background while running from the other slot.
1653
1654endmenu
1655
1656if NET
1657
1658menuconfig CMD_NET
1659	bool "Network commands"
1660	default y
1661	imply NETDEVICES
1662
1663if CMD_NET
1664
1665config CMD_BOOTP
1666	bool "bootp"
1667	default y
1668	help
1669	  bootp - boot image via network using BOOTP/TFTP protocol
1670
1671config CMD_DHCP
1672	bool "dhcp"
1673	depends on CMD_BOOTP
1674	help
1675	  Boot image via network using DHCP/TFTP protocol
1676
1677config CMD_DHCP6
1678	bool "dhcp6"
1679	depends on IPV6
1680	help
1681	  Boot image via network using DHCPv6/TFTP protocol using IPv6.
1682
1683	  Will perform 4-message exchange with DHCPv6 server, requesting
1684	  the minimum required options to TFTP boot. Complies with RFC 8415.
1685
1686config BOOTP_MAY_FAIL
1687	bool "Allow for the BOOTP/DHCP server to not be found"
1688	depends on CMD_BOOTP
1689	help
1690	  If the DHCP server is not found after the configured retry count, the
1691	  call will fail instead of starting over.  This can be used to fail
1692	  over to Link-local IP address configuration if the DHCP server is not
1693	  available.
1694
1695config BOOTP_BOOTPATH
1696	bool "Request & store 'rootpath' from BOOTP/DHCP server"
1697	default y
1698	depends on CMD_BOOTP
1699	help
1700	  Even though the config is called BOOTP_BOOTPATH, it stores the
1701	  path in the variable 'rootpath'.
1702
1703config BOOTP_VENDOREX
1704	bool "Support vendor extensions from BOOTP/DHCP server"
1705	depends on CMD_BOOTP
1706
1707config BOOTP_BOOTFILESIZE
1708	bool "Request & store 'bootfilesize' from BOOTP/DHCP server"
1709	depends on CMD_BOOTP
1710
1711config BOOTP_DNS
1712	bool "Request & store 'dnsip' from BOOTP/DHCP server"
1713	default y
1714	depends on CMD_BOOTP
1715	help
1716	  The primary DNS server is stored as 'dnsip'. If two servers are
1717	  returned, you must set BOOTP_DNS2 to store that second server IP
1718	  also.
1719
1720config BOOTP_DNS2
1721	bool "Store 'dnsip2' from BOOTP/DHCP server"
1722	depends on BOOTP_DNS
1723	help
1724	  If a DHCP client requests the DNS server IP from a DHCP server,
1725	  it is possible that more than one DNS serverip is offered to the
1726	  client. If CONFIG_BOOTP_DNS2 is enabled, the secondary DNS
1727	  server IP will be stored in the additional environment
1728	  variable "dnsip2". The first DNS serverip is always
1729	  stored in the variable "dnsip", when BOOTP_DNS is defined.
1730
1731config BOOTP_GATEWAY
1732	bool "Request & store 'gatewayip' from BOOTP/DHCP server"
1733	default y
1734	depends on CMD_BOOTP
1735
1736config BOOTP_HOSTNAME
1737	bool "Request & store 'hostname' from BOOTP/DHCP server"
1738	default y
1739	depends on CMD_BOOTP
1740	help
1741	  The name may or may not be qualified with the local domain name.
1742
1743config BOOTP_PREFER_SERVERIP
1744	bool "serverip variable takes precedent over DHCP server IP."
1745	depends on CMD_BOOTP
1746	help
1747	  By default a BOOTP/DHCP reply will overwrite the 'serverip' variable.
1748
1749	  With this option enabled, the 'serverip' variable in the environment
1750	  takes precedence over DHCP server IP and will only be set by the DHCP
1751	  server if not already set in the environment.
1752
1753config BOOTP_SUBNETMASK
1754	bool "Request & store 'netmask' from BOOTP/DHCP server"
1755	default y
1756	depends on CMD_BOOTP
1757
1758config BOOTP_NISDOMAIN
1759	bool "Request & store 'nisdomain' from BOOTP/DHCP server"
1760	depends on CMD_BOOTP
1761
1762config BOOTP_NTPSERVER
1763	bool "Request & store 'ntpserverip' from BOOTP/DHCP server"
1764	depends on CMD_BOOTP
1765
1766config BOOTP_TIMEOFFSET
1767	bool "Request & store 'timeoffset' from BOOTP/DHCP server"
1768	depends on CMD_BOOTP && CMD_SNTP
1769
1770config CMD_PCAP
1771	bool "pcap capture"
1772	help
1773	  Selecting this will allow capturing all Ethernet packets and store
1774	  them in physical memory in a PCAP formated file,
1775	  later to be analyzed by PCAP reader application (IE. WireShark).
1776
1777config BOOTP_PXE
1778	bool "Send PXE client arch to BOOTP/DHCP server"
1779	default y
1780	depends on CMD_BOOTP && CMD_PXE
1781	help
1782	  Supported for ARM, ARM64, and x86 for now.
1783
1784config BOOTP_PXE_CLIENTARCH
1785	hex
1786	depends on BOOTP_PXE
1787	default 0x16 if ARM64
1788	default 0x15 if ARM
1789	default 0 if X86
1790
1791config BOOTP_VCI_STRING
1792	string
1793	depends on CMD_BOOTP
1794	default "U-Boot.armv7" if CPU_V7A || CPU_V7M || CPU_V7R
1795	default "U-Boot.armv8" if ARM64
1796	default "U-Boot.arm" if ARM
1797	default "U-Boot"
1798
1799if CMD_DHCP6
1800
1801config DHCP6_PXE_CLIENTARCH
1802	hex
1803	default 0x16 if ARM64
1804	default 0x15 if ARM
1805	default 0xFF
1806
1807config DHCP6_PXE_DHCP_OPTION
1808	bool "Request & store 'pxe_configfile' from DHCP6 server"
1809
1810config DHCP6_ENTERPRISE_ID
1811	int "Enterprise ID to send in DHCPv6 Vendor Class Option"
1812	default 0
1813
1814endif
1815
1816config CMD_TFTPBOOT
1817	bool "tftpboot"
1818	default y
1819	help
1820	  tftpboot - load file via network using TFTP protocol
1821
1822config CMD_TFTPPUT
1823	bool "tftp put"
1824	depends on CMD_TFTPBOOT
1825	help
1826	  TFTP put command, for uploading files to a server
1827
1828config CMD_TFTPSRV
1829	bool "tftpsrv"
1830	depends on CMD_TFTPBOOT
1831	help
1832	  Act as a TFTP server and boot the first received file
1833
1834config NET_TFTP_VARS
1835	bool "Control TFTP timeout and count through environment"
1836	depends on CMD_TFTPBOOT
1837	default y
1838	help
1839	  If set, allows controlling the TFTP timeout through the
1840	  environment variable tftptimeout, and the TFTP maximum
1841	  timeout count through the variable tftptimeoutcountmax.
1842	  If unset, timeout and maximum are hard-defined as 1 second
1843	  and 10 timouts per TFTP transfer.
1844
1845config CMD_RARP
1846	bool "rarpboot"
1847	help
1848	  Boot image via network using RARP/TFTP protocol
1849
1850config CMD_NFS
1851	bool "nfs"
1852	default y
1853	help
1854	  Boot image via network using NFS protocol.
1855
1856config NFS_TIMEOUT
1857	int "Timeout in milliseconds for NFS mounts"
1858	depends on CMD_NFS
1859	default 2000
1860	help
1861	  Timeout in milliseconds used in NFS protocol.  If you encounter
1862	  "ERROR: Cannot umount" in nfs command, try longer timeout such as
1863	  10000.
1864
1865config SYS_DISABLE_AUTOLOAD
1866	bool "Disable automatically loading files over the network"
1867	depends on CMD_BOOTP || CMD_DHCP || CMD_NFS || CMD_RARP
1868	help
1869	  Typically, commands such as "dhcp" will attempt to automatically
1870	  load a file from the network, once the initial network configuration
1871	  is complete.  Enable this option to disable this behavior and instead
1872	  require files to be loaded over the network by subsequent commands.
1873
1874config CMD_WGET
1875	bool "wget"
1876	select PROT_TCP
1877	help
1878	  wget is a simple command to download kernel, or other files,
1879	  from a http server over TCP.
1880
1881config CMD_MII
1882	bool "mii"
1883	imply CMD_MDIO
1884	help
1885	  If set, allows 802.3(clause 22) MII Management functions interface access
1886	  The management interface specified in Clause 22 provides
1887	  a simple, two signal, serial interface to connect a
1888	  Station Management entity and a managed PHY for providing access
1889	  to management parameters and services.
1890	  The interface is referred to as the MII management interface.
1891
1892config MII_INIT
1893	bool "Call mii_init() in the mii command"
1894	depends on CMD_MII && (MPC8XX_FEC || FSLDMAFE || MCFFEC)
1895
1896config CMD_MDIO
1897	bool "mdio"
1898	depends on PHYLIB
1899	help
1900	  If set, allows Enable 802.3(clause 45) MDIO interface registers access
1901	  The MDIO interface is orthogonal to the MII interface and extends
1902	  it by adding access to more registers through indirect addressing.
1903
1904config CMD_PING
1905	bool "ping"
1906	help
1907	  Send ICMP ECHO_REQUEST to network host
1908
1909config CMD_PING6
1910	bool "ping6"
1911	depends on IPV6
1912	default y if (CMD_PING && IPV6)
1913	help
1914	  Send ICMPv6 ECHO_REQUEST to network host
1915
1916config CMD_CDP
1917	bool "cdp"
1918	help
1919	  Perform CDP network configuration
1920
1921config CMD_SNTP
1922	bool "sntp"
1923	select PROT_UDP
1924	help
1925	  Synchronize RTC via network
1926
1927config CMD_DNS
1928	bool "dns"
1929	help
1930	  Lookup the IP of a hostname
1931
1932config CMD_LINK_LOCAL
1933	bool "linklocal"
1934	select LIB_RAND
1935	help
1936	  Acquire a network IP address using the link-local protocol
1937
1938config CMD_NCSI
1939	bool "ncsi"
1940	depends on PHY_NCSI
1941	help
1942	  Manually configure the attached NIC via NC-SI.
1943	  Normally this happens automatically before other network
1944	  operations.
1945
1946config IPV6_ROUTER_DISCOVERY
1947	bool "Do IPv6 router discovery"
1948	depends on IPV6
1949	help
1950	  Will automatically perform router solicitation on first IPv6
1951	  network operation
1952endif
1953
1954config CMD_ETHSW
1955	bool "ethsw"
1956	help
1957	  Allow control of L2 Ethernet switch commands. These are supported
1958	  by the vsc9953 Ethernet driver at present. Sub-commands allow
1959	  operations such as enabling / disabling a port and
1960	  viewing/maintaining the filtering database (FDB)
1961
1962config CMD_PXE
1963	bool "pxe"
1964	select PXE_UTILS
1965	help
1966	  Boot image via network using PXE protocol
1967
1968config CMD_WOL
1969	bool "wol"
1970	help
1971	  Wait for wake-on-lan Magic Packet
1972
1973endif
1974
1975menu "Misc commands"
1976
1977config CMD_2048
1978	bool "Play 2048"
1979	help
1980	  This is a simple sliding block puzzle game designed by Italian web
1981	  developer Gabriele Cirulli. The game's objective is to slide numbered
1982	  tiles on a grid to combine them to create a tile with the number
1983	  2048.
1984
1985	  This needs ANSI support on your terminal to work. It is not fully
1986	  functional on a video device.
1987
1988config CMD_BMP
1989	bool "Enable 'bmp' command"
1990	depends on VIDEO
1991	help
1992	  This provides a way to obtain information about a BMP-format image
1993	  and to display it. BMP (which presumably stands for BitMaP) is a
1994	  file format defined by Microsoft which supports images of various
1995	  depths, formats and compression methods. Headers on the file
1996	  determine the formats used. This command can be used by first loading
1997	  the image into RAM, then using this command to look at it or display
1998	  it.
1999
2000config CMD_BOOTCOUNT
2001	bool "bootcount"
2002	depends on BOOTCOUNT_LIMIT
2003	help
2004	  Enable the bootcount command, which allows interrogation and
2005	  reset of the bootcounter.
2006
2007config CMD_BSP
2008	bool "Enable board-specific commands"
2009	help
2010	  (deprecated: instead, please define a Kconfig option for each command)
2011
2012	  Some boards have board-specific commands which are only enabled
2013	  during developemnt and need to be turned off for production. This
2014	  option provides a way to control this. The commands that are enabled
2015	  vary depending on the board.
2016
2017config CMD_BLOCK_CACHE
2018	bool "blkcache - control and stats for block cache"
2019	depends on BLOCK_CACHE
2020	default y if BLOCK_CACHE
2021	help
2022	  Enable the blkcache command, which can be used to control the
2023	  operation of the cache functions.
2024	  This is most useful when fine-tuning the operation of the cache
2025	  during development, but also allows the cache to be disabled when
2026	  it might hurt performance (e.g. when using the ums command).
2027
2028config CMD_BLKMAP
2029	bool "blkmap - Composable virtual block devices"
2030	depends on BLKMAP
2031	default y if BLKMAP
2032	help
2033 	  Create virtual block devices that are backed by various sources,
2034 	  e.g. RAM, or parts of an existing block device. Though much more
2035 	  rudimentary, it borrows a lot of ideas from Linux's device mapper
2036 	  subsystem.
2037
2038	  Example use-cases:
2039	  - Treat a region of RAM as a block device, i.e. a RAM disk. This let's
2040            you extract files from filesystem images stored in RAM (perhaps as a
2041            result of a TFTP transfer).
2042	  - Create a virtual partition on an existing device. This let's you
2043            access filesystems that aren't stored at an exact partition
2044            boundary. A common example is a filesystem image embedded in an FIT
2045            image.
2046
2047config CMD_BUTTON
2048	bool "button"
2049	depends on BUTTON
2050	default y if BUTTON
2051	help
2052	  Enable the 'button' command which allows to get the status of
2053	  buttons supported by the board. The buttonss can be listed with
2054	  'button list' and state can be known with 'button <label>'.
2055	  Any button drivers can be controlled with this command, e.g.
2056	  button_gpio.
2057
2058config CMD_CACHE
2059	bool "icache or dcache"
2060	help
2061	  Enable the "icache" and "dcache" commands
2062
2063config CMD_CONITRACE
2064	bool "conitrace - trace console input codes"
2065	help
2066	  Enable the 'conitrace' command which displays the codes received
2067	  from the console input as hexadecimal numbers.
2068
2069config CMD_CLS
2070	bool "Enable clear screen command 'cls'"
2071	default y if LCD || VIDEO
2072	help
2073	  Enable the 'cls' command which clears the screen contents
2074	  on video frame buffer.
2075
2076config CMD_EFIDEBUG
2077	bool "efidebug - display/configure UEFI environment"
2078	depends on EFI_LOADER
2079	select EFI_DEVICE_PATH_TO_TEXT
2080	help
2081	  Enable the 'efidebug' command which provides a subset of UEFI
2082	  shell utility with simplified functionality. It will be useful
2083	  particularly for managing boot parameters as  well as examining
2084	  various EFI status for debugging.
2085
2086config CMD_EFICONFIG
2087	bool "eficonfig - provide menu-driven uefi variables maintenance interface"
2088	default y if !HAS_BOARD_SIZE_LIMIT
2089	depends on CMD_BOOTEFI_BOOTMGR
2090	select MENU
2091	help
2092	  Enable the 'eficonfig' command which provides the menu-driven UEFI
2093	  variable maintenance interface.
2094
2095config CMD_EXCEPTION
2096	bool "exception - raise exception"
2097	depends on ARM || RISCV || SANDBOX || X86
2098	help
2099	  Enable the 'exception' command which allows to raise an exception.
2100
2101config CMD_LED
2102	bool "led"
2103	depends on LED
2104	default y if LED
2105	help
2106	  Enable the 'led' command which allows for control of LEDs supported
2107	  by the board. The LEDs can be listed with 'led list' and controlled
2108	  with led on/off/togle/blink. Any LED drivers can be controlled with
2109	  this command, e.g. led_gpio.
2110
2111config CMD_INI
2112	bool "ini"
2113	help
2114	  Enable the 'ini' command which allows a .ini file to be parsed and
2115	  placed into environment variables. Please check the source code for
2116	  this as there is no documentation.
2117
2118config CMD_DATE
2119	bool "date"
2120	default y if DM_RTC
2121	select LIB_DATE
2122	help
2123	  Enable the 'date' command for getting/setting the time/date in RTC
2124	  devices.
2125
2126config CMD_RTC
2127	bool "rtc"
2128	depends on DM_RTC
2129	help
2130	  Enable the 'rtc' command for low-level access to RTC devices.
2131
2132config CMD_TIME
2133	bool "time"
2134	help
2135	  Run commands and summarize execution time.
2136
2137config CMD_GETTIME
2138	bool "gettime - read elapsed time"
2139	help
2140	  Enable the 'gettime' command which reads the elapsed time since
2141	  U-Boot started running. This shows the time in seconds and
2142	  milliseconds. See also the 'bootstage' command which provides more
2143	  flexibility for boot timing.
2144
2145config CMD_PAUSE
2146	bool "pause command"
2147	help
2148	  Delay execution waiting for any user input.
2149	  Useful to allow the user to read a failure log.
2150
2151config CMD_RNG
2152	bool "rng command"
2153	depends on DM_RNG
2154	default y if SANDBOX
2155	select HEXDUMP
2156	help
2157	  Print bytes from the hardware random number generator.
2158
2159config CMD_KASLRSEED
2160	bool "kaslrseed"
2161	depends on DM_RNG
2162	help
2163	  Set the kaslr-seed in the chosen node with entropy provided by a
2164	  hardware random number generator.
2165
2166config CMD_SLEEP
2167	bool "sleep"
2168	default y
2169	help
2170	  Delay execution for some time
2171
2172config CMD_MP
2173	bool "support for multiprocessor commands"
2174	depends on MP
2175	default y
2176	help
2177	  This enables commands to bringup different processors
2178	  in multiprocessor cases.
2179
2180config CMD_TIMER
2181	bool "timer"
2182	help
2183	  Access the system timer.
2184
2185config CMD_SOUND
2186	bool "sound"
2187	depends on SOUND
2188	help
2189	  This provides basic access to the U-Boot's sound support. The main
2190	  feature is to play a beep.
2191
2192	     sound init   - set up sound system
2193	     sound play   - play a sound
2194
2195config CMD_SYSBOOT
2196	bool "sysboot"
2197	select PXE_UTILS
2198	help
2199	  Boot image via local extlinux.conf file
2200
2201config CMD_QFW
2202	bool "qfw"
2203	select QFW
2204	help
2205	  This provides access to the QEMU firmware interface.  The main
2206	  feature is to allow easy loading of files passed to qemu-system
2207	  via -kernel / -initrd
2208
2209config CMD_PSTORE
2210	bool "pstore"
2211	help
2212	  This provides access to Linux PStore with Rammoops backend. The main
2213	  feature is to allow to display or save PStore records.
2214
2215	  See doc/pstore.rst for more information.
2216
2217if CMD_PSTORE
2218
2219config CMD_PSTORE_MEM_ADDR
2220	hex "Memory Address"
2221	depends on CMD_PSTORE
2222	help
2223	  Base addr used for PStore ramoops memory, should be identical to
2224	  ramoops.mem_address parameter used by kernel
2225
2226config CMD_PSTORE_MEM_SIZE
2227	hex "Memory size"
2228	depends on CMD_PSTORE
2229	default "0x10000"
2230	help
2231	  Size of PStore ramoops memory, should be identical to ramoops.mem_size
2232	  parameter used by kernel, a power of 2 and larger than the sum of the
2233	  record sizes
2234
2235config CMD_PSTORE_RECORD_SIZE
2236	hex "Dump record size"
2237	depends on CMD_PSTORE
2238	default "0x1000"
2239	help
2240	  Size of each dump done on oops/panic, should be identical to
2241	  ramoops.record_size parameter used by kernel and a power of 2
2242	  Must be non-zero
2243
2244config CMD_PSTORE_CONSOLE_SIZE
2245	hex "Kernel console log size"
2246	depends on CMD_PSTORE
2247	default "0x1000"
2248	help
2249	  Size of kernel console log, should be identical to
2250	  ramoops.console_size parameter used by kernel and a power of 2
2251	  Must be non-zero
2252
2253config CMD_PSTORE_FTRACE_SIZE
2254	hex "FTrace log size"
2255	depends on CMD_PSTORE
2256	default "0x1000"
2257	help
2258	  Size of ftrace log, should be identical to ramoops.ftrace_size
2259	  parameter used by kernel and a power of 2
2260
2261config CMD_PSTORE_PMSG_SIZE
2262	hex "User space message log size"
2263	depends on CMD_PSTORE
2264	default "0x1000"
2265	help
2266	  Size of user space message log, should be identical to
2267	  ramoops.pmsg_size parameter used by kernel and a power of 2
2268
2269config CMD_PSTORE_ECC_SIZE
2270	int "ECC size"
2271	depends on CMD_PSTORE
2272	default "0"
2273	help
2274	if non-zero, the option enables ECC support and specifies ECC buffer
2275	size in bytes (1 is a special value, means 16 bytes ECC), should be
2276	identical to ramoops.ramoops_ecc parameter used by kernel
2277
2278endif
2279
2280source "cmd/mvebu/Kconfig"
2281
2282config CMD_TERMINAL
2283	bool "terminal - provides a way to attach a serial terminal"
2284	help
2285	  Provides a 'cu'-like serial terminal command. This can be used to
2286	  access other serial ports from the system console. The terminal
2287	  is very simple with no special processing of characters. As with
2288	  cu, you can press ~. (tilde followed by period) to exit.
2289
2290config CMD_UUID
2291	bool "uuid, guid - generation of unique IDs"
2292	select LIB_UUID
2293	help
2294	  This enables two commands:
2295
2296	     uuid - generate random Universally Unique Identifier
2297	     guid - generate Globally Unique Identifier based on random UUID
2298
2299	  The two commands are very similar except for the endianness of the
2300	  output.
2301
2302config CMD_VIDCONSOLE
2303	bool "lcdputs and setcurs"
2304	depends on VIDEO
2305	default y
2306	help
2307	  Enabling this will provide 'setcurs' and 'lcdputs' commands which
2308	  support cursor positioning and drawing strings on the video
2309	  console (framebuffer).
2310
2311	  The name 'lcdputs' is a bit of a misnomer, but so named because the
2312	  video device is often an LCD.
2313
2314config CMD_SELECT_FONT
2315	bool "select font size"
2316	depends on VIDEO
2317	default n
2318	help
2319	  Enabling this will provide 'font' command.
2320	  Allows font selection at runtime.
2321
2322endmenu
2323
2324source "cmd/ti/Kconfig"
2325
2326config CMD_BOOTSTAGE
2327	bool "Enable the 'bootstage' command"
2328	depends on BOOTSTAGE
2329	help
2330	  Add a 'bootstage' command which supports printing a report
2331	  and un/stashing of bootstage data.
2332
2333menu "Power commands"
2334config CMD_PMIC
2335	bool "Enable Driver Model PMIC command"
2336	depends on DM_PMIC
2337	help
2338	  This is the pmic command, based on a driver model pmic's API.
2339	  Command features are unchanged:
2340	  - list               - list pmic devices
2341	  - pmic dev <id>      - show or [set] operating pmic device (NEW)
2342	  - pmic dump          - dump registers
2343	  - pmic read address  - read byte of register at address
2344	  - pmic write address - write byte to register at address
2345	  The only one change for this command is 'dev' subcommand.
2346
2347config CMD_REGULATOR
2348	bool "Enable Driver Model REGULATOR command"
2349	depends on DM_REGULATOR
2350	help
2351	  This command is based on driver model regulator's API.
2352	  User interface features:
2353	  - list               - list regulator devices
2354	  - regulator dev <id> - show or [set] operating regulator device
2355	  - regulator info     - print constraints info
2356	  - regulator status   - print operating status
2357	  - regulator value <val] <-f> - print/[set] voltage value [uV]
2358	  - regulator current <val>    - print/[set] current value [uA]
2359	  - regulator mode <id>        - print/[set] operating mode id
2360	  - regulator enable           - enable the regulator output
2361	  - regulator disable          - disable the regulator output
2362
2363	  The '-f' (force) option can be used for set the value which exceeds
2364	  the limits, which are found in device-tree and are kept in regulator's
2365	  uclass plat structure.
2366
2367endmenu
2368
2369menu "Security commands"
2370config CMD_AES
2371	bool "Enable the 'aes' command"
2372	select AES
2373	help
2374	  This provides a means to encrypt and decrypt data using the AES
2375	  (Advanced Encryption Standard). This algorithm uses a symetric key
2376	  and is widely used as a streaming cipher. Different key lengths are
2377	  supported by the algorithm but this command only supports 128 bits
2378	  at present.
2379
2380config CMD_BLOB
2381	bool "Enable the 'blob' command"
2382	depends on !MX6ULL && !MX6SLL && !MX6SL
2383	select IMX_HAB if ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_IMX8M
2384	help
2385	  This is used with the Freescale secure boot mechanism.
2386
2387	  Freescale's SEC block has built-in Blob Protocol which provides
2388	  a method for protecting user-defined data across system power
2389	  cycles. SEC block protects data in a data structure called a Blob,
2390	  which provides both confidentiality and integrity protection.
2391
2392	  Encapsulating data as a blob
2393	  Each time that the Blob Protocol is used to protect data, a
2394	  different randomly generated key is used to encrypt the data.
2395	  This random key is itself encrypted using a key which is derived
2396	  from SoC's non-volatile secret key and a 16 bit Key identifier.
2397	  The resulting encrypted key along with encrypted data is called a
2398	  blob. The non-volatile secure key is available for use only during
2399	  secure boot.
2400
2401	  During decapsulation, the reverse process is performed to get back
2402	  the original data.
2403
2404	  Sub-commands:
2405	    blob enc - encapsulating data as a cryptgraphic blob
2406	    blob dec - decapsulating cryptgraphic blob to get the data
2407
2408	  Syntax:
2409
2410	  blob enc src dst len km
2411
2412	  Encapsulate and create blob of data $len bytes long
2413	  at address $src and store the result at address $dst.
2414	  $km is the 16 byte key modifier is also required for
2415	  generation/use as key for cryptographic operation. Key
2416	  modifier should be 16 byte long.
2417
2418	  blob dec src dst len km
2419
2420	  Decapsulate the  blob of data at address $src and
2421	  store result of $len byte at addr $dst.
2422	  $km is the 16 byte key modifier is also required for
2423	  generation/use as key for cryptographic operation. Key
2424	  modifier should be 16 byte long.
2425
2426config CMD_HASH
2427	bool "Support 'hash' command"
2428	select HASH
2429	help
2430	  This provides a way to hash data in memory using various supported
2431	  algorithms (such as SHA1, MD5, CRC32). The computed digest can be
2432	  saved to memory or to an environment variable. It is also possible
2433	  to verify a hash against data in memory.
2434
2435config CMD_HVC
2436	bool "Support the 'hvc' command"
2437	depends on ARM_SMCCC
2438	help
2439	  Allows issuing Hypervisor Calls (HVCs). Mostly useful for
2440	  development and testing.
2441
2442config CMD_SMC
2443	bool "Support the 'smc' command"
2444	depends on ARM_SMCCC
2445	help
2446	  Allows issuing Secure Monitor Calls (SMCs). Mostly useful for
2447	  development and testing.
2448
2449config HASH_VERIFY
2450	bool "hash -v"
2451	depends on CMD_HASH
2452	help
2453	  Add -v option to verify data against a hash.
2454
2455config CMD_SCP03
2456	bool "scp03 - SCP03 enable and rotate/provision operations"
2457	depends on SCP03
2458	help
2459	  This command provides access to a Trusted Application
2460	  running in a TEE to request Secure Channel Protocol 03
2461	  (SCP03) enablement and/or rotation of its SCP03 keys.
2462
2463config CMD_TPM_V1
2464	bool
2465
2466config CMD_TPM_V2
2467	bool
2468
2469config CMD_TPM
2470	bool "Enable the 'tpm' command"
2471	depends on TPM_V1 || TPM_V2
2472	select CMD_TPM_V1 if TPM_V1
2473	select CMD_TPM_V2 if TPM_V2
2474	help
2475	  This provides a means to talk to a TPM from the command line. A wide
2476	  range of commands if provided - see 'tpm help' for details. The
2477	  command requires a suitable TPM on your board and the correct driver
2478	  must be enabled.
2479
2480if CMD_TPM
2481
2482config CMD_TPM_TEST
2483	bool "Enable the 'tpm test' command"
2484	depends on TPM_V1
2485	help
2486	  This provides a a series of tests to confirm that the TPMv1.x is
2487	  working correctly. The tests cover initialisation, non-volatile RAM,
2488	  extend, global lock and checking that timing is within expectations.
2489	  The tests pass correctly on Infineon TPMs but may need to be adjusted
2490	  for other devices.
2491
2492endif
2493
2494endmenu
2495
2496menu "Firmware commands"
2497config CMD_CROS_EC
2498	bool "Enable crosec command"
2499	depends on CROS_EC
2500	default y
2501	help
2502	  Enable command-line access to the Chrome OS EC (Embedded
2503	  Controller). This provides the 'crosec' command which has
2504	  a number of sub-commands for performing EC tasks such as
2505	  updating its flash, accessing a small saved context area
2506	  and talking to the I2C bus behind the EC (if there is one).
2507endmenu
2508
2509menu "Filesystem commands"
2510config CMD_BTRFS
2511	bool "Enable the 'btrsubvol' command"
2512	select FS_BTRFS
2513	help
2514	  This enables the 'btrsubvol' command to list subvolumes
2515	  of a BTRFS filesystem. There are no special commands for
2516	  listing BTRFS directories or loading BTRFS files - this
2517	  can be done by the generic 'fs' commands (see CMD_FS_GENERIC)
2518	  when BTRFS is enabled (see FS_BTRFS).
2519
2520config CMD_CBFS
2521	bool "Enable the 'cbfs' command"
2522	depends on FS_CBFS
2523	help
2524	  Define this to enable support for reading from a Coreboot
2525	  filesystem. This is a ROM-based filesystem used for accessing files
2526	  on systems that use coreboot as the first boot-loader and then load
2527	  U-Boot to actually boot the Operating System. Available commands are
2528	  cbfsinit, cbfsinfo, cbfsls and cbfsload.
2529
2530config CMD_CRAMFS
2531	bool "Enable the 'cramfs' command"
2532	depends on FS_CRAMFS
2533	help
2534	  This provides commands for dealing with CRAMFS (Compressed ROM
2535	  filesystem). CRAMFS is useful when space is tight since files are
2536	  compressed. Two commands are provided:
2537
2538	     cramfsls   - lists files in a cramfs image
2539	     cramfsload - loads a file from a cramfs image
2540
2541config CMD_EROFS
2542	bool "EROFS command support"
2543	select FS_EROFS
2544	help
2545	  Support for the EROFS fs
2546
2547config CMD_EXT2
2548	bool "ext2 command support"
2549	select FS_EXT4
2550	help
2551	  Enables EXT2 FS command
2552
2553config CMD_EXT4
2554	bool "ext4 command support"
2555	select FS_EXT4
2556	help
2557	  Enables EXT4 FS command
2558
2559config CMD_EXT4_WRITE
2560	depends on CMD_EXT4
2561	bool "ext4 write command support"
2562	select EXT4_WRITE
2563	help
2564	  Enables EXT4 FS write command
2565
2566config CMD_FAT
2567	bool "FAT command support"
2568	select FS_FAT
2569	help
2570	  Support for the FAT fs
2571
2572config CMD_SQUASHFS
2573	bool "SquashFS command support"
2574	select FS_SQUASHFS
2575	help
2576	  Enables SquashFS filesystem commands (e.g. load, ls).
2577
2578config CMD_FS_GENERIC
2579	bool "filesystem commands"
2580	help
2581	  Enables filesystem commands (e.g. load, ls) that work for multiple
2582	  fs types.
2583
2584config CMD_FS_UUID
2585	bool "fsuuid command"
2586	help
2587	  Enables fsuuid command for filesystem UUID.
2588
2589config CMD_JFFS2
2590	bool "jffs2 command"
2591	select FS_JFFS2
2592	help
2593	  Enables commands to support the JFFS2 (Journalling Flash File System
2594	  version 2) filesystem. This enables fsload, ls and fsinfo which
2595	  provide the ability to load files, list directories and obtain
2596	  filesystem information.
2597
2598config JFFS2_DEV
2599	string "Default device for JFFS2"
2600	depends on CMD_JFFS2
2601	default "nor0"
2602	help
2603	  The default device to use with the jffs2 command.
2604
2605config JFFS2_PART_OFFSET
2606	hex "Default offset within flash to locate the JFFS2 image"
2607	depends on CMD_JFFS2
2608	default 0x0
2609	help
2610	  The default offset within flash to locate the JFFS2 image.
2611
2612config JFFS2_PART_SIZE
2613	hex "Default size of JFFS2 partition"
2614	depends on CMD_JFFS2
2615	default 0xFFFFFFFF
2616	help
2617	  The default size of the JFFS2 partition
2618
2619config CMD_MTDPARTS
2620	bool "MTD partition support"
2621	depends on MTD
2622	help
2623	  MTD partitioning tool support.
2624	  It is strongly encouraged to avoid using this command
2625	  anymore along with 'sf', 'nand', 'onenand'. One can still
2626	  declare the partitions in the mtdparts environment variable
2627	  but better use the MTD stack and the 'mtd' command instead.
2628
2629config CMD_MTDPARTS_SPREAD
2630	bool "Padd partition size to take account of bad blocks"
2631	depends on CMD_MTDPARTS
2632	help
2633	  This enables the 'spread' sub-command of the mtdparts command.
2634	  This command will modify the existing mtdparts variable by increasing
2635	  the size of the partitions such that 1) each partition's net size is
2636	  at least as large as the size specified in the mtdparts variable and
2637	  2) each partition starts on a good block.
2638
2639config CMD_MTDPARTS_SHOW_NET_SIZES
2640	bool "Show net size (w/o bad blocks) of partitions"
2641	depends on CMD_MTDPARTS
2642	help
2643	  Adds two columns to the printed partition table showing the
2644	  effective usable size of a partition, if bad blocks are taken
2645	  into account.
2646
2647config MTDIDS_DEFAULT
2648	string "Default MTD IDs"
2649	depends on MTD || SPI_FLASH
2650	depends on !SYS_MTDPARTS_RUNTIME
2651	help
2652	  Defines a default MTD IDs list for use with MTD partitions in the
2653	  Linux MTD command line partitions format.
2654
2655config MTDPARTS_DEFAULT
2656	string "Default MTD partition scheme"
2657	depends on MTD || SPI_FLASH
2658	depends on !SYS_MTDPARTS_RUNTIME
2659	help
2660	  Defines a default MTD partitioning scheme in the Linux MTD command
2661	  line partitions format
2662
2663config CMD_REISER
2664	bool "reiser - Access to reiserfs filesystems"
2665	help
2666	  This provides two commands which operate on a resierfs filesystem,
2667	  commonly used some years ago:
2668
2669	    reiserls - list files
2670	    reiserload - load a file
2671
2672config CMD_YAFFS2
2673	bool "yaffs2 - Access of YAFFS2 filesystem"
2674	depends on YAFFS2
2675	default y
2676	help
2677	  This provides commands for accessing a YAFFS2 filesystem. Yet
2678	  Another Flash Filesystem 2 is a filesystem designed specifically
2679	  for NAND flash. It incorporates bad-block management and ensures
2680	  that device writes are sequential regardless of filesystem
2681	  activity.
2682
2683config CMD_ZFS
2684	bool "zfs - Access of ZFS filesystem"
2685	help
2686	  This provides commands to accessing a ZFS filesystem, commonly used
2687	  on Solaris systems. Two sub-commands are provided:
2688
2689	    zfsls - list files in a directory
2690	    zfsload - load a file
2691
2692	  See doc/README.zfs for more details.
2693
2694endmenu
2695
2696menu "Debug commands"
2697
2698config CMD_CBSYSINFO
2699	bool "cbsysinfo"
2700	depends on X86
2701	default y if SYS_COREBOOT
2702	help
2703	  This provides information about the coreboot sysinfo table stored in
2704	  memory by coreboot before jumping to U-Boot. It can be useful for
2705	  debugging the beaaviour of coreboot or U-Boot.
2706
2707config CMD_CYCLIC
2708	bool "cyclic - Show information about cyclic functions"
2709	depends on CYCLIC
2710	default y
2711	help
2712	  This enables the 'cyclic' command which provides information about
2713	  cyclic execution functions. This infrastructure allows registering
2714	  functions to be executed cyclically, e.g. every 100ms. These commands
2715	  are supported:
2716
2717	    cyclic list - list cyclic functions
2718	    cyclic cyclic demo <cycletime_ms> <delay_us> - register cyclic
2719		demo function
2720
2721	  See doc/develop/cyclic.rst for more details.
2722
2723config CMD_DIAG
2724	bool "diag - Board diagnostics"
2725	help
2726	  This command provides access to board diagnostic tests. These are
2727	  called Power-on Self Tests (POST). The command allows listing of
2728	  available tests and running either all the tests, or specific tests
2729	  identified by name.
2730
2731config CMD_EVENT
2732	bool "event - Show information about events"
2733	depends on EVENT
2734	default y if EVENT_DEBUG
2735	help
2736	  This enables the 'event' command which provides information about
2737	  events and event-handler routines. This can help to device event
2738	  hadling.
2739
2740config CMD_IRQ
2741	bool "irq - Show information about interrupts"
2742	depends on !ARM && !MIPS && !RISCV && !SH
2743	help
2744	  This enables two commands:
2745
2746	     interrupts - enable or disable interrupts
2747	     irqinfo - print device-specific interrupt information
2748
2749config CMD_KGDB
2750	bool "kgdb - Allow debugging of U-Boot with gdb"
2751	depends on PPC
2752	help
2753	  This enables a 'kgdb' command which allows gdb to connect to U-Boot
2754	  over a serial link for debugging purposes. This allows
2755	  single-stepping, inspecting variables, etc. This is supported only
2756	  on PowerPC at present.
2757
2758config CMD_LOG
2759	bool "log - Generation, control and access to logging"
2760	select LOG
2761	select GETOPT
2762	help
2763	  This provides access to logging features. It allows the output of
2764	  log data to be controlled to a limited extent (setting up the default
2765	  maximum log level for emitting of records). It also provides access
2766	  to a command used for testing the log system.
2767
2768config CMD_TRACE
2769	bool "trace - Support tracing of function calls and timing"
2770	depends on TRACE
2771	default y
2772	help
2773	  Enables a command to control using of function tracing within
2774	  U-Boot. This allows recording of call traces including timing
2775	  information. The command can write data to memory for exporting
2776	  for analysis (e.g. using bootchart). See doc/README.trace for full
2777	  details.
2778
2779config CMD_AVB
2780	bool "avb - Android Verified Boot 2.0 operations"
2781	depends on AVB_VERIFY
2782	help
2783	  Enables a "avb" command to perform verification of partitions using
2784	  Android Verified Boot 2.0 functionality. It includes such subcommands:
2785	    avb init - initialize avb2 subsystem
2786	    avb read_rb - read rollback index
2787	    avb write_rb - write rollback index
2788	    avb is_unlocked - check device lock state
2789	    avb get_uuid - read and print uuid of a partition
2790	    avb read_part - read data from partition
2791	    avb read_part_hex - read data from partition and output to stdout
2792	    avb write_part - write data to partition
2793	    avb verify - run full verification chain
2794
2795config CMD_STACKPROTECTOR_TEST
2796	bool "Test command for stack protector"
2797	depends on STACKPROTECTOR
2798	help
2799	  Enable stackprot_test command
2800	  The stackprot_test command will force a stack overrun to test
2801	  the stack smashing detection mechanisms.
2802
2803endmenu
2804
2805config CMD_UBI
2806	tristate "Enable UBI - Unsorted block images commands"
2807	select MTD_UBI
2808	help
2809	  UBI is a software layer above MTD layer which admits use of LVM-like
2810	  logical volumes on top of MTD devices, hides some complexities of
2811	  flash chips like wear and bad blocks and provides some other useful
2812	  capabilities. Please, consult the MTD web site for more details
2813	  (www.linux-mtd.infradead.org). Activate this option if you want
2814	  to use U-Boot UBI commands.
2815	  It is also strongly encouraged to also enable CONFIG_MTD to get full
2816	  partition support.
2817
2818config CMD_UBI_RENAME
2819       bool "Enable rename"
2820       depends on CMD_UBI
2821       help
2822         Enable a "ubi" command to rename ubi volume:
2823	   ubi rename <oldname> <newname>
2824
2825config CMD_UBIFS
2826	tristate "Enable UBIFS - Unsorted block images filesystem commands"
2827	depends on CMD_UBI
2828	default y if CMD_UBI
2829	select LZO
2830	select GZIP
2831	help
2832	  UBIFS is a file system for flash devices which works on top of UBI.
2833
2834config MMC_SPEED_MODE_SET
2835	bool "set speed mode using mmc command"
2836	depends on CMD_MMC
2837	default n
2838	help
2839	  Enable setting speed mode using mmc rescan and mmc dev commands.
2840	  The speed mode is provided as the last argument in these commands
2841	  and is indicated using the index from enum bus_mode in
2842	  include/mmc.h. A speed mode can be set only if it has already
2843	  been enabled in the device tree.
2844
2845config CMD_MESON
2846	bool "Amlogic Meson commands"
2847	depends on ARCH_MESON
2848	default y
2849	help
2850	  Enable useful commands for the Meson Soc family developed by Amlogic Inc.
2851endmenu
2852