MIPS: generic: Abstract FDT fixup application
Introduce an apply_mips_fdt_fixups() function which can apply fixups to an FDT based upon an array of fixup descriptions. This abstracts that functionality such that legacy board code can apply FDT fixups without requiring lots of duplication. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/16184/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
c3d62fc6a0
commit
e889dfca12
@@ -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;
|
||||
|
Reference in New Issue
Block a user