summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-10-23 18:58:54 -0600
committerSimon Glass <sjg@chromium.org>2014-11-21 04:43:18 +0100
commitc654b5172a65faba2b541ee1fda1738534d47241 (patch)
treec3404c860de6b6c30591b5dd58abf9ddf44c162b /common
parent6f4dbc21e47c5c1dd191cbd2f0fb7252340e0dcb (diff)
downloadu-boot-imx-c654b5172a65faba2b541ee1fda1738534d47241.zip
u-boot-imx-c654b5172a65faba2b541ee1fda1738534d47241.tar.gz
u-boot-imx-c654b5172a65faba2b541ee1fda1738534d47241.tar.bz2
fdt: Add ft_system_setup() function for system device tree additions
Add an additional function for adding information to the device tree before booting. This permits additions which are not board-specific. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de> Reviewed-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'common')
-rw-r--r--common/cmd_fdt.c15
-rw-r--r--common/image-fdt.c7
2 files changed, 22 insertions, 0 deletions
diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
index 6f7ea08..25b4675 100644
--- a/common/cmd_fdt.c
+++ b/common/cmd_fdt.c
@@ -576,6 +576,18 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
}
#endif
+#ifdef CONFIG_OF_SYSTEM_SETUP
+ /* Call the board-specific fixup routine */
+ else if (strncmp(argv[1], "sys", 3) == 0) {
+ int err = ft_system_setup(working_fdt, gd->bd);
+
+ if (err) {
+ printf("Failed to add system information to FDT: %s\n",
+ fdt_strerror(err));
+ return CMD_RET_FAILURE;
+ }
+ }
+#endif
/* Create a chosen node */
else if (strncmp(argv[1], "cho", 3) == 0) {
unsigned long initrd_start = 0, initrd_end = 0;
@@ -1015,6 +1027,9 @@ static char fdt_help_text[] =
#ifdef CONFIG_OF_BOARD_SETUP
"fdt boardsetup - Do board-specific set up\n"
#endif
+#ifdef CONFIG_OF_SYSTEM_SETUP
+ "fdt systemsetup - Do system-specific set up\n"
+#endif
"fdt move <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active\n"
"fdt resize - Resize fdt to size + padding to 4k addr\n"
"fdt print <path> [<prop>] - Recursive print starting at <path>\n"
diff --git a/common/image-fdt.c b/common/image-fdt.c
index b95b678..1d76bd6 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -479,6 +479,13 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
goto err;
}
}
+ if (IMAGE_OF_SYSTEM_SETUP) {
+ if (ft_system_setup(blob, gd->bd)) {
+ printf("ERROR: system-specific fdt fixup failed: %s\n",
+ fdt_strerror(fdt_ret));
+ goto err;
+ }
+ }
fdt_fixup_ethernet(blob);
/* Delete the old LMB reservation */