Blame view
common/board_r.c
19.1 KB
83d290c56 SPDX: Convert all... |
1 |
// SPDX-License-Identifier: GPL-2.0+ |
6f6430d72 Introduce generic... |
2 3 4 5 6 7 8 9 |
/* * Copyright (c) 2011 The Chromium OS Authors. * (C) Copyright 2002-2006 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> * Marius Groeger <mgroeger@sysgo.de> |
6f6430d72 Introduce generic... |
10 11 12 |
*/ #include <common.h> |
12d738ae4 api: Add a header... |
13 |
#include <api.h> |
1eb69ae49 common: Move ARM ... |
14 |
#include <cpu_func.h> |
a6f2aafe0 common: Move jump... |
15 |
#include <exports.h> |
db41d65a9 common: Move hang... |
16 |
#include <hang.h> |
8e8ccfe1a common: Move the ... |
17 |
#include <image.h> |
36bf446b6 common: Move enab... |
18 |
#include <irq_func.h> |
5e6267af3 common: Move rese... |
19 |
#include <net.h> |
3db711085 crc32: Use the cr... |
20 |
#include <u-boot/crc.h> |
c2240d4db Adjust board_r.c ... |
21 22 23 24 |
/* TODO: can we just include all these headers whether needed or not? */ #if defined(CONFIG_CMD_BEDBUG) #include <bedbug/type.h> #endif |
3c10dc95b binman: Add a lib... |
25 |
#include <binman.h> |
cbb2df201 CONFIG_NEEDS_MANU... |
26 |
#include <command.h> |
24b852a7a Move console defi... |
27 |
#include <console.h> |
1ce601767 dm: Set up driver... |
28 |
#include <dm.h> |
3f989e7b0 env: Move env_rel... |
29 |
#include <env.h> |
f3998fdc4 env: Rename envir... |
30 |
#include <env_internal.h> |
6f6430d72 Introduce generic... |
31 |
#include <fdtdec.h> |
c2240d4db Adjust board_r.c ... |
32 |
#include <ide.h> |
6b8d3ceaf common: Move main... |
33 |
#include <init.h> |
6f6430d72 Introduce generic... |
34 |
#include <initcall.h> |
c2240d4db Adjust board_r.c ... |
35 36 37 |
#if defined(CONFIG_CMD_KGDB) #include <kgdb.h> #endif |
c30b7adbc common: Move inte... |
38 |
#include <irq_func.h> |
6f6430d72 Introduce generic... |
39 |
#include <malloc.h> |
0eb25b619 common: Make sure... |
40 |
#include <mapmem.h> |
c2240d4db Adjust board_r.c ... |
41 42 43 |
#ifdef CONFIG_BITBANGMII #include <miiphy.h> #endif |
6f6430d72 Introduce generic... |
44 45 |
#include <mmc.h> #include <nand.h> |
3af86a4e2 dm: Build a live ... |
46 |
#include <of_live.h> |
6f6430d72 Introduce generic... |
47 |
#include <onenand_uboot.h> |
c2240d4db Adjust board_r.c ... |
48 |
#include <scsi.h> |
6f6430d72 Introduce generic... |
49 |
#include <serial.h> |
c3e4430ef common: Drop glob... |
50 |
#include <status_led.h> |
6f6430d72 Introduce generic... |
51 |
#include <stdio_dev.h> |
1057e6cfe timer: Set up the... |
52 |
#include <timer.h> |
71c52dba2 Add trace support... |
53 |
#include <trace.h> |
c2240d4db Adjust board_r.c ... |
54 55 56 57 |
#include <watchdog.h> #ifdef CONFIG_ADDR_MAP #include <asm/mmu.h> #endif |
6f6430d72 Introduce generic... |
58 |
#include <asm/sections.h> |
1ce601767 dm: Set up driver... |
59 |
#include <dm/root.h> |
c2240d4db Adjust board_r.c ... |
60 |
#include <linux/compiler.h> |
1ce601767 dm: Set up driver... |
61 |
#include <linux/err.h> |
50149ea37 efi_loader: Add r... |
62 |
#include <efi_loader.h> |
06985289d watchdog: Impleme... |
63 |
#include <wdt.h> |
49b10cb49 gpio: fixes for g... |
64 |
#if defined(CONFIG_GPIO_HOG) |
5fc7cf8c8 gpio: add gpio-ho... |
65 66 |
#include <asm/gpio.h> #endif |
a2018ab0d MLK-18591-3 andro... |
67 68 69 |
#ifdef CONFIG_FSL_FASTBOOT #include <fb_fsl.h> #endif |
6f6430d72 Introduce generic... |
70 71 72 73 |
DECLARE_GLOBAL_DATA_PTR; ulong monitor_flash_len; |
dd2a6cd0f common: board: us... |
74 |
__weak int board_flash_wp_on(void) |
c2240d4db Adjust board_r.c ... |
75 76 77 78 79 80 81 82 |
{ /* * Most flashes can't be detected when write protection is enabled, * so provide a way to let U-Boot gracefully ignore write protected * devices. */ return 0; } |
dd2a6cd0f common: board: us... |
83 |
__weak void cpu_secondary_init_r(void) |
c2240d4db Adjust board_r.c ... |
84 85 |
{ } |
c2240d4db Adjust board_r.c ... |
86 87 88 89 90 91 92 93 94 95 96 97 98 |
static int initr_secondary_cpu(void) { /* * after non-volatile devices & environment is setup and cpu code have * another round to deal with any initialization that might require * full access to the environment or loading of some image (firmware) * from a non-volatile device */ /* TODO: maybe define this for all archs? */ cpu_secondary_init_r(); return 0; } |
6f6430d72 Introduce generic... |
99 |
|
71c52dba2 Add trace support... |
100 101 102 103 104 105 106 107 |
static int initr_trace(void) { #ifdef CONFIG_TRACE trace_init(gd->trace_buff, CONFIG_TRACE_BUFFER_SIZE); #endif return 0; } |
6f6430d72 Introduce generic... |
108 109 |
static int initr_reloc(void) { |
c9356be30 dm: Split the sim... |
110 111 |
/* tell others: relocation done */ gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT; |
6f6430d72 Introduce generic... |
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
return 0; } #ifdef CONFIG_ARM /* * Some of these functions are needed purely because the functions they * call return void. If we change them to return 0, these stubs can go away. */ static int initr_caches(void) { /* Enable caches */ enable_caches(); return 0; } #endif |
c2240d4db Adjust board_r.c ... |
128 129 130 131 |
__weak int fixup_cpu(void) { return 0; } |
6f6430d72 Introduce generic... |
132 133 |
static int initr_reloc_global_data(void) { |
b60eff31f arm: remove unnee... |
134 135 |
#ifdef __ARM__ monitor_flash_len = _end - __image_copy_start; |
068feb9b8 riscv: Modify gen... |
136 |
#elif defined(CONFIG_NDS32) || defined(CONFIG_RISCV) |
2e88bb28d NDS32: Generic Bo... |
137 |
monitor_flash_len = (ulong)&_end - (ulong)&_start; |
5ff10aa7e nios2: add generi... |
138 |
#elif !defined(CONFIG_SANDBOX) && !defined(CONFIG_NIOS2) |
a0ba279ac generic_board: re... |
139 |
monitor_flash_len = (ulong)&__init_end - gd->relocaddr; |
6f6430d72 Introduce generic... |
140 |
#endif |
c2240d4db Adjust board_r.c ... |
141 142 143 144 145 146 |
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) /* * The gd->cpu pointer is set to an address in flash before relocation. * We need to update it to point to the same CPU entry in RAM. * TODO: why not just add gd->reloc_ofs? */ |
a0ba279ac generic_board: re... |
147 |
gd->arch.cpu += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; |
c2240d4db Adjust board_r.c ... |
148 149 150 151 152 153 154 |
/* * If we didn't know the cpu mask & # cores, we can save them of * now rather than 'computing' them constantly */ fixup_cpu(); #endif |
8d8ee47e0 env: Add CONFIG_S... |
155 |
#ifdef CONFIG_SYS_RELOC_GD_ENV_ADDR |
c2240d4db Adjust board_r.c ... |
156 |
/* |
6c6add602 configs: drop CON... |
157 158 |
* Relocate the early env_addr pointer unless we know it is not inside * the binary. Some systems need this and for the rest, it doesn't hurt. |
c2240d4db Adjust board_r.c ... |
159 |
*/ |
6c6add602 configs: drop CON... |
160 |
gd->env_addr += gd->reloc_off; |
c2240d4db Adjust board_r.c ... |
161 |
#endif |
e9acb9ea4 common: board: Do... |
162 163 |
#ifdef CONFIG_OF_EMBED /* |
92f84b67e common: board_r: ... |
164 165 166 |
* The fdt_blob needs to be moved to new relocation address * incase of FDT blob is embedded with in image */ |
e9acb9ea4 common: board: Do... |
167 168 |
gd->fdt_blob += gd->reloc_off; #endif |
50149ea37 efi_loader: Add r... |
169 |
#ifdef CONFIG_EFI_LOADER |
e7ac009b0 efi_loader: move ... |
170 171 172 173 174 175 |
/* * On the ARM architecture gd is mapped to a fixed register (r9 or x18). * As this register may be overwritten by an EFI payload we save it here * and restore it on every callback entered. */ efi_save_gd(); |
50149ea37 efi_loader: Add r... |
176 177 |
efi_runtime_relocate(gd->relocaddr, NULL); #endif |
e9acb9ea4 common: board: Do... |
178 |
|
c2240d4db Adjust board_r.c ... |
179 |
return 0; |
6f6430d72 Introduce generic... |
180 181 182 183 184 185 186 |
} static int initr_serial(void) { serial_initialize(); return 0; } |
4c2cb1151 common/board_f: e... |
187 |
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_MIPS) |
c2240d4db Adjust board_r.c ... |
188 189 190 191 192 |
static int initr_trap(void) { /* * Setup trap handlers */ |
e310b93ec m68k: add generic... |
193 |
#if defined(CONFIG_PPC) |
a0ba279ac generic_board: re... |
194 |
trap_init(gd->relocaddr); |
e310b93ec m68k: add generic... |
195 196 197 |
#else trap_init(CONFIG_SYS_SDRAM_BASE); #endif |
c2240d4db Adjust board_r.c ... |
198 199 200 201 202 203 204 205 206 207 208 209 |
return 0; } #endif #ifdef CONFIG_ADDR_MAP static int initr_addr_map(void) { init_addr_map(); return 0; } #endif |
6f6430d72 Introduce generic... |
210 211 212 213 214 215 216 |
#ifdef CONFIG_POST static int initr_post_backlog(void) { post_output_backlog(); return 0; } #endif |
c2240d4db Adjust board_r.c ... |
217 218 219 220 221 222 223 224 225 226 227 |
#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) static int initr_unlock_ram_in_cache(void) { unlock_ram_in_cache(); /* it's time to unlock D-cache in e500 */ return 0; } #endif #ifdef CONFIG_PCI static int initr_pci(void) { |
ff3e077bd dm: pci: Add a uc... |
228 |
#ifndef CONFIG_DM_PCI |
c2240d4db Adjust board_r.c ... |
229 |
pci_init(); |
ff3e077bd dm: pci: Add a uc... |
230 |
#endif |
c2240d4db Adjust board_r.c ... |
231 232 233 234 |
return 0; } #endif |
c2240d4db Adjust board_r.c ... |
235 236 237 238 239 240 241 242 |
static int initr_barrier(void) { #ifdef CONFIG_PPC /* TODO: Can we not use dmb() macros for this? */ asm("sync ; isync"); #endif return 0; } |
6f6430d72 Introduce generic... |
243 244 245 |
static int initr_malloc(void) { ulong malloc_start; |
f1896c45c spl: make SPL and... |
246 |
#if CONFIG_VAL(SYS_MALLOC_F_LEN) |
d59476b64 Add a simple mall... |
247 248 249 250 |
debug("Pre-reloc malloc() used %#lx bytes (%ld KB) ", gd->malloc_ptr, gd->malloc_ptr / 1024); #endif |
6f6430d72 Introduce generic... |
251 |
/* The malloc area is immediately below the monitor copy in DRAM */ |
5e0404ff8 board_f: fix nonc... |
252 253 254 255 |
/* * This value MUST match the value of gd->start_addr_sp in board_f.c: * reserve_noncached(). */ |
a0ba279ac generic_board: re... |
256 |
malloc_start = gd->relocaddr - TOTAL_MALLOC_LEN; |
a733b06b6 sandbox: Switch o... |
257 258 |
mem_malloc_init((ulong)map_sysmem(malloc_start, TOTAL_MALLOC_LEN), TOTAL_MALLOC_LEN); |
6f6430d72 Introduce generic... |
259 260 |
return 0; } |
9854a8748 console: Add a co... |
261 262 263 264 265 266 267 268 |
static int initr_console_record(void) { #if defined(CONFIG_CONSOLE_RECORD) return console_record_init(); #else return 0; #endif } |
671fa63e7 common/board_r: R... |
269 270 271 272 273 274 275 |
#ifdef CONFIG_SYS_NONCACHED_MEMORY static int initr_noncached(void) { noncached_init(); return 0; } #endif |
3af86a4e2 dm: Build a live ... |
276 277 278 |
#ifdef CONFIG_OF_LIVE static int initr_of_live(void) { |
a132f7708 bootstage: Record... |
279 280 281 282 283 284 285 286 287 |
int ret; bootstage_start(BOOTSTAGE_ID_ACCUM_OF_LIVE, "of_live"); ret = of_live_build(gd->fdt_blob, (struct device_node **)&gd->of_root); bootstage_accum(BOOTSTAGE_ID_ACCUM_OF_LIVE); if (ret) return ret; return 0; |
3af86a4e2 dm: Build a live ... |
288 289 |
} #endif |
1ce601767 dm: Set up driver... |
290 291 292 |
#ifdef CONFIG_DM static int initr_dm(void) { |
1057e6cfe timer: Set up the... |
293 |
int ret; |
ab7cd6279 dm: Support drive... |
294 295 296 |
/* Save the pre-reloc driver model and start a new one */ gd->dm_root_f = gd->dm_root; gd->dm_root = NULL; |
d74d6b444 dm: timer: Correc... |
297 298 299 |
#ifdef CONFIG_TIMER gd->timer = NULL; #endif |
63c5bf48d bootstage: Record... |
300 |
bootstage_start(BOOTSTATE_ID_ACCUM_DM_R, "dm_r"); |
1057e6cfe timer: Set up the... |
301 |
ret = dm_init_and_scan(false); |
63c5bf48d bootstage: Record... |
302 |
bootstage_accum(BOOTSTATE_ID_ACCUM_DM_R); |
1057e6cfe timer: Set up the... |
303 304 |
if (ret) return ret; |
1057e6cfe timer: Set up the... |
305 306 |
return 0; |
1ce601767 dm: Set up driver... |
307 308 |
} #endif |
dd0edcb25 board_r: Move ear... |
309 310 311 312 313 314 315 316 317 318 319 320 |
static int initr_dm_devices(void) { int ret; if (IS_ENABLED(CONFIG_TIMER_EARLY)) { ret = dm_timer_init(); if (ret) return ret; } return 0; } |
881c124ab dm: timer: Avoid ... |
321 322 |
static int initr_bootstage(void) { |
881c124ab dm: timer: Avoid ... |
323 324 325 326 |
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r"); return 0; } |
6f6430d72 Introduce generic... |
327 328 329 330 331 332 333 |
__weak int power_init_board(void) { return 0; } static int initr_announce(void) { |
a0ba279ac generic_board: re... |
334 335 |
debug("Now running in RAM - U-Boot at: %08lx ", gd->relocaddr); |
6f6430d72 Introduce generic... |
336 337 |
return 0; } |
61d7b1bb5 common/board_r: m... |
338 339 340 341 342 343 344 345 |
#ifdef CONFIG_NEEDS_MANUAL_RELOC static int initr_manual_reloc_cmdtable(void) { fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), ll_entry_count(cmd_tbl_t, cmd)); return 0; } #endif |
3c10dc95b binman: Add a lib... |
346 347 348 349 350 351 352 |
static int initr_binman(void) { if (!CONFIG_IS_ENABLED(BINMAN_FDT)) return 0; return binman_init(); } |
e856bdcfb flash: complete C... |
353 |
#if defined(CONFIG_MTD_NOR_FLASH) |
6f6430d72 Introduce generic... |
354 355 |
static int initr_flash(void) { |
c2240d4db Adjust board_r.c ... |
356 357 |
ulong flash_size = 0; bd_t *bd = gd->bd; |
6f6430d72 Introduce generic... |
358 359 |
puts("Flash: "); |
70879a925 flash: do not fai... |
360 |
if (board_flash_wp_on()) |
c2240d4db Adjust board_r.c ... |
361 362 |
printf("Uninitialized - Write Protect On "); |
70879a925 flash: do not fai... |
363 |
else |
c2240d4db Adjust board_r.c ... |
364 |
flash_size = flash_init(); |
70879a925 flash: do not fai... |
365 |
|
6f6430d72 Introduce generic... |
366 367 368 |
print_size(flash_size, ""); #ifdef CONFIG_SYS_FLASH_CHECKSUM /* |
92f84b67e common: board_r: ... |
369 370 371 372 |
* Compute and print flash CRC if flashchecksum is set to 'y' * * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX */ |
bfebc8c96 env: Rename geten... |
373 |
if (env_get_yesno("flashchecksum") == 1) { |
92f84b67e common: board_r: ... |
374 |
const uchar *flash_base = (const uchar *)CONFIG_SYS_FLASH_BASE; |
6f6430d72 Introduce generic... |
375 |
printf(" CRC: %08X", crc32(0, |
92f84b67e common: board_r: ... |
376 377 |
flash_base, flash_size)); |
6f6430d72 Introduce generic... |
378 379 380 381 |
} #endif /* CONFIG_SYS_FLASH_CHECKSUM */ putc(' '); |
c2240d4db Adjust board_r.c ... |
382 383 384 385 386 387 388 389 390 391 392 |
/* update start of FLASH memory */ #ifdef CONFIG_SYS_FLASH_BASE bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; #endif /* size of FLASH memory (final value) */ bd->bi_flashsize = flash_size; #if defined(CONFIG_SYS_UPDATE_FLASH_SIZE) /* Make a update of the Memctrl. */ update_flash_size(flash_size); #endif |
c2240d4db Adjust board_r.c ... |
393 394 395 396 397 398 399 400 401 |
#if defined(CONFIG_OXC) || defined(CONFIG_RMU) /* flash mapped at end of memory map */ bd->bi_flashoffset = CONFIG_SYS_TEXT_BASE + flash_size; #elif CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE bd->bi_flashoffset = monitor_flash_len; /* reserved area for monitor */ #endif return 0; } #endif |
6f6430d72 Introduce generic... |
402 403 |
#ifdef CONFIG_CMD_NAND /* go init the NAND */ |
2588ba14d common: board_r: ... |
404 |
static int initr_nand(void) |
6f6430d72 Introduce generic... |
405 406 407 |
{ puts("NAND: "); nand_init(); |
203db38a9 mtd: nand: remove... |
408 409 |
printf("%lu MiB ", nand_size() / 1024); |
6f6430d72 Introduce generic... |
410 411 412 413 414 415 |
return 0; } #endif #if defined(CONFIG_CMD_ONENAND) /* go init the NAND */ |
2588ba14d common: board_r: ... |
416 |
static int initr_onenand(void) |
6f6430d72 Introduce generic... |
417 418 419 420 421 422 |
{ puts("NAND: "); onenand_init(); return 0; } #endif |
4aa2ba3a3 mmc: replace CONF... |
423 |
#ifdef CONFIG_MMC |
2588ba14d common: board_r: ... |
424 |
static int initr_mmc(void) |
6f6430d72 Introduce generic... |
425 426 427 428 429 430 |
{ puts("MMC: "); mmc_initialize(gd->bd); return 0; } #endif |
6f6430d72 Introduce generic... |
431 432 433 |
/* * Tell if it's OK to load the environment early in boot. * |
776babd78 board_r: fix a ty... |
434 |
* If CONFIG_OF_CONTROL is defined, we'll check with the FDT to see |
6f6430d72 Introduce generic... |
435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 |
* if this is OK (defaulting to saying it's OK). * * NOTE: Loading the environment early can be a bad idea if security is * important, since no verification is done on the environment. * * @return 0 if environment should not be loaded, !=0 if it is ok to load */ static int should_load_env(void) { #ifdef CONFIG_OF_CONTROL return fdtdec_get_config_int(gd->fdt_blob, "load-environment", 1); #elif defined CONFIG_DELAY_ENVIRONMENT return 0; #else return 1; #endif } static int initr_env(void) { /* initialize environment */ if (should_load_env()) env_relocate(); else |
0ac7d722e env: Move get/set... |
459 |
env_set_default(NULL, 0); |
545dfd101 env: export fdt_b... |
460 |
#ifdef CONFIG_OF_CONTROL |
f980c9998 fdt: sandbox: cor... |
461 462 |
env_set_hex("fdtcontroladdr", (unsigned long)map_to_sysmem(gd->fdt_blob)); |
545dfd101 env: export fdt_b... |
463 |
#endif |
6f6430d72 Introduce generic... |
464 465 |
/* Initialize from environment */ |
bb872dd93 image: Rename loa... |
466 |
image_load_addr = env_get_ulong("loadaddr", 16, image_load_addr); |
c2240d4db Adjust board_r.c ... |
467 |
|
c2240d4db Adjust board_r.c ... |
468 469 |
return 0; } |
c722f0b02 common/board_r: a... |
470 471 472 473 474 475 476 477 478 479 480 481 |
#ifdef CONFIG_SYS_BOOTPARAMS_LEN static int initr_malloc_bootparams(void) { gd->bd->bi_boot_params = (ulong)malloc(CONFIG_SYS_BOOTPARAMS_LEN); if (!gd->bd->bi_boot_params) { puts("WARNING: Cannot allocate space for boot parameters "); return -ENOMEM; } return 0; } #endif |
6f6430d72 Introduce generic... |
482 483 484 485 486 487 488 489 490 491 492 493 494 495 |
static int initr_jumptable(void) { jumptable_init(); return 0; } #if defined(CONFIG_API) static int initr_api(void) { /* Initialize API */ api_init(); return 0; } #endif |
6f6430d72 Introduce generic... |
496 |
/* enable exceptions */ |
daab59ac0 avr32: Retire AVR... |
497 |
#ifdef CONFIG_ARM |
6f6430d72 Introduce generic... |
498 499 500 501 502 |
static int initr_enable_interrupts(void) { enable_interrupts(); return 0; } |
e424c15c1 x86: Enable gener... |
503 |
#endif |
6f6430d72 Introduce generic... |
504 505 506 507 |
#ifdef CONFIG_CMD_NET static int initr_ethaddr(void) { |
c2240d4db Adjust board_r.c ... |
508 509 510 |
bd_t *bd = gd->bd; /* kept around for legacy kernels only ... ignore the next section */ |
35affd7a2 env: Rename eth_g... |
511 |
eth_env_get_enetaddr("ethaddr", bd->bi_enetaddr); |
c2240d4db Adjust board_r.c ... |
512 |
#ifdef CONFIG_HAS_ETH1 |
35affd7a2 env: Rename eth_g... |
513 |
eth_env_get_enetaddr("eth1addr", bd->bi_enet1addr); |
c2240d4db Adjust board_r.c ... |
514 515 |
#endif #ifdef CONFIG_HAS_ETH2 |
35affd7a2 env: Rename eth_g... |
516 |
eth_env_get_enetaddr("eth2addr", bd->bi_enet2addr); |
c2240d4db Adjust board_r.c ... |
517 518 |
#endif #ifdef CONFIG_HAS_ETH3 |
35affd7a2 env: Rename eth_g... |
519 |
eth_env_get_enetaddr("eth3addr", bd->bi_enet3addr); |
c2240d4db Adjust board_r.c ... |
520 521 |
#endif #ifdef CONFIG_HAS_ETH4 |
35affd7a2 env: Rename eth_g... |
522 |
eth_env_get_enetaddr("eth4addr", bd->bi_enet4addr); |
c2240d4db Adjust board_r.c ... |
523 524 |
#endif #ifdef CONFIG_HAS_ETH5 |
35affd7a2 env: Rename eth_g... |
525 |
eth_env_get_enetaddr("eth5addr", bd->bi_enet5addr); |
c2240d4db Adjust board_r.c ... |
526 527 528 529 530 531 532 533 534 535 536 537 538 |
#endif return 0; } #endif /* CONFIG_CMD_NET */ #ifdef CONFIG_CMD_KGDB static int initr_kgdb(void) { puts("KGDB: "); kgdb_init(); return 0; } #endif |
2d8d190c8 status_led: Kconf... |
539 |
#if defined(CONFIG_LED_STATUS) |
c2240d4db Adjust board_r.c ... |
540 541 |
static int initr_status_led(void) { |
2d8d190c8 status_led: Kconf... |
542 543 |
#if defined(CONFIG_LED_STATUS_BOOT) status_led_set(CONFIG_LED_STATUS_BOOT, CONFIG_LED_STATUS_BLINKING); |
13cfbe513 allow LED initial... |
544 545 546 |
#else status_led_init(); #endif |
c2240d4db Adjust board_r.c ... |
547 548 549 |
return 0; } #endif |
e8a016b53 dm: Add support f... |
550 |
#if defined(CONFIG_SCSI) && !defined(CONFIG_DM_SCSI) |
c2240d4db Adjust board_r.c ... |
551 552 |
static int initr_scsi(void) { |
c2240d4db Adjust board_r.c ... |
553 554 |
puts("SCSI: "); scsi_init(); |
3804f5bb4 common: print \n ... |
555 556 |
puts(" "); |
6f6430d72 Introduce generic... |
557 558 559 |
return 0; } |
2c997e7a8 board_r: run scsi... |
560 |
#endif |
6f6430d72 Introduce generic... |
561 562 563 564 565 566 567 568 569 570 571 572 573 |
#ifdef CONFIG_BITBANGMII static int initr_bbmii(void) { bb_miiphy_init(); return 0; } #endif #ifdef CONFIG_CMD_NET static int initr_net(void) { puts("Net: "); |
d2eaec600 net: Remove the b... |
574 |
eth_initialize(); |
6f6430d72 Introduce generic... |
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 |
#if defined(CONFIG_RESET_PHY_R) debug("Reset Ethernet PHY "); reset_phy(); #endif return 0; } #endif #ifdef CONFIG_POST static int initr_post(void) { post_run(NULL, POST_RAM | post_bootmode_get(0)); return 0; } #endif |
ec15d5f6e board_r: Do not i... |
591 |
#if defined(CONFIG_IDE) && !defined(CONFIG_BLK) |
c2240d4db Adjust board_r.c ... |
592 593 |
static int initr_ide(void) { |
c2240d4db Adjust board_r.c ... |
594 |
puts("IDE: "); |
c2240d4db Adjust board_r.c ... |
595 596 597 598 599 600 601 602 603 |
#if defined(CONFIG_START_IDE) if (board_start_ide()) ide_init(); #else ide_init(); #endif return 0; } #endif |
c5404b64f Drop the log buffer |
604 |
#if defined(CONFIG_PRAM) |
6f6430d72 Introduce generic... |
605 606 607 608 609 610 611 612 |
/* * Export available size of memory for Linux, taking into account the * protected RAM at top of memory */ int initr_mem(void) { ulong pram = 0; char memsz[32]; |
bfebc8c96 env: Rename geten... |
613 |
pram = env_get_ulong("pram", 10, CONFIG_PRAM); |
92f84b67e common: board_r: ... |
614 |
sprintf(memsz, "%ldk", (long int)((gd->ram_size / 1024) - pram)); |
382bee57f env: Rename seten... |
615 |
env_set("mem", memsz); |
c2240d4db Adjust board_r.c ... |
616 617 618 619 620 621 622 623 624 625 626 627 628 |
return 0; } #endif #ifdef CONFIG_CMD_BEDBUG static int initr_bedbug(void) { bedbug_init(); return 0; } #endif |
6932a10a1 MLK-18591-1 andro... |
629 630 631 632 633 634 635 |
#if defined(AVB_RPMB) && !defined(CONFIG_SPL) extern int init_avbkey(void); static int initr_avbkey(void) { return init_avbkey(); } #endif |
a2018ab0d MLK-18591-3 andro... |
636 637 638 639 640 641 642 643 644 645 646 647 648 |
#ifdef CONFIG_FSL_FASTBOOT static int initr_fastboot_setup(void) { fastboot_setup(); return 0; } static int initr_check_fastboot(void) { fastboot_run_bootmode(); return 0; } #endif |
e94fde4df MLK-18591-6 andro... |
649 650 651 652 653 654 655 656 |
#ifdef CONFIG_IMX_TRUSTY_OS extern void tee_setup(void); static int initr_tee_setup(void) { tee_setup(); return 0; } #endif |
e543be2df MA-15158 Set spl ... |
657 658 659 660 661 662 663 664 |
#ifdef CONFIG_DUAL_BOOTLOADER extern void check_spl_recovery(void); static int initr_check_spl_recovery(void) { check_spl_recovery(); return 0; } #endif |
6f6430d72 Introduce generic... |
665 666 |
static int run_main_loop(void) { |
a733b06b6 sandbox: Switch o... |
667 668 669 |
#ifdef CONFIG_SANDBOX sandbox_main_loop_init(); #endif |
6f6430d72 Introduce generic... |
670 671 672 673 674 675 676 |
/* main_loop() can return to retry autoboot, if so just run it again */ for (;;) main_loop(); return 0; } /* |
47870afab initcall: Move to... |
677 |
* We hope to remove most of the driver-related init and do it if/when |
6f6430d72 Introduce generic... |
678 |
* the driver is later used. |
c2240d4db Adjust board_r.c ... |
679 680 |
* * TODO: perhaps reset the watchdog in the initcall function after each call? |
6f6430d72 Introduce generic... |
681 |
*/ |
4acff4524 board_f/r: Use st... |
682 |
static init_fnc_t init_sequence_r[] = { |
71c52dba2 Add trace support... |
683 |
initr_trace, |
6f6430d72 Introduce generic... |
684 |
initr_reloc, |
c2240d4db Adjust board_r.c ... |
685 |
/* TODO: could x86/PPC have this also perhaps? */ |
6f6430d72 Introduce generic... |
686 687 |
#ifdef CONFIG_ARM initr_caches, |
12eaf31c0 armv8/fsl-lsch3: ... |
688 689 |
/* Note: For Freescale LS2 SoCs, new MMU table is created in DDR. * A temporary mapping of IFC high region is since removed, |
92f84b67e common: board_r: ... |
690 |
* so environmental variables in NOR flash is not available |
12eaf31c0 armv8/fsl-lsch3: ... |
691 692 693 |
* until board_init() is called below to remap IFC to high * region. */ |
9fb02491f dm: Make driver m... |
694 695 |
#endif initr_reloc_global_data, |
fef3e25fc common/board_r: F... |
696 697 698 |
#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) initr_unlock_ram_in_cache, #endif |
9fb02491f dm: Make driver m... |
699 700 |
initr_barrier, initr_malloc, |
af1bc0cf4 log: Plumb loggin... |
701 |
log_init, |
5ac44a554 bootstage: Init a... |
702 |
initr_bootstage, /* Needs malloc() but has its own timer */ |
9854a8748 console: Add a co... |
703 |
initr_console_record, |
671fa63e7 common/board_r: R... |
704 705 706 |
#ifdef CONFIG_SYS_NONCACHED_MEMORY initr_noncached, #endif |
3af86a4e2 dm: Build a live ... |
707 708 709 |
#ifdef CONFIG_OF_LIVE initr_of_live, #endif |
9fb02491f dm: Make driver m... |
710 711 712 |
#ifdef CONFIG_DM initr_dm, #endif |
17585e2dc sandbox: led: use... |
713 714 |
#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ defined(CONFIG_SANDBOX) |
6f6430d72 Introduce generic... |
715 716 |
board_init, /* Setup chipselects */ #endif |
c2240d4db Adjust board_r.c ... |
717 718 719 720 721 722 723 724 725 |
/* * TODO: printing of the clock inforamtion of the board is now * implemented as part of bdinfo command. Currently only support for * davinci SOC's is added. Remove this check once all the board * implement this. */ #ifdef CONFIG_CLOCKS set_cpu_clk_info, /* Setup clock information */ #endif |
5d00995c3 efi_loader: Imple... |
726 727 728 |
#ifdef CONFIG_EFI_LOADER efi_memory_init, #endif |
3c10dc95b binman: Add a lib... |
729 |
initr_binman, |
fe08d39d1 x86: fsp: Add a n... |
730 731 732 |
#ifdef CONFIG_FSP_VERSION2 arch_fsp_init_r, #endif |
dd0edcb25 board_r: Move ear... |
733 |
initr_dm_devices, |
9fb02491f dm: Make driver m... |
734 |
stdio_init_tables, |
6f6430d72 Introduce generic... |
735 736 |
initr_serial, initr_announce, |
6874cb722 watchdog: Split W... |
737 |
#if CONFIG_IS_ENABLED(WDT) |
84b2416b6 board_r: move ini... |
738 739 |
initr_watchdog, #endif |
c2240d4db Adjust board_r.c ... |
740 |
INIT_FUNC_WATCHDOG_RESET |
61d7b1bb5 common/board_r: m... |
741 742 743 |
#ifdef CONFIG_NEEDS_MANUAL_RELOC initr_manual_reloc_cmdtable, #endif |
4c2cb1151 common/board_f: e... |
744 |
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_MIPS) |
c2240d4db Adjust board_r.c ... |
745 746 747 748 749 750 751 752 753 |
initr_trap, #endif #ifdef CONFIG_ADDR_MAP initr_addr_map, #endif #if defined(CONFIG_BOARD_EARLY_INIT_R) board_early_init_r, #endif INIT_FUNC_WATCHDOG_RESET |
6f6430d72 Introduce generic... |
754 755 756 |
#ifdef CONFIG_POST initr_post_backlog, #endif |
c2240d4db Adjust board_r.c ... |
757 |
INIT_FUNC_WATCHDOG_RESET |
c2240d4db Adjust board_r.c ... |
758 759 760 |
#if defined(CONFIG_PCI) && defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do early PCI configuration _before_ the flash gets initialised, |
92f84b67e common: board_r: ... |
761 |
* because PCU resources are crucial for flash access on some boards. |
c2240d4db Adjust board_r.c ... |
762 763 764 |
*/ initr_pci, #endif |
6f6430d72 Introduce generic... |
765 766 767 768 |
#ifdef CONFIG_ARCH_EARLY_INIT_R arch_early_init_r, #endif power_init_board, |
e856bdcfb flash: complete C... |
769 |
#ifdef CONFIG_MTD_NOR_FLASH |
6f6430d72 Introduce generic... |
770 771 |
initr_flash, #endif |
c2240d4db Adjust board_r.c ... |
772 |
INIT_FUNC_WATCHDOG_RESET |
936478e79 SPARC: Remove |
773 |
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86) |
c2240d4db Adjust board_r.c ... |
774 775 |
/* initialize higher level parts of CPU like time base and timers */ cpu_init_r, |
be274b99a x86: Adjust board... |
776 |
#endif |
6f6430d72 Introduce generic... |
777 778 779 780 781 782 |
#ifdef CONFIG_CMD_NAND initr_nand, #endif #ifdef CONFIG_CMD_ONENAND initr_onenand, #endif |
4aa2ba3a3 mmc: replace CONF... |
783 |
#ifdef CONFIG_MMC |
6f6430d72 Introduce generic... |
784 785 |
initr_mmc, #endif |
6f6430d72 Introduce generic... |
786 |
initr_env, |
c722f0b02 common/board_r: a... |
787 788 789 |
#ifdef CONFIG_SYS_BOOTPARAMS_LEN initr_malloc_bootparams, #endif |
c2240d4db Adjust board_r.c ... |
790 791 |
INIT_FUNC_WATCHDOG_RESET initr_secondary_cpu, |
c2240d4db Adjust board_r.c ... |
792 793 794 795 796 797 798 799 800 801 |
#if defined(CONFIG_ID_EEPROM) || defined(CONFIG_SYS_I2C_MAC_OFFSET) mac_read_from_eeprom, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_PCI) && !defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do pci configuration */ initr_pci, #endif |
9fb02491f dm: Make driver m... |
802 |
stdio_add_devices, |
6f6430d72 Introduce generic... |
803 804 805 806 807 808 |
initr_jumptable, #ifdef CONFIG_API initr_api, #endif console_init_r, /* fully init console as a device */ #ifdef CONFIG_DISPLAY_BOARDINFO_LATE |
b0895384b Allow displaying ... |
809 |
console_announce_r, |
0365ffcc0 generic-board: sh... |
810 |
show_board_info, |
6f6430d72 Introduce generic... |
811 812 813 814 815 816 817 |
#endif #ifdef CONFIG_ARCH_MISC_INIT arch_misc_init, /* miscellaneous arch-dependent init */ #endif #ifdef CONFIG_MISC_INIT_R misc_init_r, /* miscellaneous platform-dependent init */ #endif |
c2240d4db Adjust board_r.c ... |
818 819 820 821 |
INIT_FUNC_WATCHDOG_RESET #ifdef CONFIG_CMD_KGDB initr_kgdb, #endif |
6f6430d72 Introduce generic... |
822 |
interrupt_init, |
daab59ac0 avr32: Retire AVR... |
823 |
#ifdef CONFIG_ARM |
6f6430d72 Introduce generic... |
824 |
initr_enable_interrupts, |
c2240d4db Adjust board_r.c ... |
825 |
#endif |
daab59ac0 avr32: Retire AVR... |
826 |
#if defined(CONFIG_MICROBLAZE) || defined(CONFIG_M68K) |
be274b99a x86: Adjust board... |
827 828 |
timer_init, /* initialize timer */ #endif |
2d8d190c8 status_led: Kconf... |
829 |
#if defined(CONFIG_LED_STATUS) |
c2240d4db Adjust board_r.c ... |
830 831 832 |
initr_status_led, #endif /* PPC has a udelay(20) here dating from 2002. Why? */ |
6f6430d72 Introduce generic... |
833 834 835 |
#ifdef CONFIG_CMD_NET initr_ethaddr, #endif |
49b10cb49 gpio: fixes for g... |
836 |
#if defined(CONFIG_GPIO_HOG) |
5fc7cf8c8 gpio: add gpio-ho... |
837 838 |
gpio_hog_probe_all, #endif |
6f6430d72 Introduce generic... |
839 840 841 |
#ifdef CONFIG_BOARD_LATE_INIT board_late_init, #endif |
a2018ab0d MLK-18591-3 andro... |
842 843 844 |
#ifdef CONFIG_FSL_FASTBOOT initr_fastboot_setup, #endif |
e8a016b53 dm: Add support f... |
845 |
#if defined(CONFIG_SCSI) && !defined(CONFIG_DM_SCSI) |
c2240d4db Adjust board_r.c ... |
846 847 848 |
INIT_FUNC_WATCHDOG_RESET initr_scsi, #endif |
6f6430d72 Introduce generic... |
849 850 851 852 |
#ifdef CONFIG_BITBANGMII initr_bbmii, #endif #ifdef CONFIG_CMD_NET |
c2240d4db Adjust board_r.c ... |
853 |
INIT_FUNC_WATCHDOG_RESET |
6f6430d72 Introduce generic... |
854 855 856 857 858 |
initr_net, #endif #ifdef CONFIG_POST initr_post, #endif |
ec15d5f6e board_r: Do not i... |
859 |
#if defined(CONFIG_IDE) && !defined(CONFIG_BLK) |
c2240d4db Adjust board_r.c ... |
860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 |
initr_ide, #endif #ifdef CONFIG_LAST_STAGE_INIT INIT_FUNC_WATCHDOG_RESET /* * Some parts can be only initialized if all others (like * Interrupts) are up and running (i.e. the PC-style ISA * keyboard). */ last_stage_init, #endif #ifdef CONFIG_CMD_BEDBUG INIT_FUNC_WATCHDOG_RESET initr_bedbug, #endif |
c5404b64f Drop the log buffer |
875 |
#if defined(CONFIG_PRAM) |
c2240d4db Adjust board_r.c ... |
876 877 |
initr_mem, #endif |
c05b38df4 common: fix regre... |
878 |
#if defined(CONFIG_M68K) && defined(CONFIG_BLOCK_CACHE) |
1526bcce0 common: add blkca... |
879 880 |
blkcache_init, #endif |
6932a10a1 MLK-18591-1 andro... |
881 882 883 |
#if defined(AVB_RPMB) && !defined(CONFIG_SPL) initr_avbkey, #endif |
e94fde4df MLK-18591-6 andro... |
884 885 886 |
#ifdef CONFIG_IMX_TRUSTY_OS initr_tee_setup, #endif |
a2018ab0d MLK-18591-3 andro... |
887 888 889 |
#ifdef CONFIG_FSL_FASTBOOT initr_check_fastboot, #endif |
e543be2df MA-15158 Set spl ... |
890 891 892 |
#ifdef CONFIG_DUAL_BOOTLOADER initr_check_spl_recovery, #endif |
6f6430d72 Introduce generic... |
893 894 895 896 897 |
run_main_loop, }; void board_init_r(gd_t *new_gd, ulong dest_addr) { |
fb92308b9 x86: board_r: Set... |
898 899 900 901 902 903 904 905 906 |
/* * Set up the new global data pointer. So far only x86 does this * here. * TODO(sjg@chromium.org): Consider doing this for all archs, or * dropping the new_gd parameter. */ #if CONFIG_IS_ENABLED(X86_64) arch_setup_gd(new_gd); #endif |
7395398ad board_r - fixup f... |
907 908 909 |
#ifdef CONFIG_NEEDS_MANUAL_RELOC int i; #endif |
47a602eab board_r: ARM[64] ... |
910 |
#if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) |
6f6430d72 Introduce generic... |
911 |
gd = new_gd; |
be274b99a x86: Adjust board... |
912 |
#endif |
af1bc0cf4 log: Plumb loggin... |
913 |
gd->flags &= ~GD_FLG_LOG_READY; |
7395398ad board_r - fixup f... |
914 915 916 917 918 |
#ifdef CONFIG_NEEDS_MANUAL_RELOC for (i = 0; i < ARRAY_SIZE(init_sequence_r); i++) init_sequence_r[i] += gd->reloc_off; #endif |
6f6430d72 Introduce generic... |
919 920 921 922 923 924 |
if (initcall_run_list(init_sequence_r)) hang(); /* NOTREACHED - run_main_loop() does not return */ hang(); } |