common/autoboot.c CONFIG_AUTOBOOT
 
 
 

const char *bootdelay_process(void)
{
 char *s;
 int bootdelay;
#ifdef CONFIG_BOOTCOUNT_LIMIT
 unsigned long bootcount = 0;
 unsigned long bootlimit = 0;
#endif /* CONFIG_BOOTCOUNT_LIMIT */
#ifdef CONFIG_BOOTCOUNT_LIMIT
 bootcount = bootcount_load();
 bootcount++;
 bootcount_store(bootcount);
 setenv_ulong("bootcount", bootcount);
 bootlimit = getenv_ulong("bootlimit", 10, 0);
#endif /* CONFIG_BOOTCOUNT_LIMIT */
 s = getenv("bootdelay");
 bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;
#ifdef CONFIG_OF_CONTROL
 bootdelay = fdtdec_get_config_int(gd->fdt_blob, "bootdelay",
   bootdelay);
#endif
 debug("### main_loop entered: bootdelay=%d\n\n", bootdelay);
#if defined(CONFIG_MENU_SHOW)
 bootdelay = menu_show(bootdelay);
#endif
 bootretry_init_cmd_timeout();
#ifdef CONFIG_POST
 if (gd->flags & GD_FLG_POSTFAIL) {
  s = getenv("failbootcmd");
 } else
#endif /* CONFIG_POST */
#ifdef CONFIG_BOOTCOUNT_LIMIT
 if (bootlimit && (bootcount > bootlimit)) {
  printf("Warning: Bootlimit (%u) exceeded. Using altbootcmd.\n",
         (unsigned)bootlimit);
  s = getenv("altbootcmd");
 } else
#endif /* CONFIG_BOOTCOUNT_LIMIT */
  s = getenv("bootcmd");
 process_fdt_options(gd->fdt_blob);
 stored_bootdelay = bootdelay;
 return s;
}