]>
Commit | Line | Data |
---|---|---|
c609719b WD |
1 | /* |
2 | * (C) Copyright 2000 | |
3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | * | |
1a459660 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
c609719b WD |
6 | */ |
7 | ||
a6c7ad2f WD |
8 | /* #define DEBUG */ |
9 | ||
c609719b | 10 | #include <common.h> |
66ded17d | 11 | #include <autoboot.h> |
18d66533 | 12 | #include <cli.h> |
24b852a7 | 13 | #include <console.h> |
fbcdf32a | 14 | #include <version.h> |
bdccc4fe | 15 | |
9272a9b4 SG |
16 | DECLARE_GLOBAL_DATA_PTR; |
17 | ||
fad63407 HS |
18 | /* |
19 | * Board-specific Platform code can reimplement show_boot_progress () if needed | |
20 | */ | |
3422299d | 21 | __weak void show_boot_progress(int val) {} |
fad63407 | 22 | |
1364a0e4 | 23 | static void modem_init(void) |
bc2b4c27 | 24 | { |
bc2b4c27 | 25 | #ifdef CONFIG_MODEM_SUPPORT |
9272a9b4 SG |
26 | debug("DEBUG: main_loop: gd->do_mdm_init=%lu\n", gd->do_mdm_init); |
27 | if (gd->do_mdm_init) { | |
95856248 SG |
28 | char *str = getenv("mdm_cmd"); |
29 | ||
bc2b4c27 | 30 | setenv("preboot", str); /* set or delete definition */ |
bc2b4c27 SG |
31 | mdm_init(); /* wait for modem connection */ |
32 | } | |
33 | #endif /* CONFIG_MODEM_SUPPORT */ | |
1364a0e4 | 34 | } |
bc2b4c27 | 35 | |
1364a0e4 SG |
36 | static void run_preboot_environment_command(void) |
37 | { | |
bc2b4c27 | 38 | #ifdef CONFIG_PREBOOT |
1364a0e4 SG |
39 | char *p; |
40 | ||
bc2b4c27 SG |
41 | p = getenv("preboot"); |
42 | if (p != NULL) { | |
43 | # ifdef CONFIG_AUTOBOOT_KEYED | |
44 | int prev = disable_ctrlc(1); /* disable Control C checking */ | |
45 | # endif | |
46 | ||
47 | run_command_list(p, -1, 0); | |
48 | ||
49 | # ifdef CONFIG_AUTOBOOT_KEYED | |
50 | disable_ctrlc(prev); /* restore Control C checking */ | |
51 | # endif | |
52 | } | |
53 | #endif /* CONFIG_PREBOOT */ | |
1364a0e4 SG |
54 | } |
55 | ||
affb2156 | 56 | /* We come here after U-Boot is initialised and ready to process commands */ |
1364a0e4 SG |
57 | void main_loop(void) |
58 | { | |
affb2156 SG |
59 | const char *s; |
60 | ||
1364a0e4 SG |
61 | bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop"); |
62 | ||
63 | #ifndef CONFIG_SYS_GENERIC_BOARD | |
64 | puts("Warning: Your board does not use generic board. Please read\n"); | |
65 | puts("doc/README.generic-board and take action. Boards not\n"); | |
66 | puts("upgraded by the late 2014 may break or be removed.\n"); | |
67 | #endif | |
68 | ||
69 | modem_init(); | |
70 | #ifdef CONFIG_VERSION_VARIABLE | |
71 | setenv("ver", version_string); /* set version variable */ | |
72 | #endif /* CONFIG_VERSION_VARIABLE */ | |
73 | ||
c1bb2cd0 | 74 | cli_init(); |
1364a0e4 SG |
75 | |
76 | run_preboot_environment_command(); | |
bc2b4c27 SG |
77 | |
78 | #if defined(CONFIG_UPDATE_TFTP) | |
c7ff5528 | 79 | update_tftp(0UL, NULL, NULL); |
bc2b4c27 SG |
80 | #endif /* CONFIG_UPDATE_TFTP */ |
81 | ||
affb2156 SG |
82 | s = bootdelay_process(); |
83 | if (cli_process_fdt(&s)) | |
84 | cli_secure_boot_cmd(s); | |
85 | ||
86 | autoboot_command(s); | |
c1bb2cd0 | 87 | |
6493ccc7 | 88 | cli_loop(); |
c609719b | 89 | } |