aboutsummaryrefslogtreecommitdiffstats
path: root/roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c')
-rw-r--r--roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c b/roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c
new file mode 100644
index 000000000..a427ac94a
--- /dev/null
+++ b/roms/u-boot/board/xilinx/microblaze-generic/microblaze-generic.c
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2007-2018 Michal Simek
+ *
+ * Michal SIMEK <monstr@monstr.eu>
+ */
+
+/*
+ * This is a board specific file. It's OK to include board specific
+ * header files
+ */
+
+#include <common.h>
+#include <config.h>
+#include <env.h>
+#include <init.h>
+#include <log.h>
+#include <asm/global_data.h>
+#include <dm/lists.h>
+#include <fdtdec.h>
+#include <linux/sizes.h>
+#include "../common/board.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int dram_init_banksize(void)
+{
+ return fdtdec_setup_memory_banksize();
+}
+
+int dram_init(void)
+{
+ if (fdtdec_setup_mem_size_base() != 0)
+ return -EINVAL;
+
+ return 0;
+};
+
+int board_late_init(void)
+{
+ ulong max_size;
+ u32 status = 0;
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_SYSRESET_MICROBLAZE)
+ int ret;
+
+ ret = device_bind_driver(gd->dm_root, "mb_soft_reset",
+ "reset_soft", NULL);
+ if (ret)
+ printf("Warning: No reset driver: ret=%d\n", ret);
+#endif
+
+ if (!(gd->flags & GD_FLG_ENV_DEFAULT)) {
+ debug("Saved variables - Skipping\n");
+ return 0;
+ }
+
+ max_size = gd->start_addr_sp - CONFIG_STACK_SIZE;
+ max_size = round_down(max_size, SZ_16M);
+
+ status |= env_set_hex("scriptaddr", max_size + SZ_2M);
+
+ status |= env_set_hex("pxefile_addr_r", max_size + SZ_1M);
+
+ status |= env_set_hex("kernel_addr_r", gd->ram_base + SZ_32M);
+
+ status |= env_set_hex("fdt_addr_r", gd->ram_base + SZ_32M - SZ_1M);
+
+ status |= env_set_hex("ramdisk_addr_r",
+ gd->ram_base + SZ_32M + SZ_4M + SZ_2M);
+ if (IS_ENABLED(CONFIG_MTD_NOR_FLASH))
+ status |= env_set_hex("script_offset_nor",
+ gd->bd->bi_flashstart +
+ CONFIG_BOOT_SCRIPT_OFFSET);
+ if (status)
+ printf("%s: Saving run time variables FAILED\n", __func__);
+
+ return board_late_init_xilinx();
+}