diff options
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.c | 79 |
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(); +} |