diff options
author | Tom Rini <trini@ti.com> | 2015-02-09 11:44:46 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2015-02-09 11:44:46 -0500 |
commit | a4fb5df214c7e8d5bc949c1068d92252f105427a (patch) | |
tree | be1d6e906ba602562affae768880b96ea39e2642 /board | |
parent | 10918c03a9761db3ef8b57ca46a20d39e0be41e6 (diff) | |
parent | 7f33899221e4235900760add69ffbb5f66f1229d (diff) | |
download | u-boot-imx-a4fb5df214c7e8d5bc949c1068d92252f105427a.zip u-boot-imx-a4fb5df214c7e8d5bc949c1068d92252f105427a.tar.gz u-boot-imx-a4fb5df214c7e8d5bc949c1068d92252f105427a.tar.bz2 |
Merge branch 'microblaze' of git://git.denx.de/u-boot-microblaze
Diffstat (limited to 'board')
-rw-r--r-- | board/xilinx/microblaze-generic/microblaze-generic.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/board/xilinx/microblaze-generic/microblaze-generic.c b/board/xilinx/microblaze-generic/microblaze-generic.c index 42a8d0c..3110405 100644 --- a/board/xilinx/microblaze-generic/microblaze-generic.c +++ b/board/xilinx/microblaze-generic/microblaze-generic.c @@ -11,16 +11,62 @@ #include <common.h> #include <config.h> +#include <fdtdec.h> #include <netdev.h> #include <asm/processor.h> #include <asm/microblaze_intc.h> #include <asm/asm.h> #include <asm/gpio.h> +DECLARE_GLOBAL_DATA_PTR; + #ifdef CONFIG_XILINX_GPIO static int reset_pin = -1; #endif +#ifdef CONFIG_OF_CONTROL +ulong ram_base; + +void dram_init_banksize(void) +{ + gd->bd->bi_dram[0].start = ram_base; + gd->bd->bi_dram[0].size = get_effective_memsize(); +} + +int dram_init(void) +{ + int node; + fdt_addr_t addr; + fdt_size_t size; + const void *blob = gd->fdt_blob; + + node = fdt_node_offset_by_prop_value(blob, -1, "device_type", + "memory", 7); + if (node == -FDT_ERR_NOTFOUND) { + debug("DRAM: Can't get memory node\n"); + return 1; + } + addr = fdtdec_get_addr_size(blob, node, "reg", &size); + if (addr == FDT_ADDR_T_NONE || size == 0) { + debug("DRAM: Can't get base address or size\n"); + return 1; + } + ram_base = addr; + + gd->ram_top = addr; /* In setup_dest_addr() is done +ram_size */ + gd->ram_size = size; + + return 0; +}; +#else +int dram_init(void) +{ + gd->ram_size = CONFIG_SYS_SDRAM_SIZE; + + return 0; +} +#endif + int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { #ifdef CONFIG_XILINX_GPIO |