]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/image-fdt.c
dm: regulator: add regulator command
[karo-tx-uboot.git] / common / image-fdt.c
index 8db3ccb4e7404b5b1f4f0bfca22998414157e0bc..7e2da7b3b7218d10c40167e1d80c0d678ff47c1a 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
@@ -190,7 +191,7 @@ int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size)
        *of_flat_tree = of_start;
        *of_size = of_len;
 
-       set_working_fdt_addr(*of_flat_tree);
+       set_working_fdt_addr((ulong)*of_flat_tree);
        return 0;
 
 error:
@@ -237,6 +238,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
        int             fdt_noffset;
 #endif
        const char *select = NULL;
+       int             ok_no_fdt = 0;
 
        *of_flat_tree = NULL;
        *of_size = 0;
@@ -309,7 +311,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                               fdt_addr);
                        fdt_hdr = image_get_fdt(fdt_addr);
                        if (!fdt_hdr)
-                               goto error;
+                               goto no_fdt;
 
                        /*
                         * move image data to the load address,
@@ -379,7 +381,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                        break;
                default:
                        puts("ERROR: Did not find a cmdline Flattened Device Tree\n");
-                       goto error;
+                       goto no_fdt;
                }
 
                printf("   Booting using the fdt blob at %#08lx\n", fdt_addr);
@@ -413,11 +415,11 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
                        }
                } else {
                        debug("## No Flattened Device Tree\n");
-                       return 0;
+                       goto no_fdt;
                }
        } else {
                debug("## No Flattened Device Tree\n");
-               return 0;
+               goto no_fdt;
        }
 
        *of_flat_tree = fdt_blob;
@@ -427,9 +429,15 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
 
        return 0;
 
+no_fdt:
+       ok_no_fdt = 1;
 error:
        *of_flat_tree = NULL;
        *of_size = 0;
+       if (!select && ok_no_fdt) {
+               debug("Continuing to boot without FDT\n");
+               return 0;
+       }
        return 1;
 }