X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib_mips%2Fboard.c;h=b233a6c8a95e91caadf82466690012af8cdd97f7;hb=a483a167bc8d808145ca1224a2c238cda90aa60c;hp=9c997f1908f4a9177e41c5a76ed6d59136b92baa;hpb=13d36ec849785453953d00220b2c7dc66644a3c2;p=platform%2Fkernel%2Fu-boot.git diff --git a/lib_mips/board.c b/lib_mips/board.c index 9c997f1..b233a6c 100644 --- a/lib_mips/board.c +++ b/lib_mips/board.c @@ -24,12 +24,13 @@ #include #include #include -#include +#include #include #include #include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -59,44 +60,30 @@ const char version_string[] = static char *failed = "*** failed ***\n"; /* - * Begin and End of memory area for malloc(), and current "brk" - */ -static ulong mem_malloc_start; -static ulong mem_malloc_end; -static ulong mem_malloc_brk; - -/* * mips_io_port_base is the begin of the address space to which x86 style * I/O ports are mapped. */ unsigned long mips_io_port_base = -1; -/* - * The Malloc area is immediately below the monitor copy in DRAM - */ -static void mem_malloc_init (void) +int __board_early_init_f(void) { - ulong dest_addr = CONFIG_SYS_MONITOR_BASE + gd->reloc_off; - - mem_malloc_end = dest_addr; - mem_malloc_start = dest_addr - TOTAL_MALLOC_LEN; - mem_malloc_brk = mem_malloc_start; - - memset ((void *) mem_malloc_start, - 0, - mem_malloc_end - mem_malloc_start); + /* + * Nothing to do in this dummy implementation + */ + return 0; } +int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f"))); -void *sbrk (ptrdiff_t increment) +/* + * The Malloc area is immediately below the monitor copy in DRAM + */ +static void mem_malloc_init(ulong start, ulong size) { - ulong old = mem_malloc_brk; - ulong new = old + increment; + mem_malloc_start = start; + mem_malloc_end = start + size; + mem_malloc_brk = start; - if ((new < mem_malloc_start) || (new > mem_malloc_end)) { - return (NULL); - } - mem_malloc_brk = new; - return ((void *) old); + memset ((void *)mem_malloc_start, 0, size); } @@ -168,6 +155,7 @@ static int init_baudrate (void) typedef int (init_fnc_t) (void); init_fnc_t *init_sequence[] = { + board_early_init_f, timer_init, env_init, /* initialize environment */ #ifdef CONFIG_INCA_IP @@ -312,9 +300,8 @@ void board_init_r (gd_t *id, ulong dest_addr) #ifndef CONFIG_ENV_IS_NOWHERE extern char * env_name_spec; #endif - char *s, *e; + char *s; bd_t *bd; - int i; gd = id; gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ @@ -360,6 +347,11 @@ void board_init_r (gd_t *id, ulong dest_addr) bd = gd->bd; + /* initialize malloc() area */ + mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off - + TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN); + malloc_bin_reloc(); + #ifndef CONFIG_SYS_NO_FLASH /* configure available FLASH banks */ size = flash_init(); @@ -374,21 +366,18 @@ void board_init_r (gd_t *id, ulong dest_addr) bd->bi_flashoffset = 0; #endif - /* initialize malloc() area */ - mem_malloc_init(); - malloc_bin_reloc(); +#ifdef CONFIG_CMD_NAND + puts ("NAND: "); + nand_init (); /* go init the NAND */ +#endif + +#if defined(CONFIG_CMD_ONENAND) + onenand_init(); +#endif /* relocate environment function pointers etc. */ env_relocate(); - /* board MAC address */ - s = getenv ("ethaddr"); - for (i = 0; i < 6; ++i) { - bd->bi_enetaddr[i] = s ? simple_strtoul (s, &e, 16) : 0; - if (s) - s = (*e) ? e + 1 : e; - } - /* IP Address */ bd->bi_ip_addr = getenv_IPaddr("ipaddr"); @@ -400,8 +389,8 @@ void board_init_r (gd_t *id, ulong dest_addr) #endif /** leave this here (after malloc(), environment and PCI are working) **/ - /* Initialize devices */ - devices_init (); + /* Initialize stdio devices */ + stdio_init (); jumptable_init (); @@ -419,11 +408,6 @@ void board_init_r (gd_t *id, ulong dest_addr) } #endif -#ifdef CONFIG_CMD_NAND - puts ("NAND: "); - nand_init (); /* go init the NAND */ -#endif - #ifdef CONFIG_CMD_SPI puts ("SPI: "); spi_init (); /* go init the SPI */