diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-09-25 11:09:59 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-10-12 16:30:17 +0200 |
commit | 4dee9d16c01cec6f290f9ff25cda72416c8d2d3f (patch) | |
tree | 6ca40f110dfad0658f0f0749b2cd09d81d20f493 /arch | |
parent | 9ddd7b037101828457867f21f54745f2f93a5406 (diff) | |
download | barebox-4dee9d16c01cec6f290f9ff25cda72416c8d2d3f.tar.gz barebox-4dee9d16c01cec6f290f9ff25cda72416c8d2d3f.tar.xz |
of: Add common device tree register function
The different architectures duplicate some code around unflattening and
registering the device tree. Add common functions to reduce this
duplication.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/dtb.c | 8 | ||||
-rw-r--r-- | arch/kvx/lib/dtb.c | 12 | ||||
-rw-r--r-- | arch/mips/boot/dtb.c | 8 | ||||
-rw-r--r-- | arch/openrisc/lib/dtb.c | 8 | ||||
-rw-r--r-- | arch/riscv/boot/dtb.c | 14 | ||||
-rw-r--r-- | arch/sandbox/board/dtb.c | 5 |
6 files changed, 6 insertions, 49 deletions
diff --git a/arch/arm/cpu/dtb.c b/arch/arm/cpu/dtb.c index 8094eebf07..35f251d99a 100644 --- a/arch/arm/cpu/dtb.c +++ b/arch/arm/cpu/dtb.c @@ -26,13 +26,7 @@ static int of_arm_init(void) return 0; } - root = of_unflatten_dtb(fdt); - if (!IS_ERR(root)) { - of_set_root_node(root); - of_fix_tree(root); - if (IS_ENABLED(CONFIG_OFDEVICE)) - of_probe(); - } + barebox_register_fdt(fdt); return 0; } diff --git a/arch/kvx/lib/dtb.c b/arch/kvx/lib/dtb.c index 17dcab197f..54ffddaf0a 100644 --- a/arch/kvx/lib/dtb.c +++ b/arch/kvx/lib/dtb.c @@ -12,17 +12,7 @@ static int of_kvx_init(void) int ret; struct device_node *root; - root = of_unflatten_dtb(boot_dtb); - if (IS_ERR(root)) { - ret = PTR_ERR(root); - panic("Failed to parse DTB: %d\n", ret); - } - - ret = of_set_root_node(root); - if (ret) - panic("Failed to set of root node\n"); - - of_probe(); + barebox_register_fdt(boot_dtb); return 0; } diff --git a/arch/mips/boot/dtb.c b/arch/mips/boot/dtb.c index 5e316270f6..2aff4adbe7 100644 --- a/arch/mips/boot/dtb.c +++ b/arch/mips/boot/dtb.c @@ -42,13 +42,7 @@ static int of_mips_init(void) if (!fdt) fdt = __dtb_start; - root = of_unflatten_dtb(fdt); - if (!IS_ERR(root)) { - pr_debug("using internal DTB\n"); - of_set_root_node(root); - if (IS_ENABLED(CONFIG_OFDEVICE)) - of_probe(); - } + barebox_register_fdt(fdt); return 0; } diff --git a/arch/openrisc/lib/dtb.c b/arch/openrisc/lib/dtb.c index 2dd8e4e014..61cf35ddf3 100644 --- a/arch/openrisc/lib/dtb.c +++ b/arch/openrisc/lib/dtb.c @@ -28,13 +28,7 @@ static int of_openrisc_init(void) if (root) return 0; - root = of_unflatten_dtb(__dtb_start); - if (!IS_ERR(root)) { - pr_debug("using internal DTB\n"); - of_set_root_node(root); - if (IS_ENABLED(CONFIG_OFDEVICE)) - of_probe(); - } + barebox_register_fdt(__dtb_start); return 0; } diff --git a/arch/riscv/boot/dtb.c b/arch/riscv/boot/dtb.c index 5d73413a43..b9b68fc7f2 100644 --- a/arch/riscv/boot/dtb.c +++ b/arch/riscv/boot/dtb.c @@ -18,19 +18,7 @@ extern char __dtb_start[]; static int of_riscv_init(void) { - struct device_node *root; - - root = of_get_root_node(); - if (root) - return 0; - - root = of_unflatten_dtb(__dtb_start); - if (!IS_ERR(root)) { - pr_debug("using internal DTB\n"); - of_set_root_node(root); - if (IS_ENABLED(CONFIG_OFDEVICE)) - of_probe(); - } + barebox_register_fdt(__dtb_start); return 0; } diff --git a/arch/sandbox/board/dtb.c b/arch/sandbox/board/dtb.c index d11bde0249..da24521992 100644 --- a/arch/sandbox/board/dtb.c +++ b/arch/sandbox/board/dtb.c @@ -54,10 +54,7 @@ static int of_sandbox_init(void) if (IS_ERR(root)) return PTR_ERR(root); - of_set_root_node(root); - of_fix_tree(root); - if (IS_ENABLED(CONFIG_OFDEVICE)) - of_probe(); + barebox_register_of(root); return 0; } |