diff options
Diffstat (limited to 'arch/mips/boot/dtb.c')
-rw-r--r-- | arch/mips/boot/dtb.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/mips/boot/dtb.c b/arch/mips/boot/dtb.c index 3f7f466413..b9ea8f41e6 100644 --- a/arch/mips/boot/dtb.c +++ b/arch/mips/boot/dtb.c @@ -23,6 +23,9 @@ #include <memory.h> #include <asm/addrspace.h> +void *glob_fdt; +u32 glob_fdt_size; + void of_add_memory_bank(struct device_node *node, bool dump, int r, u64 base, u64 size) { @@ -38,6 +41,10 @@ void of_add_memory_bank(struct device_node *node, bool dump, int r, if (dump) pr_info("%s: %s: 0x%llx@0x%llx\n", node->name, str, size, base); + + if (glob_fdt && glob_fdt_size) + request_sdram_region("fdt", (resource_size_t)glob_fdt, + glob_fdt_size); } extern char __dtb_start[]; @@ -45,12 +52,13 @@ extern char __dtb_start[]; static int of_mips_init(void) { struct device_node *root; + void *fdt; - root = of_get_root_node(); - if (root) - return 0; + fdt = glob_fdt; + if (!fdt) + fdt = __dtb_start; - root = of_unflatten_dtb(__dtb_start); + root = of_unflatten_dtb(fdt); if (!IS_ERR(root)) { pr_debug("using internal DTB\n"); of_set_root_node(root); |