]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - common/image-fdt.c
Kconfig: Move CONFIG_FIT and related options to Kconfig
[people/ms/u-boot.git] / common / image-fdt.c
index d9e47283c716c4d47b709e1390a78dd376f95b08..8c3f3e63740c08db668bcd6a6d9f96c68bdf2696 100644 (file)
@@ -14,6 +14,7 @@
 #include <errno.h>
 #include <image.h>
 #include <libfdt.h>
+#include <mapmem.h>
 #include <asm/io.h>
 
 #ifndef CONFIG_SYS_FDT_PAD
@@ -230,7 +231,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
        ulong           fdt_addr;
        char            *fdt_blob = NULL;
        void            *buf;
-#if defined(CONFIG_FIT)
+#if CONFIG_IS_ENABLED(FIT)
        const char      *fit_uname_config = images->fit_uname_cfg;
        const char      *fit_uname_fdt = NULL;
        ulong           default_addr;
@@ -245,7 +246,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
        if (argc > 2)
                select = argv[2];
        if (select || genimg_has_config(images)) {
-#if defined(CONFIG_FIT)
+#if CONFIG_IS_ENABLED(FIT)
                if (select) {
                        /*
                         * If the FDT blob comes from the FIT image and the
@@ -275,7 +276,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                                debug("*  fdt: cmdline image address = 0x%08lx\n",
                                      fdt_addr);
                        }
-#if defined(CONFIG_FIT)
+#if CONFIG_IS_ENABLED(FIT)
                } else {
                        /* use FIT configuration provided in first bootm
                         * command argument
@@ -325,7 +326,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 
                        if (load == image_start ||
                            load == image_data) {
-                               fdt_blob = (char *)image_data;
+                               fdt_addr = load;
                                break;
                        }
 
@@ -350,7 +351,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                         * (libfdt based) and raw FDT blob (also libfdt
                         * based).
                         */
-#if defined(CONFIG_FIT)
+#if CONFIG_IS_ENABLED(FIT)
                        /* check FDT blob vs FIT blob */
                        if (fit_check_format(buf)) {
                                ulong load, len;
@@ -449,7 +450,7 @@ error:
  * addresses of some of the devices in the device tree are compared with the
  * actual addresses at which U-Boot has placed them.
  *
- * Returns 1 on success, 0 on failure.  If 0 is returned, U-boot will halt the
+ * Returns 1 on success, 0 on failure.  If 0 is returned, U-Boot will halt the
  * boot process.
  */
 __weak int ft_verify_fdt(void *fdt)
@@ -470,6 +471,10 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
        int ret = -EPERM;
        int fdt_ret;
 
+       if (fdt_root(blob) < 0) {
+               printf("ERROR: root node setup failed\n");
+               goto err;
+       }
        if (fdt_chosen(blob) < 0) {
                printf("ERROR: /chosen node create failed\n");
                goto err;
@@ -487,7 +492,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
                }
        }
        if (IMAGE_OF_SYSTEM_SETUP) {
-               if (ft_system_setup(blob, gd->bd)) {
+               fdt_ret = ft_system_setup(blob, gd->bd);
+               if (fdt_ret) {
                        printf("ERROR: system-specific fdt fixup failed: %s\n",
                               fdt_strerror(fdt_ret));
                        goto err;