Home | History | Annotate | Download | only in c29xpcie
      1 // SPDX-License-Identifier: GPL-2.0+
      2 /* Copyright 2013 Freescale Semiconductor, Inc.
      3  */
      4 
      5 #include <common.h>
      6 #include <console.h>
      7 #include <environment.h>
      8 #include <ns16550.h>
      9 #include <malloc.h>
     10 #include <mmc.h>
     11 #include <nand.h>
     12 #include <i2c.h>
     13 
     14 DECLARE_GLOBAL_DATA_PTR;
     15 
     16 phys_size_t get_effective_memsize(void)
     17 {
     18 	return CONFIG_SYS_L2_SIZE;
     19 }
     20 
     21 void board_init_f(ulong bootflag)
     22 {
     23 	u32 plat_ratio;
     24 	ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
     25 
     26 	console_init_f();
     27 
     28 	/* initialize selected port with appropriate baud rate */
     29 	plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
     30 	plat_ratio >>= 1;
     31 	gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
     32 
     33 	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
     34 		     gd->bus_clk / 16 / CONFIG_BAUDRATE);
     35 
     36 	/* copy code to RAM and jump to it - this should not return */
     37 	/* NOTE - code has to be copied out of NAND buffer before
     38 	 * other blocks can be read.
     39 	 */
     40 	relocate_code(CONFIG_SPL_RELOC_STACK, 0, CONFIG_SPL_RELOC_TEXT_BASE);
     41 }
     42 
     43 void board_init_r(gd_t *gd, ulong dest_addr)
     44 {
     45 	/* Pointer is writable since we allocated a register for it */
     46 	gd = (gd_t *)CONFIG_SPL_GD_ADDR;
     47 	bd_t *bd;
     48 
     49 	memset(gd, 0, sizeof(gd_t));
     50 	bd = (bd_t *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
     51 	memset(bd, 0, sizeof(bd_t));
     52 	gd->bd = bd;
     53 	bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
     54 	bd->bi_memsize = CONFIG_SYS_L2_SIZE;
     55 
     56 	arch_cpu_init();
     57 	get_clocks();
     58 	mem_malloc_init(CONFIG_SPL_RELOC_MALLOC_ADDR,
     59 			CONFIG_SPL_RELOC_MALLOC_SIZE);
     60 	gd->flags |= GD_FLG_FULL_MALLOC_INIT;
     61 
     62 	/* relocate environment function pointers etc. */
     63 	nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
     64 			    (uchar *)CONFIG_ENV_ADDR);
     65 	gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
     66 	gd->env_valid = ENV_VALID;
     67 
     68 	i2c_init_all();
     69 
     70 	dram_init();
     71 
     72 #ifdef CONFIG_SPL_NAND_BOOT
     73 	puts("TPL\n");
     74 #else
     75 	puts("SPL\n");
     76 #endif
     77 
     78 	nand_boot();
     79 }
     80