]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/spl/spl.c
spl: zImage support in Falcon mode
[karo-tx-uboot.git] / common / spl / spl.c
index e6a1d794255b5e0e23938fa3a104d8ae1891939c..b7ec333c8a5fcf8081446803b01f0af6d2b2abf0 100644 (file)
@@ -56,6 +56,15 @@ __weak int spl_start_uboot(void)
        puts("SPL: Direct Linux boot not active!\n");
        return 1;
 }
+
+/*
+ * Weak default function for arch specific zImage check. Return zero
+ * and fill start and end address if image is recognized.
+ */
+int __weak bootz_setup(ulong image, ulong *start, ulong *end)
+{
+        return 1;
+}
 #endif
 
 /*
@@ -124,6 +133,20 @@ int spl_parse_image_header(const struct image_header *header)
                /* Signature not found, proceed to other boot methods. */
                return -EINVAL;
 #else
+#ifdef CONFIG_SPL_OS_BOOT
+               ulong start, end;
+
+               if (!bootz_setup((ulong)header, &start, &end)) {
+                       spl_image.name = "Linux";
+                       spl_image.os = IH_OS_LINUX;
+                       spl_image.load_addr = CONFIG_SYS_LOAD_ADDR;
+                       spl_image.entry_point = CONFIG_SYS_LOAD_ADDR;
+                       spl_image.size = end - start;
+                       debug("spl: payload zImage, load addr: 0x%x size: %d\n",
+                             spl_image.load_addr, spl_image.size);
+                       return 0;
+               }
+#endif
                /* Signature not found - assume u-boot.bin */
                debug("mkimage signature not found - ih_magic = %x\n",
                        header->ih_magic);