.

.

.

common/autoboot.c

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;
}

.

.

.

results matching ""

    No results matching ""