]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/image.h
bootm: refactor image detection and os load steps
[karo-tx-uboot.git] / include / image.h
index e16c2534052c38fe8ddcbf64019ddbef34cba0b6..9be806e12d7533033c7bd1f7b3358f8c11b1ed37 100644 (file)
@@ -187,6 +187,13 @@ typedef struct image_header {
        uint8_t         ih_name[IH_NMLEN];      /* Image Name           */
 } image_header_t;
 
+typedef struct image_info {
+       ulong           start, end;             /* start/end of blob */
+       ulong           image_start, image_len; /* start of image within blob, len of image */
+       ulong           load;                   /* load addr for the image */
+       uint8_t         comp, type, os;         /* compression, type of image, os type */
+} image_info_t;
+
 /*
  * Legacy and FIT format headers used by do_bootm() and do_bootm_<os>()
  * routines.
@@ -219,10 +226,21 @@ typedef struct bootm_headers {
 #endif
 #endif
 
+       image_info_t    os;             /* os image info */
        ulong           ep;             /* entry point of OS */
 
+       ulong           rd_start, rd_end;/* ramdisk start/end */
+
+#ifdef CONFIG_OF_LIBFDT
+       char            *ft_addr;       /* flat dev tree address */
+#endif
+       ulong           ft_len;         /* length of flat device tree */
+
        int             verify;         /* getenv("verify")[0] != 'n' */
-       struct lmb      *lmb;           /* for memory mgmt */
+       int             valid;          /* set to 1 if we've set values in the header */
+#ifndef USE_HOSTCC
+       struct lmb      lmb;            /* for memory mgmt */
+#endif
 } bootm_headers_t;
 
 /*
@@ -271,6 +289,14 @@ ulong genimg_get_image (ulong img_addr);
 int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
                uint8_t arch, ulong *rd_start, ulong *rd_end);
 
+
+#ifdef CONFIG_OF_LIBFDT
+int boot_get_fdt (int flag, int argc, char *argv[], bootm_headers_t *images,
+               char **of_flat_tree, ulong *of_size);
+int boot_relocate_fdt (struct lmb *lmb, ulong bootmap_base,
+               char **of_flat_tree, ulong *of_size);
+#endif
+
 #if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len,
                  ulong *initrd_start, ulong *initrd_end);