diff options
author | Michal Simek <michal.simek@xilinx.com> | 2014-05-08 16:08:44 +0200 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2015-02-09 15:11:56 +0100 |
commit | e945f6dc2814f5f0d30b5b7e23821b3fd4faff5b (patch) | |
tree | 30e842dc2c1878f34f9f86a5cc264e3b9a0bbdaf /board | |
parent | 4dd097427aeb6848fcb19c31b805abe1a3906913 (diff) | |
download | u-boot-imx-e945f6dc2814f5f0d30b5b7e23821b3fd4faff5b.zip u-boot-imx-e945f6dc2814f5f0d30b5b7e23821b3fd4faff5b.tar.gz u-boot-imx-e945f6dc2814f5f0d30b5b7e23821b3fd4faff5b.tar.bz2 |
microblaze: Move architecture to use generic board init
Compile code with -fPIC to get GOT. Do not build SPL
with fPIC because it increasing SPL size for nothing.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
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 |