diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2008-08-15 08:24:43 -0500 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-08-26 23:45:20 +0200 |
commit | 2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b (patch) | |
tree | af05886e553effd9ab2b9825a73d169be5c784ed /lib_ppc/bootm.c | |
parent | 3082d2348c8e13342f5fdd10e9b3f7408062dbf9 (diff) | |
download | bootable_bootloader_goldelico_gta04-2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b.zip bootable_bootloader_goldelico_gta04-2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b.tar.gz bootable_bootloader_goldelico_gta04-2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b.tar.bz2 |
fdt: refactor initrd related code
Created a new fdt_initrd() to deal with setting the initrd properties
in the device tree and fixing up the mem reserve. We can use this
both in the choosen node handling and lets us remove some duplicated
code when we fixup the initrd info in bootm on PPC.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'lib_ppc/bootm.c')
-rw-r--r-- | lib_ppc/bootm.c | 28 |
1 files changed, 2 insertions, 26 deletions
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index 300e00a..9892afa 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -182,32 +182,8 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], #if defined(CONFIG_OF_LIBFDT) /* fixup the initrd now that we know where it should be */ - if ((of_flat_tree) && (initrd_start && initrd_end)) { - uint64_t addr, size; - int total = fdt_num_mem_rsv(of_flat_tree); - int j; - - /* Look for the dummy entry and delete it */ - for (j = 0; j < total; j++) { - fdt_get_mem_rsv(of_flat_tree, j, &addr, &size); - if (addr == images->rd_start) { - fdt_del_mem_rsv(of_flat_tree, j); - break; - } - } - - ret = fdt_add_mem_rsv(of_flat_tree, initrd_start, - initrd_end - initrd_start + 1); - if (ret < 0) { - printf("fdt_chosen: %s\n", fdt_strerror(ret)); - goto error; - } - - do_fixup_by_path_u32(of_flat_tree, "/chosen", - "linux,initrd-start", initrd_start, 0); - do_fixup_by_path_u32(of_flat_tree, "/chosen", - "linux,initrd-end", initrd_end, 0); - } + if ((of_flat_tree) && (initrd_start && initrd_end)) + fdt_initrd(of_flat_tree, initrd_start, initrd_end, 1); #endif debug ("## Transferring control to Linux (at address %08lx) ...\n", (ulong)kernel); |