flash: Tidy up coding style for flash functions
[oweals/u-boot.git] / common / image.c
index 75d5dd944ff0487bb0d712b1388c149343ac30fc..d8d14e871c6473b68c11938c5357ab7edfefe157 100644 (file)
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <cpu_func.h>
 #include <env.h>
+#include <malloc.h>
 #include <u-boot/crc.h>
 #include <watchdog.h>
 
@@ -201,6 +202,14 @@ struct table_info {
        const table_entry_t *table;
 };
 
+static const struct comp_magic_map image_comp[] = {
+       {       IH_COMP_BZIP2,  "bzip2",        {0x42, 0x5a},},
+       {       IH_COMP_GZIP,   "gzip",         {0x1f, 0x8b},},
+       {       IH_COMP_LZMA,   "lzma",         {0x5d, 0x00},},
+       {       IH_COMP_LZO,    "lzo",          {0x89, 0x4c},},
+       {       IH_COMP_NONE,   "none",         {},     },
+};
+
 static const struct table_info table_info[IH_COUNT] = {
        { "architecture", IH_ARCH_COUNT, uimage_arch },
        { "compression", IH_COMP_COUNT, uimage_comp },
@@ -406,6 +415,21 @@ static void print_decomp_msg(int comp_type, int type, bool is_xip)
                printf("   Uncompressing %s\n", name);
 }
 
+int image_decomp_type(const unsigned char *buf, ulong len)
+{
+       const struct comp_magic_map *cmagic = image_comp;
+
+       if (len < 2)
+               return -EINVAL;
+
+       for (; cmagic->comp_id > 0; cmagic++) {
+               if (!memcmp(buf, cmagic->magic, 2))
+                       break;
+       }
+
+       return cmagic->comp_id;
+}
+
 int image_decomp(int comp, ulong load, ulong image_start, int type,
                 void *load_buf, void *image_buf, ulong image_len,
                 uint unc_len, ulong *load_end)
@@ -557,9 +581,9 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch,
 /* Shared dual-format routines */
 /*****************************************************************************/
 #ifndef USE_HOSTCC
-ulong load_addr = CONFIG_SYS_LOAD_ADDR;        /* Default Load Address */
-ulong save_addr;                       /* Default Save Address */
-ulong save_size;                       /* Default Save Size (in bytes) */
+ulong image_load_addr = CONFIG_SYS_LOAD_ADDR;  /* Default Load Address */
+ulong image_save_addr;                 /* Default Save Address */
+ulong image_save_size;                 /* Default Save Size (in bytes) */
 
 static int on_loadaddr(const char *name, const char *value, enum env_op op,
        int flags)
@@ -567,7 +591,7 @@ static int on_loadaddr(const char *name, const char *value, enum env_op op,
        switch (op) {
        case env_op_create:
        case env_op_overwrite:
-               load_addr = simple_strtoul(value, NULL, 16);
+               image_load_addr = simple_strtoul(value, NULL, 16);
                break;
        default:
                break;
@@ -936,15 +960,15 @@ ulong genimg_get_kernel_addr_fit(char * const img_addr,
 
        /* find out kernel image address */
        if (!img_addr) {
-               kernel_addr = load_addr;
+               kernel_addr = image_load_addr;
                debug("*  kernel: default image load address = 0x%08lx\n",
-                     load_addr);
+                     image_load_addr);
 #if CONFIG_IS_ENABLED(FIT)
-       } else if (fit_parse_conf(img_addr, load_addr, &kernel_addr,
+       } else if (fit_parse_conf(img_addr, image_load_addr, &kernel_addr,
                                  fit_uname_config)) {
                debug("*  kernel: config '%s' from image at 0x%08lx\n",
                      *fit_uname_config, kernel_addr);
-       } else if (fit_parse_subimage(img_addr, load_addr, &kernel_addr,
+       } else if (fit_parse_subimage(img_addr, image_load_addr, &kernel_addr,
                                     fit_uname_kernel)) {
                debug("*  kernel: subimage '%s' from image at 0x%08lx\n",
                      *fit_uname_kernel, kernel_addr);
@@ -1102,7 +1126,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
                        if (images->fit_uname_os)
                                default_addr = (ulong)images->fit_hdr_os;
                        else
-                               default_addr = load_addr;
+                               default_addr = image_load_addr;
 
                        if (fit_parse_conf(select, default_addr,
                                           &rd_addr, &fit_uname_config)) {