summaryrefslogtreecommitdiff
path: root/lib_ppc/bootm.c
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2008-08-15 08:24:43 -0500
committerWolfgang Denk <wd@denx.de>2008-08-26 23:45:20 +0200
commit2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b (patch)
treeaf05886e553effd9ab2b9825a73d169be5c784ed /lib_ppc/bootm.c
parent3082d2348c8e13342f5fdd10e9b3f7408062dbf9 (diff)
downloadu-boot-imx-2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b.zip
u-boot-imx-2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b.tar.gz
u-boot-imx-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.c28
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);