mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	As the help message of CONFIG_BOOTDELAY says, CONFIG_BOOTDELAY=-2
means the autoboot with no delay, with no abort check even if
CONFIG_ZERO_BOOTDELAY_CHECK is defined.
To sum up, the autoboot behaves as follows:
 [1] CONFIG_BOOTDELAY=0 && CONFIG_ZERO_BOOTDELAY_CHECK=y
    autoboot with no delay, but you can abort it by key input
 [2] CONFIG_BOOTDELAY=0 && CONFIG_ZERO_BOOTDELAY_CHECK=n
    autoboot with no delay, with no check for abort
 [3] CONFIG_BOOTDELAY=-1
    disable autoboot
 [4] CONFIG_BOOTDELAY=-2
    autoboot with no delay, with no check for abort
As you notice, [2] and [4] come to the same result, which means we
do not need CONFIG_ZERO_BOOTDELAY_CHECK.  We can control all the
cases only by CONFIG_BOOTDELAY, like this:
 [1] CONFIG_BOOTDELAY=0
    autoboot with no delay, but you can abort it by key input
 [2] CONFIG_BOOTDELAY=-1
    disable autoboot
 [3] CONFIG_BOOTDELAY=-2
    autoboot with no delay, with no check for abort
This commit converts the logic as follow:
  CONFIG_BOOTDELAY=0 && CONFIG_ZERO_BOOTDELAY_CHECK=n
    --> CONFIG_BOOTDELAY=-2
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Vladimir Zapolskiy <vz@mleia.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
Acked-by: Christian Riesch <christian.riesch@omicronenergy.com>
Acked-by: Hannes Schmelzer <hannes.schmelzer@br-automation.com>
		
	
			
		
			
				
	
	
		
			140 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  * (C) Copyright 2001
 | |
|  * Dave Ellis, SIXNET, dge@sixnetio.com
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| Using autoboot configuration options
 | |
| ====================================
 | |
| 
 | |
| The basic autoboot configuration options are documented in the main
 | |
| U-Boot README. See it for details. They are:
 | |
| 
 | |
|   bootdelay
 | |
|   bootcmd
 | |
|   CONFIG_BOOTDELAY
 | |
|   CONFIG_BOOTCOMMAND
 | |
| 
 | |
| Some additional options that make autoboot safer in a production
 | |
| product are documented here.
 | |
| 
 | |
| Why use them?
 | |
| -------------
 | |
| 
 | |
| The basic autoboot feature allows a system to automatically boot to
 | |
| the real application (such as Linux) without a user having to enter
 | |
| any commands. If any key is pressed before the boot delay time
 | |
| expires, U-Boot stops the autoboot process, gives a U-Boot prompt
 | |
| and waits forever for a command. That's a good thing if you pressed a
 | |
| key because you wanted to get the prompt.
 | |
| 
 | |
| It's not so good if the key press was a stray character on the
 | |
| console serial port, say because a user who knows nothing about
 | |
| U-Boot pressed a key before the system had time to boot. It's even
 | |
| worse on an embedded product that doesn't have a console during
 | |
| normal use. The modem plugged into that console port sends a
 | |
| character at the wrong time and the system hangs, with no clue as to
 | |
| why it isn't working.
 | |
| 
 | |
| You might want the system to autoboot to recover after an external
 | |
| configuration program stops autoboot. If the configuration program
 | |
| dies or loses its connection (modems can disconnect at the worst
 | |
| time) U-Boot will patiently wait forever for it to finish.
 | |
| 
 | |
| These additional configuration options can help provide a system that
 | |
| boots when it should, but still allows access to U-Boot.
 | |
| 
 | |
| What they do
 | |
| ------------
 | |
| 
 | |
|   CONFIG_BOOT_RETRY_TIME
 | |
|   CONFIG_BOOT_RETRY_MIN
 | |
| 
 | |
|   "bootretry" environment variable
 | |
| 
 | |
| 	These options determine what happens after autoboot is
 | |
| 	stopped and U-Boot is waiting for commands.
 | |
| 
 | |
| 	CONFIG_BOOT_RETRY_TIME must be defined to enable the boot
 | |
| 	retry feature. If the environment variable "bootretry" is
 | |
| 	found then its value is used, otherwise the retry timeout is
 | |
| 	CONFIG_BOOT_RETRY_TIME. CONFIG_BOOT_RETRY_MIN is optional and
 | |
