1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2000 3*4882a593Smuzhiyun * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* #define DEBUG */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <common.h> 11*4882a593Smuzhiyun #include <autoboot.h> 12*4882a593Smuzhiyun #include <cli.h> 13*4882a593Smuzhiyun #include <console.h> 14*4882a593Smuzhiyun #include <version.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun DECLARE_GLOBAL_DATA_PTR; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* 19*4882a593Smuzhiyun * Board-specific Platform code can reimplement show_boot_progress () if needed 20*4882a593Smuzhiyun */ show_boot_progress(int val)21*4882a593Smuzhiyun__weak void show_boot_progress(int val) {} 22*4882a593Smuzhiyun run_preboot_environment_command(void)23*4882a593Smuzhiyunstatic void run_preboot_environment_command(void) 24*4882a593Smuzhiyun { 25*4882a593Smuzhiyun #ifdef CONFIG_PREBOOT 26*4882a593Smuzhiyun char *p; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun p = env_get("preboot"); 29*4882a593Smuzhiyun if (p != NULL) { 30*4882a593Smuzhiyun # ifdef CONFIG_AUTOBOOT_KEYED 31*4882a593Smuzhiyun int prev = disable_ctrlc(1); /* disable Control C checking */ 32*4882a593Smuzhiyun # endif 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun run_command_list(p, -1, 0); 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun # ifdef CONFIG_AUTOBOOT_KEYED 37*4882a593Smuzhiyun disable_ctrlc(prev); /* restore Control C checking */ 38*4882a593Smuzhiyun # endif 39*4882a593Smuzhiyun } 40*4882a593Smuzhiyun #endif /* CONFIG_PREBOOT */ 41*4882a593Smuzhiyun } 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun extern void ctrl_menu_show(void); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* We come here after U-Boot is initialised and ready to process commands */ main_loop(void)46*4882a593Smuzhiyunvoid main_loop(void) 47*4882a593Smuzhiyun { 48*4882a593Smuzhiyun const char *s; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #ifdef CONFIG_VERSION_VARIABLE 53*4882a593Smuzhiyun env_set("ver", version_string); /* set version variable */ 54*4882a593Smuzhiyun #endif /* CONFIG_VERSION_VARIABLE */ 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun cli_init(); 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun run_preboot_environment_command(); 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #if defined(CONFIG_UPDATE_TFTP) 61*4882a593Smuzhiyun update_tftp(0UL, NULL, NULL); 62*4882a593Smuzhiyun #endif /* CONFIG_UPDATE_TFTP */ 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun s = bootdelay_process(); 65*4882a593Smuzhiyun if (cli_process_fdt(&s)) 66*4882a593Smuzhiyun cli_secure_boot_cmd(s); 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun autoboot_command(s); 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun ctrl_menu_show(); 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun cli_loop(); 73*4882a593Smuzhiyun panic("No CLI available"); 74*4882a593Smuzhiyun } 75