Merge tag 'md/4.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md
[sfrench/cifs-2.6.git] / arch / mips / generic / init.c
index 1231b5a17b37bd8625bbf3ce55806be000991a7e..3f32b376d30e482774f55aa2cbcc3664a488ddfb 100644 (file)
@@ -122,6 +122,33 @@ void __init device_tree_init(void)
                err = register_up_smp_ops();
 }
 
+int __init apply_mips_fdt_fixups(void *fdt_out, size_t fdt_out_size,
+                                const void *fdt_in,
+                                const struct mips_fdt_fixup *fixups)
+{
+       int err;
+
+       err = fdt_open_into(fdt_in, fdt_out, fdt_out_size);
+       if (err) {
+               pr_err("Failed to open FDT\n");
+               return err;
+       }
+
+       for (; fixups->apply; fixups++) {
+               err = fixups->apply(fdt_out);
+               if (err) {
+                       pr_err("Failed to apply FDT fixup \"%s\"\n",
+                              fixups->description);
+                       return err;
+               }
+       }
+
+       err = fdt_pack(fdt_out);
+       if (err)
+               pr_err("Failed to pack FDT\n");
+       return err;
+}
+
 void __init plat_time_init(void)
 {
        struct device_node *np;