1c609719bSwdenk /* 2c609719bSwdenk * (C) Copyright 2000 3c609719bSwdenk * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4c609719bSwdenk * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6c609719bSwdenk */ 7c609719bSwdenk 8a6c7ad2fSwdenk /* #define DEBUG */ 9a6c7ad2fSwdenk 10c609719bSwdenk #include <common.h> 1166ded17dSSimon Glass #include <autoboot.h> 1218d66533SSimon Glass #include <cli.h> 1324b852a7SSimon Glass #include <console.h> 14fbcdf32aSSimon Glass #include <version.h> 15bdccc4feSwdenk 169272a9b4SSimon Glass DECLARE_GLOBAL_DATA_PTR; 179272a9b4SSimon Glass 18fad63407SHeiko Schocher /* 19fad63407SHeiko Schocher * Board-specific Platform code can reimplement show_boot_progress () if needed 20fad63407SHeiko Schocher */ 213422299dSJeroen Hofstee __weak void show_boot_progress(int val) {} 22fad63407SHeiko Schocher 231364a0e4SSimon Glass static void run_preboot_environment_command(void) 241364a0e4SSimon Glass { 25bc2b4c27SSimon Glass #ifdef CONFIG_PREBOOT 261364a0e4SSimon Glass char *p; 271364a0e4SSimon Glass 28*00caae6dSSimon Glass p = env_get("preboot"); 29bc2b4c27SSimon Glass if (p != NULL) { 30bc2b4c27SSimon Glass # ifdef CONFIG_AUTOBOOT_KEYED 31bc2b4c27SSimon Glass int prev = disable_ctrlc(1); /* disable Control C checking */ 32bc2b4c27SSimon Glass # endif 33bc2b4c27SSimon Glass 34bc2b4c27SSimon Glass run_command_list(p, -1, 0); 35bc2b4c27SSimon Glass 36bc2b4c27SSimon Glass # ifdef CONFIG_AUTOBOOT_KEYED 37bc2b4c27SSimon Glass disable_ctrlc(prev); /* restore Control C checking */ 38bc2b4c27SSimon Glass # endif 39bc2b4c27SSimon Glass } 40bc2b4c27SSimon Glass #endif /* CONFIG_PREBOOT */ 411364a0e4SSimon Glass } 421364a0e4SSimon Glass 43affb2156SSimon Glass /* We come here after U-Boot is initialised and ready to process commands */ 441364a0e4SSimon Glass void main_loop(void) 451364a0e4SSimon Glass { 46affb2156SSimon Glass const char *s; 47affb2156SSimon Glass 481364a0e4SSimon Glass bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); 491364a0e4SSimon Glass 501364a0e4SSimon Glass #ifdef CONFIG_VERSION_VARIABLE 51382bee57SSimon Glass env_set("ver", version_string); /* set version variable */ 521364a0e4SSimon Glass #endif /* CONFIG_VERSION_VARIABLE */ 531364a0e4SSimon Glass 54c1bb2cd0SSimon Glass cli_init(); 551364a0e4SSimon Glass 561364a0e4SSimon Glass run_preboot_environment_command(); 57bc2b4c27SSimon Glass 58bc2b4c27SSimon Glass #if defined(CONFIG_UPDATE_TFTP) 59c7ff5528SLukasz Majewski update_tftp(0UL, NULL, NULL); 60bc2b4c27SSimon Glass #endif /* CONFIG_UPDATE_TFTP */ 61bc2b4c27SSimon Glass 62affb2156SSimon Glass s = bootdelay_process(); 63affb2156SSimon Glass if (cli_process_fdt(&s)) 64affb2156SSimon Glass cli_secure_boot_cmd(s); 65affb2156SSimon Glass 66affb2156SSimon Glass autoboot_command(s); 67c1bb2cd0SSimon Glass 686493ccc7SSimon Glass cli_loop(); 69045e6f0dSSimon Glass panic("No CLI available"); 70c609719bSwdenk } 71