]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - common/image-fdt.c
rockchip: rk3328: dtsi use max-frequency for mmc node
[people/ms/u-boot.git] / common / image-fdt.c
index 5e4e5bd914e8757f8e413586143a3067ecb7da37..c6e8832d66887af9615db5c5fff18492f4b083a8 100644 (file)
@@ -231,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;
@@ -246,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
@@ -276,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
@@ -285,7 +285,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                        fdt_noffset = fit_get_node_from_config(images,
                                                               FIT_FDT_PROP,
                                                               fdt_addr);
-                       if (fdt_noffset == -ENOLINK)
+                       if (fdt_noffset == -ENOENT)
                                return 0;
                        else if (fdt_noffset < 0)
                                return 1;
@@ -351,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;
@@ -450,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)
@@ -458,11 +458,6 @@ __weak int ft_verify_fdt(void *fdt)
        return 1;
 }
 
-__weak int arch_fixup_fdt(void *blob)
-{
-       return 0;
-}
-
 int image_setup_libfdt(bootm_headers_t *images, void *blob,
                       int of_size, struct lmb *lmb)
 {
@@ -483,6 +478,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
                printf("ERROR: arch-specific fdt fixup failed\n");
                goto err;
        }
+       /* Update ethernet nodes */
+       fdt_fixup_ethernet(blob);
        if (IMAGE_OF_BOARD_SETUP) {
                fdt_ret = ft_board_setup(blob, gd->bd);
                if (fdt_ret) {
@@ -499,13 +496,13 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
                        goto err;
                }
        }
-       fdt_fixup_ethernet(blob);
 
        /* Delete the old LMB reservation */
-       lmb_free(lmb, (phys_addr_t)(u32)(uintptr_t)blob,
-                (phys_size_t)fdt_totalsize(blob));
+       if (lmb)
+               lmb_free(lmb, (phys_addr_t)(u32)(uintptr_t)blob,
+                        (phys_size_t)fdt_totalsize(blob));
 
-       ret = fdt_shrink_to_minimum(blob);
+       ret = fdt_shrink_to_minimum(blob, 0);
        if (ret < 0)
                goto err;
        of_size = ret;
@@ -515,7 +512,8 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
                fdt_set_totalsize(blob, of_size);
        }
        /* Create a new LMB reservation */
-       lmb_reserve(lmb, (ulong)blob, of_size);
+       if (lmb)
+               lmb_reserve(lmb, (ulong)blob, of_size);
 
        fdt_initrd(blob, *initrd_start, *initrd_end);
        if (!ft_verify_fdt(blob))