aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--boot/image-fdt.c5
-rw-r--r--include/fdt_support.h12
2 files changed, 15 insertions, 2 deletions
diff --git a/boot/image-fdt.c b/boot/image-fdt.c
index 6cdac6a556d..173ddb6e074 100644
--- a/boot/image-fdt.c
+++ b/boot/image-fdt.c
@@ -635,6 +635,10 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob,
goto err;
}
}
+
+ if (fdt_initrd(blob, *initrd_start, *initrd_end))
+ goto err;
+
if (!of_live_active() && CONFIG_IS_ENABLED(EVENT)) {
struct event_ft_fixup fixup;
@@ -664,7 +668,6 @@ int image_setup_libfdt(struct bootm_headers *images, void *blob,
if (lmb)
lmb_reserve(lmb, (ulong)blob, of_size);
- fdt_initrd(blob, *initrd_start, *initrd_end);
if (!ft_verify_fdt(blob))
goto err;
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 0601f5f7dc8..25600d62f29 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -55,7 +55,17 @@ int fdt_chosen(void *fdt);
/**
* Add initrd information to the FDT before booting the OS.
*
- * @param fdt FDT address in memory
+ * Adds linux,initrd-start and linux,initrd-end properties to the /chosen node,
+ * creating it if necessary.
+ *
+ * A memory reservation for the ramdisk is added to the FDT, or an existing one
+ * (with matching @initrd_start) updated.
+ *
+ * If @initrd_start == @initrd_end this function does nothing and returns 0.
+ *
+ * @fdt: Pointer to FDT in memory
+ * @initrd_start: Start of ramdisk
+ * @initrd_end: End of ramdisk
* Return: 0 if ok, or -FDT_ERR_... on error
*/
int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end);