[U-Boot] [PATCH v4 2/8] main: Use autoconf for boot retry feature
Simon Glass
sjg at chromium.org
Sat Oct 26 17:14:11 CEST 2013
Change this feature to use autoconf instead of #ifdef.
Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Joe Hershberger <joe.hershberger at ni.com>
---
Changes in v4:
- Rebase on current master
- Tidy up code style nits with new checkpatch
Changes in v3:
- Fix missing && in if() statement
- Remove unneeded retry_min variable
Changes in v2: None
common/main.c | 73 ++++++++++++++++++++++++++---------------------------------
1 file changed, 32 insertions(+), 41 deletions(-)
diff --git a/common/main.c b/common/main.c
index 6f475f0..54c5df8 100644
--- a/common/main.c
+++ b/common/main.c
@@ -49,17 +49,11 @@ static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen);
static const char erase_seq[] = "\b \b"; /* erase sequence */
static const char tab_seq[] = " "; /* used to expand TABs */
-#ifdef CONFIG_BOOT_RETRY_TIME
static uint64_t endtime = 0; /* must be set, default is instant timeout */
static int retry_time = -1; /* -1 so can call readline before main_loop */
-#endif
#define endtick(seconds) (get_ticks() + (uint64_t)(seconds) * get_tbclk())
-#ifndef CONFIG_BOOT_RETRY_MIN
-#define CONFIG_BOOT_RETRY_MIN CONFIG_BOOT_RETRY_TIME
-#endif
-
#ifdef CONFIG_MODEM_SUPPORT
int do_mdm_init = 0;
extern void mdm_init(void); /* defined in board.c */
@@ -158,11 +152,10 @@ static int abortboot_keyed(int bootdelay)
delaykey[i].retry ? "delay" :
"stop");
-# ifdef CONFIG_BOOT_RETRY_TIME
- /* don't retry auto boot */
- if (! delaykey[i].retry)
+ /* don't retry auto boot? */
+ if (autoconf_boot_retry_time() &&
+ !delaykey[i].retry)
retry_time = -1;
-# endif
abort = 1;
}
}
@@ -352,9 +345,8 @@ static void process_boot_delay(void)
#if defined(CONFIG_MENU_SHOW)
bootdelay = menu_show(bootdelay);
#endif
-# ifdef CONFIG_BOOT_RETRY_TIME
- init_cmd_timeout ();
-# endif /* CONFIG_BOOT_RETRY_TIME */
+ if (autoconf_boot_retry_time())
+ init_cmd_timeout();
#ifdef CONFIG_POST
if (gd->flags & GD_FLG_POSTFAIL) {
@@ -483,14 +475,12 @@ void main_loop(void)
for (;;);
#else
for (;;) {
-#ifdef CONFIG_BOOT_RETRY_TIME
- if (rc >= 0) {
+ if (autoconf_boot_retry_time() && rc >= 0) {
/* Saw enough of a valid command to
* restart the timeout.
*/
reset_cmd_timeout();
}
-#endif
len = readline (CONFIG_SYS_PROMPT);
flag = 0; /* assume no special flags for now */
@@ -498,19 +488,16 @@ void main_loop(void)
strcpy (lastcommand, console_buffer);
else if (len == 0)
flag |= CMD_FLAG_REPEAT;
-#ifdef CONFIG_BOOT_RETRY_TIME
- else if (len == -2) {
+ else if (autoconf_boot_retry_time() && len == -2) {
/* -2 means timed out, retry autoboot
*/
- puts ("\nTimed out waiting for command\n");
-# ifdef CONFIG_RESET_TO_RETRY
+ puts("\nTimed out waiting for command\n");
/* Reinit board to run initialization code again */
- do_reset (NULL, 0, 0, NULL);
-# else
- return; /* retry autoboot */
-# endif
+ if (autoconf_reset_to_retry())
+ do_reset(NULL, 0, 0, NULL);
+ else
+ return; /* retry autoboot */
}
-#endif
if (len == -1)
puts ("<INTERRUPT>\n");
@@ -525,6 +512,10 @@ void main_loop(void)
#endif /*CONFIG_SYS_HUSH_PARSER*/
}
+/*
+ * Use ifdef here for the benefit of those archs not using
+ * -ffunction-sections, since these functions are exported.
+ */
#ifdef CONFIG_BOOT_RETRY_TIME
/***************************************************************************
* initialize command line timeout
@@ -536,10 +527,10 @@ void init_cmd_timeout(void)
if (s != NULL)
retry_time = (int)simple_strtol(s, NULL, 10);
else
- retry_time = CONFIG_BOOT_RETRY_TIME;
+ retry_time = autoconf_boot_retry_time();
- if (retry_time >= 0 && retry_time < CONFIG_BOOT_RETRY_MIN)
- retry_time = CONFIG_BOOT_RETRY_MIN;
+ if (retry_time >= 0 && retry_time < autoconf_boot_retry_min())
+ retry_time = autoconf_boot_retry_min();
}
/***************************************************************************
@@ -761,13 +752,13 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
cread_add_str(buf, init_len, 1, &num, &eol_num, buf, *len);
while (1) {
-#ifdef CONFIG_BOOT_RETRY_TIME
- while (!tstc()) { /* while no incoming data */
- if (retry_time >= 0 && get_ticks() > endtime)
- return (-2); /* timed out */
- WATCHDOG_RESET();
+ if (autoconf_boot_retry_time()) {
+ while (!tstc()) { /* while no incoming data */
+ if (retry_time >= 0 && get_ticks() > endtime)
+ return -2; /* timed out */
+ WATCHDOG_RESET();
+ }
}
-#endif
if (first && timeout) {
uint64_t etime = endtick(timeout);
@@ -1039,14 +1030,14 @@ int readline_into_buffer(const char *const prompt, char *buffer, int timeout)
col = plen;
for (;;) {
-#ifdef CONFIG_BOOT_RETRY_TIME
- while (!tstc()) { /* while no incoming data */
- if (retry_time >= 0 && get_ticks() > endtime)
- return (-2); /* timed out */
- WATCHDOG_RESET();
+ if (autoconf_boot_retry_time()) {
+ while (!tstc()) { /* while no incoming data */
+ if (retry_time >= 0 && get_ticks() > endtime)
+ return -2; /* timed out */
+ WATCHDOG_RESET();
+ }
}
-#endif
- WATCHDOG_RESET(); /* Trigger watchdog, if needed */
+ WATCHDOG_RESET(); /* Trigger watchdog, if needed */
#ifdef CONFIG_SHOW_ACTIVITY
while (!tstc()) {
--
1.8.4.1
More information about the U-Boot
mailing list