| 	defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
 | |
| 
 | |
| 	If the retry timeout is negative, the U-Boot command prompt
 | |
| 	never times out. Otherwise it is forced to be at least
 | |
| 	CONFIG_BOOT_RETRY_MIN seconds. If no valid U-Boot command is
 | |
| 	entered before the specified time the boot delay sequence is
 | |
| 	restarted. Each command that U-Boot executes restarts the
 | |
| 	timeout.
 | |
| 
 | |
| 	If CONFIG_BOOT_RETRY_TIME < 0 the feature is there, but
 | |
| 	doesn't do anything unless the environment variable
 | |
| 	"bootretry" is >= 0.
 | |
| 
 | |
|   CONFIG_AUTOBOOT_KEYED
 | |
|   CONFIG_AUTOBOOT_KEYED_CTRLC
 | |
|   CONFIG_AUTOBOOT_PROMPT
 | |
|   CONFIG_AUTOBOOT_DELAY_STR
 | |
|   CONFIG_AUTOBOOT_STOP_STR
 | |
| 
 | |
|   "bootdelaykey"  environment variable
 | |
|   "bootstopkey"	  environment variable
 | |
| 
 | |
| 	These options give more control over stopping autoboot. When
 | |
| 	they are used a specific character or string is required to
 | |
| 	stop or delay autoboot.
 | |
| 
 | |
| 	Define CONFIG_AUTOBOOT_KEYED (no value required) to enable
 | |
| 	this group of options.	CONFIG_AUTOBOOT_DELAY_STR,
 | |
| 	CONFIG_AUTOBOOT_STOP_STR or both should be specified (or
 | |
| 	specified by the corresponding environment variable),
 | |
| 	otherwise there is no way to stop autoboot.
 | |
| 
 | |
| 	CONFIG_AUTOBOOT_PROMPT is displayed before the boot delay
 | |
| 	selected by CONFIG_BOOTDELAY starts. If it is not defined
 | |
| 	there is no output indicating that autoboot is in progress.
 | |
| 
 | |
| 	Note that CONFIG_AUTOBOOT_PROMPT is used as the (only)
 | |
| 	argument to a printf() call, so it may contain '%' format
 | |
| 	specifications, provided that it also includes, sepearated by
 | |
| 	commas exactly like in a printf statement, the required
 | |
| 	arguments. It is the responsibility of the user to select only
 | |
| 	such arguments that are valid in the given context. A
 | |
| 	reasonable prompt could be defined as
 | |
| 
 | |
| 		#define CONFIG_AUTOBOOT_PROMPT \
 | |
| 			"autoboot in %d seconds\n",bootdelay
 | |
| 
 | |
| 	If CONFIG_AUTOBOOT_DELAY_STR or "bootdelaykey" is specified
 | |
| 	and this string is received from console input before
 | |
| 	autoboot starts booting, U-Boot gives a command prompt. The
 | |
| 	U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
 | |
| 	used, otherwise it never times out.
 | |
| 
 | |
| 	If CONFIG_AUTOBOOT_STOP_STR or "bootstopkey" is specified and
 | |
| 	this string is received from console input before autoboot
 | |
| 	starts booting, U-Boot gives a command prompt. The U-Boot
 | |
| 	prompt never times out, even if CONFIG_BOOT_RETRY_TIME is
 | |
| 	used.
 | |
| 
 | |
| 	The string recognition is not very sophisticated. If a
 | |
| 	partial match is detected, the first non-matching character
 | |
| 	is checked to see if starts a new match. There is no check
 | |
| 	for a shorter partial match, so it's best if the first
 | |
| 	character of a key string does not appear in the rest of the
 | |
| 	string.
 | |
| 
 | |
| 	The CONFIG_AUTOBOOT_KEYED_CTRLC #define allows for the boot
 | |
| 	sequence to be interrupted by ctrl-c, in addition to the
 | |
| 	"bootdelaykey" and "bootstopkey". Setting this variable
 | |
| 	provides an escape sequence from the limited "password"
 | |
| 	strings.
 | |
| 
 | |
|   CONFIG_RESET_TO_RETRY
 | |
| 
 | |
| 	(Only effective when CONFIG_BOOT_RETRY_TIME is also set)
 | |
| 	After the countdown timed out, the board will be reset to restart
 | |
| 	again.
 |