Lines Matching +full:protected +full:- +full:clocks

3  * (C) Copyright 2002-2006
7 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
10 * SPDX-License-Identifier: GPL-2.0+
35 #include <asm/mach-types.h>
87 * global data for all modules, so that post-reloc we can avoid the massive
123 if (gd && gd->serial.baudrate) in init_baud_rate()
124 gd->baudrate = gd->serial.baudrate; in init_baud_rate()
126 gd->baudrate = env_get_ulong("baudrate", 10, CONFIG_BAUDRATE); in init_baud_rate()
145 debug("U-Boot code: %08lX -> %08lX BSS: -> %08lX\n", in display_text_info()
154 if (gd && gd->serial.using_pre_serial) in announce_serial()
155 printf("PreSerial: %d, ", gd->serial.id); in announce_serial()
164 printf(", 0x%lx\n", gd->serial.addr); in announce_serial()
186 size += gd->bd->bi_dram[i].size; in show_dram_config()
188 (unsigned long long)(gd->bd->bi_dram[i].start)); in show_dram_config()
190 print_size(gd->bd->bi_dram[i].size, "\n"); in show_dram_config()
195 size = gd->ram_size; in show_dram_config()
213 gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; in dram_init_banksize()
214 gd->bd->bi_dram[0].size = get_effective_memsize(); in dram_init_banksize()
247 gd->mon_len = (ulong)&__bss_end - (ulong)_start; in setup_mon_len()
249 gd->mon_len = (ulong)&_end - (ulong)_init; in setup_mon_len()
251 gd->mon_len = CONFIG_SYS_MONITOR_LEN; in setup_mon_len()
253 gd->mon_len = (ulong)(&__bss_end) - (ulong)(&_start); in setup_mon_len()
255 /* TODO: use (ulong)&__bss_end - (ulong)&__text_start; ? */ in setup_mon_len()
256 gd->mon_len = (ulong)&__bss_end - CONFIG_SYS_MONITOR_BASE; in setup_mon_len()
280 * 32-bit address space. If so, clip the usable RAM so it doesn't. in board_get_usable_ram_top()
282 if (gd->ram_top < CONFIG_SYS_SDRAM_BASE) in board_get_usable_ram_top()
284 * Will wrap back to top of 32-bit space when reservations in board_get_usable_ram_top()
289 return gd->ram_top; in board_get_usable_ram_top()
294 debug("Monitor len: %08lX\n", gd->mon_len); in setup_dest_addr()
298 debug("Ram size: %08lX\n", (ulong)gd->ram_size); in setup_dest_addr()
302 * get "touched" at all by U-Boot. By fixing up gd->ram_size in setup_dest_addr()
310 gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE; in setup_dest_addr()
313 gd->ram_top = CONFIG_SYS_SDRAM_BASE; in setup_dest_addr()
315 gd->ram_top += get_effective_memsize(); in setup_dest_addr()
316 gd->ram_top = board_get_usable_ram_top(gd->mon_len); in setup_dest_addr()
317 gd->relocaddr = gd->ram_top; in setup_dest_addr()
318 debug("Ram top: %08lX\n", (ulong)gd->ram_top); in setup_dest_addr()
322 * boot code is reserved and not used by any part of u-boot in setup_dest_addr()
324 if (gd->relocaddr > determine_mp_bootpg(NULL)) { in setup_dest_addr()
325 gd->relocaddr = determine_mp_bootpg(NULL); in setup_dest_addr()
326 debug("Reserving MP boot page to %08lx\n", gd->relocaddr); in setup_dest_addr()
333 /* reserve protected RAM */
339 gd->relocaddr -= (reg << 10); /* size is in kB */ in reserve_pram()
340 debug("Reserving %ldk for protected RAM at %08lx\n", reg, in reserve_pram()
341 gd->relocaddr); in reserve_pram()
349 gd->relocaddr &= ~(4096 - 1); in reserve_round_4k()
358 gd->arch.tlb_size = PGTABLE_SIZE; in reserve_mmu()
359 gd->relocaddr -= gd->arch.tlb_size; in reserve_mmu()
362 gd->relocaddr &= ~(0x10000 - 1); in reserve_mmu()
364 gd->arch.tlb_addr = gd->relocaddr; in reserve_mmu()
365 debug("TLB table from %08lx to %08lx\n", gd->arch.tlb_addr, in reserve_mmu()
366 gd->arch.tlb_addr + gd->arch.tlb_size); in reserve_mmu()
370 * Record allocated tlb_addr in case gd->tlb_addr to be overwritten in reserve_mmu()
373 gd->arch.tlb_allocated = gd->arch.tlb_addr; in reserve_mmu()
387 addr = gd->relocaddr; in reserve_video()
391 gd->relocaddr = addr; in reserve_video()
394 gd->fb_base = CONFIG_FB_ADDR; in reserve_video()
397 gd->relocaddr = lcd_setmem(gd->relocaddr); in reserve_video()
398 gd->fb_base = gd->relocaddr; in reserve_video()
405 gd->relocaddr = video_setmem(gd->relocaddr); in reserve_video()
406 gd->fb_base = gd->relocaddr; in reserve_video()
415 gd->relocaddr -= CONFIG_TRACE_BUFFER_SIZE; in reserve_trace()
416 gd->trace_buff = map_sysmem(gd->relocaddr, CONFIG_TRACE_BUFFER_SIZE); in reserve_trace()
418 CONFIG_TRACE_BUFFER_SIZE >> 10, gd->relocaddr); in reserve_trace()
427 * reserve memory for U-Boot code, data & bss in reserve_uboot()
430 gd->relocaddr -= gd->mon_len; in reserve_uboot()
431 gd->relocaddr &= ~(4096 - 1); in reserve_uboot()
434 gd->relocaddr &= ~(65536 - 1); in reserve_uboot()
437 debug("Reserving %ldk for U-Boot at: %08lx\n", gd->mon_len >> 10, in reserve_uboot()
438 gd->relocaddr); in reserve_uboot()
440 gd->start_addr_sp = gd->relocaddr; in reserve_uboot()
448 gd->start_addr_sp = gd->start_addr_sp - TOTAL_MALLOC_LEN; in reserve_malloc()
450 TOTAL_MALLOC_LEN >> 10, gd->start_addr_sp); in reserve_malloc()
460 end = ALIGN(gd->start_addr_sp, MMU_SECTION_SIZE) - MMU_SECTION_SIZE; in reserve_noncached()
462 start = end - size; in reserve_noncached()
463 gd->start_addr_sp = start; in reserve_noncached()
465 size, gd->start_addr_sp); in reserve_noncached()
474 if (!gd->bd) { in reserve_board()
475 gd->start_addr_sp -= sizeof(bd_t); in reserve_board()
476 gd->bd = (bd_t *)map_sysmem(gd->start_addr_sp, sizeof(bd_t)); in reserve_board()
477 memset(gd->bd, '\0', sizeof(bd_t)); in reserve_board()
479 sizeof(bd_t), gd->start_addr_sp); in reserve_board()
487 gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */ in setup_machine()
494 gd->start_addr_sp -= sizeof(gd_t); in reserve_global_data()
495 gd->new_gd = (gd_t *)map_sysmem(gd->start_addr_sp, sizeof(gd_t)); in reserve_global_data()
497 sizeof(gd_t), gd->start_addr_sp); in reserve_global_data()
509 if (gd->fdt_blob) { in reserve_fdt()
512 if (gd->fdt_blob_kern) in reserve_fdt()
513 extrasize = fdt_totalsize(gd->fdt_blob_kern); in reserve_fdt()
514 gd->fdt_size = ALIGN(fdt_totalsize(gd->fdt_blob) + extrasize + 0x1000, 32); in reserve_fdt()
515 gd->start_addr_sp -= gd->fdt_size; in reserve_fdt()
517 /* 8-byte align */ in reserve_fdt()
518 gd->start_addr_sp -= 8; in reserve_fdt()
519 gd->start_addr_sp &= ~0x7; in reserve_fdt()
520 gd->new_fdt = map_sysmem(gd->start_addr_sp, gd->fdt_size); in reserve_fdt()
522 if (gd->fdt_blob_kern) in reserve_fdt()
523 gd->fdt_blob_kern = (ulong *)ALIGN((ulong)gd->new_fdt + in reserve_fdt()
524 fdt_totalsize(gd->fdt_blob), 8); in reserve_fdt()
526 gd->fdt_size, gd->start_addr_sp); in reserve_fdt()
538 gd->start_addr_sp -= size; in reserve_bootstage()
539 gd->new_bootstage = map_sysmem(gd->start_addr_sp, size); in reserve_bootstage()
541 gd->start_addr_sp); in reserve_bootstage()
554 /* make stack pointer 16-byte aligned */ in reserve_stacks()
555 gd->start_addr_sp -= 16; in reserve_stacks()
556 gd->start_addr_sp &= ~0xf; in reserve_stacks()
559 * let the architecture-specific code tailor gd->start_addr_sp and in reserve_stacks()
560 * gd->irq_sp in reserve_stacks()
567 debug("New Stack Pointer is: %08lx\n", gd->start_addr_sp); in display_new_sp()
576 bd_t *bd = gd->bd; in setup_board_part1()
581 bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of memory */ in setup_board_part1()
582 bd->bi_memsize = gd->ram_size; /* size in bytes */ in setup_board_part1()
585 bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */ in setup_board_part1()
586 bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */ in setup_board_part1()
590 bd->bi_immr_base = CONFIG_SYS_IMMR; /* base of IMMR register */ in setup_board_part1()
593 bd->bi_mbar_base = CONFIG_SYS_MBAR; /* base of internal registers */ in setup_board_part1()
596 bd->bi_immrbar = CONFIG_SYS_IMMR; in setup_board_part1()
606 bd_t *bd = gd->bd; in setup_board_part2()
608 bd->bi_intfreq = gd->cpu_clk; /* Internal Freq, in Hz */ in setup_board_part2()
609 bd->bi_busfreq = gd->bus_clk; /* Bus Freq, in Hz */ in setup_board_part2()
611 bd->bi_cpmfreq = gd->arch.cpm_clk; in setup_board_part2()
612 bd->bi_brgfreq = gd->arch.brg_clk; in setup_board_part2()
613 bd->bi_sccfreq = gd->arch.scc_clk; in setup_board_part2()
614 bd->bi_vco = gd->arch.vco_out; in setup_board_part2()
617 bd->bi_pcifreq = gd->pci_clk; in setup_board_part2()
620 bd->bi_inpfreq = gd->arch.inp_clk; /* input Freq in Hz */ in setup_board_part2()
621 bd->bi_vcofreq = gd->arch.vco_clk; /* vco Freq in Hz */ in setup_board_part2()
622 bd->bi_flbfreq = gd->arch.flb_clk; /* flexbus Freq in Hz */ in setup_board_part2()
642 if (gd->flags & GD_FLG_SKIP_RELOC) in reloc_fdt()
644 if (gd->new_fdt) { in reloc_fdt()
645 memcpy(gd->new_fdt, gd->fdt_blob, gd->fdt_size); in reloc_fdt()
646 gd->fdt_blob = gd->new_fdt; in reloc_fdt()
648 gd->ufdt_blob = gd->new_fdt; in reloc_fdt()
659 if (gd->flags & GD_FLG_SKIP_RELOC) in reloc_bootstage()
661 if (gd->new_bootstage) { in reloc_bootstage()
665 gd->bootstage, gd->new_bootstage, size); in reloc_bootstage()
666 memcpy(gd->new_bootstage, gd->bootstage, size); in reloc_bootstage()
667 gd->bootstage = gd->new_bootstage; in reloc_bootstage()
676 if (gd->flags & GD_FLG_SKIP_RELOC) { in setup_reloc()
684 gd->reloc_off = gd->relocaddr - (unsigned long)__image_copy_start; in setup_reloc()
690 gd->reloc_off = gd->relocaddr - (CONFIG_SYS_TEXT_BASE + 0x400); in setup_reloc()
692 gd->reloc_off = gd->relocaddr - CONFIG_SYS_TEXT_BASE; in setup_reloc()
697 gd->reloc_off = 0; in setup_reloc()
699 memcpy(gd->new_gd, (char *)gd, sizeof(gd_t)); in setup_reloc()
702 printf("Relocation Offset: %08lx\n", gd->reloc_off); in setup_reloc()
704 printf("Relocation fdt: %08lx - %08lx", (ulong)gd->new_fdt, in setup_reloc()
705 (ulong)gd->new_fdt + fdt_totalsize(gd->fdt_blob)); in setup_reloc()
706 if (gd->fdt_blob_kern) { in setup_reloc()
707 printf(", kfdt: %08lx - %08lx", (ulong)gd->fdt_blob_kern, in setup_reloc()
708 (ulong)gd->fdt_blob_kern + fdt_totalsize(gd->fdt_blob_kern)); in setup_reloc()
713 gd->relocaddr, (ulong)map_to_sysmem(gd->new_gd), in setup_reloc()
714 gd->start_addr_sp); in setup_reloc()
722 return board_fix_fdt((void *)gd->fdt_blob); in fix_fdt()
732 if (gd->flags & GD_FLG_SKIP_RELOC) in jump_to_copy()
749 arch_setup_gd(gd->new_gd); in jump_to_copy()
750 board_init_f_r_trampoline(gd->start_addr_sp); in jump_to_copy()
752 relocate_code(gd->start_addr_sp, gd->new_gd, gd->relocaddr); in jump_to_copy()
774 if (ret && ret != -ENOENT) { in initf_bootstage()
814 /* Architecture-specific memory reservation */
848 /* get CPU and bus clocks according to the environment variable */
849 get_clocks, /* get CPU and bus clocks (etc.) */
909 * - area that won't get touched by U-Boot and Linux (optional)
910 * - kernel log buffer
911 * - protected RAM
912 * - LCD framebuffer
913 * - monitor code
914 * - board info struct
976 gd->flags = boot_flags; in board_init_f()
977 gd->have_console = 0; in board_init_f()
984 /* NOTREACHED - jump_to_copy() does not return */ in board_init_f()
994 * U-Boot is executing from Flash with a semi-limited 'C' environment.
997 * - 'static' variables are read-only
998 * - Global Data (gd->xxx) is read/write
1000 * The '_f_r' sequence must, as a minimum, copy U-Boot to RAM (if
1021 * The pre-relocation drivers may be using memory that has now gone in board_init_f_r()
1022 * away. Mark serial as unavailable - this will fall back to the debug in board_init_f_r()
1027 gd->flags &= ~(GD_FLG_SERIAL_READY | GD_FLG_LOG_READY); in board_init_f_r()
1029 gd->timer = NULL; in board_init_f_r()
1033 * U-Boot has been copied into SDRAM, the BSS has been cleared etc. in board_init_f_r()
1035 * of the in-RAM copy of board_init_r() and calling it in board_init_f_r()
1037 (board_init_r + gd->reloc_off)((gd_t *)gd, gd->relocaddr); in board_init_f_r()
1039 /* NOTREACHED - board_init_r() does not return */ in board_init_f_r()