summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authormario.six@gdsys.cc <mario.six@gdsys.cc>2017-02-22 16:07:22 +0100
committerStefan Roese <sr@denx.de>2017-03-23 15:46:23 +0100
commit2a792753d6a1fe8f2310928ebd5534e4d87a8030 (patch)
tree2628e0eeb931eaaba7eaeb02129abd2b43571a64 /common
parent1ec2a80b10c5755cdadbe3c128b607f434e77372 (diff)
dm: Add callback to modify the device tree
Certain boards come in different variations by way of utilizing daughter boards, for example. These boards might contain additional chips, which are added to the main board's busses, e.g. I2C. The device tree support for such boards would either, quite naturally, employ the overlay mechanism to add such chips to the tree, or would use one large default device tree, and delete the devices that are actually not present. Regardless of approach, even on the U-Boot level, a modification of the device tree is a prerequisite to have such modular families of boards supported properly. Therefore, we add an option to make the U-Boot device tree (the actual copy later used by the driver model) writeable, and add a callback method that allows boards to modify the device tree at an early stage, at which, hopefully, also the application of device tree overlays will be possible. Signed-off-by: Mario Six <mario.six@gdsys.cc> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'common')
-rw-r--r--common/board_f.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/common/board_f.c b/common/board_f.c
index 7d1ede0404d..bb24a633fb7 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -751,6 +751,13 @@ static int setup_reloc(void)
return 0;
}
+#ifdef CONFIG_OF_BOARD_FIXUP
+static int fix_fdt(void)
+{
+ return board_fix_fdt((void *)gd->fdt_blob);
+}
+#endif
+
/* ARM calls relocate_code from its crt0.S */
#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX) && \
!CONFIG_IS_ENABLED(X86_64)
@@ -1012,6 +1019,9 @@ static const init_fnc_t init_sequence_f[] = {
#ifdef CONFIG_SYS_EXTBDINFO
setup_board_extra,
#endif
+#ifdef CONFIG_OF_BOARD_FIXUP
+ fix_fdt,
+#endif
INIT_FUNC_WATCHDOG_RESET
reloc_fdt,
setup_reloc,