Move this code over to using autoconf. We can add the autoconf values to
the delaykey[] array, and move the code that checks for autoconf values into
the loop.

Also change to using ARRAY_SIZE on delaykey[].

Signed-off-by: Simon Glass <s...@chromium.org>
Reviewed-by: Joe Hershberger <joe.hershber...@ni.com>
---
Changes in v4:
- Rebase on current master

Changes in v3: None
Changes in v2: None

 common/main.c | 90 ++++++++++++++++++++++-------------------------------------
 1 file changed, 34 insertions(+), 56 deletions(-)

diff --git a/common/main.c b/common/main.c
index 3a143ae..3a4754d 100644
--- a/common/main.c
+++ b/common/main.c
@@ -86,15 +86,20 @@ static int abortboot_keyed(int bootdelay)
        int abort = 0;
        uint64_t etime = endtick(bootdelay);
        struct {
-               char* str;
+               const char *str;
                u_int len;
                int retry;
+               const char *conf;       /* Configuration value */
        }
        delaykey [] = {
-               { str: getenv ("bootdelaykey"),  retry: 1 },
-               { str: getenv ("bootdelaykey2"), retry: 1 },
-               { str: getenv ("bootstopkey"),   retry: 0 },
-               { str: getenv ("bootstopkey2"),  retry: 0 },
+               { str: getenv("bootdelaykey"),  retry: 1,
+                       conf: autoconf_autoboot_delay_str() },
+               { str: getenv("bootdelaykey2"), retry: 1,
+                       conf: autoconf_autoboot_delay_str2() },
+               { str: getenv("bootstopkey"),   retry: 0,
+                       conf: autoconf_autoboot_stop_str() },
+               { str: getenv("bootstopkey2"),  retry: 0,
+                       conf: autoconf_autoboot_stop_str2() },
        };
 
        char presskey [MAX_DELAY_STOP_STR];
@@ -102,33 +107,15 @@ static int abortboot_keyed(int bootdelay)
        u_int presskey_max = 0;
        u_int i;
 
-#ifndef CONFIG_ZERO_BOOTDELAY_CHECK
-       if (bootdelay == 0)
+       if (!autoconf_zero_bootdelay_check() && bootdelay == 0)
                return 0;
-#endif
 
-#  ifdef CONFIG_AUTOBOOT_PROMPT
-       printf(CONFIG_AUTOBOOT_PROMPT);
-#  endif
-
-#  ifdef CONFIG_AUTOBOOT_DELAY_STR
-       if (delaykey[0].str == NULL)
-               delaykey[0].str = CONFIG_AUTOBOOT_DELAY_STR;
-#  endif
-#  ifdef CONFIG_AUTOBOOT_DELAY_STR2
-       if (delaykey[1].str == NULL)
-               delaykey[1].str = CONFIG_AUTOBOOT_DELAY_STR2;
-#  endif
-#  ifdef CONFIG_AUTOBOOT_STOP_STR
-       if (delaykey[2].str == NULL)
-               delaykey[2].str = CONFIG_AUTOBOOT_STOP_STR;
-#  endif
-#  ifdef CONFIG_AUTOBOOT_STOP_STR2
-       if (delaykey[3].str == NULL)
-               delaykey[3].str = CONFIG_AUTOBOOT_STOP_STR2;
-#  endif
-
-       for (i = 0; i < sizeof(delaykey) / sizeof(delaykey[0]); i ++) {
+       if (autoconf_has_autoboot_prompt())
+               printf(autoconf_autoboot_prompt());
+
+       for (i = 0; i < ARRAY_SIZE(delaykey); i++) {
+               if (delaykey[i].conf && !delaykey[i].str)
+                       delaykey[i].str = delaykey[i].conf;
                delaykey[i].len = delaykey[i].str == NULL ?
                                    0 : strlen (delaykey[i].str);
                delaykey[i].len = delaykey[i].len > MAX_DELAY_STOP_STR ?
@@ -158,7 +145,7 @@ static int abortboot_keyed(int bootdelay)
                        }
                }
 
-               for (i = 0; i < sizeof(delaykey) / sizeof(delaykey[0]); i ++) {
+               for (i = 0; i < ARRAY_SIZE(delaykey); i++) {
                        if (delaykey[i].len > 0 &&
                            presskey_len >= delaykey[i].len &&
                            memcmp (presskey + presskey_len - delaykey[i].len,
@@ -180,45 +167,39 @@ static int abortboot_keyed(int bootdelay)
        if (!abort)
                debug_bootkeys("key timeout\n");
 
-#ifdef CONFIG_SILENT_CONSOLE
-       if (abort)
+       if (autoconf_silent_console() && abort)
                gd->flags &= ~GD_FLG_SILENT;
-#endif
 
        return abort;
 }
 
 # else /* !defined(CONFIG_AUTOBOOT_KEYED) */
 
-#ifdef CONFIG_MENUKEY
-static int menukey = 0;
-#endif
+static int menukey;
 
 static int abortboot_normal(int bootdelay)
 {
        int abort = 0;
        unsigned long ts;
 
-#ifdef CONFIG_MENUPROMPT
-       printf(CONFIG_MENUPROMPT);
-#else
-       if (bootdelay >= 0)
+       if (autoconf_menuprompt())
+               printf(autoconf_menuprompt());
+       else if (bootdelay >= 0)
                printf("Hit any key to stop autoboot: %2d ", bootdelay);
-#endif
 
-#if defined CONFIG_ZERO_BOOTDELAY_CHECK
        /*
-        * Check if key already pressed
-        * Don't check if bootdelay < 0
+        * If we need to do a bootdelay check even if bootdelay is 0, do
+        * it here, since the loop below will be skipped in this case.
+        * We don't do this check if bootdelay < 0.
         */
-       if (bootdelay >= 0) {
-               if (tstc()) {   /* we got a key press   */
+       if (autoconf_zero_bootdelay_check() && bootdelay >= 0) {
+               /* Check if key already pressed */
+               if (tstc()) {   /* we got a key press */
                        (void) getc();  /* consume input        */
                        puts ("\b\b\b 0");
                        abort = 1;      /* don't auto boot      */
                }
        }
-#endif
 
        while ((bootdelay > 0) && (!abort)) {
                --bootdelay;
@@ -228,11 +209,10 @@ static int abortboot_normal(int bootdelay)
                        if (tstc()) {   /* we got a key press   */
                                abort  = 1;     /* don't auto boot      */
                                bootdelay = 0;  /* no more delay        */
-# ifdef CONFIG_MENUKEY
-                               menukey = getc();
-# else
-                               (void) getc();  /* consume input        */
-# endif
+                               if (autoconf_menukey())
+                                       menukey = getc();
+                               else
+                                       (void) getc();  /* consume input */
                                break;
                        }
                        udelay(10000);
@@ -243,10 +223,8 @@ static int abortboot_normal(int bootdelay)
 
        putc('\n');
 
-#ifdef CONFIG_SILENT_CONSOLE
-       if (abort)
+       if (autoconf_silent_console() && abort)
                gd->flags &= ~GD_FLG_SILENT;
-#endif
 
        return abort;
 }
-- 
1.8.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to