[new uImage] Optimize gen_get_image() flow control
authorMarian Balakowicz <m8@semihalf.com>
Wed, 27 Feb 2008 10:00:47 +0000 (11:00 +0100)
committerMarian Balakowicz <m8@semihalf.com>
Wed, 27 Feb 2008 10:00:47 +0000 (11:00 +0100)
When CONFIG_HAS_DATAFLASH is not defined gen_get_image() routine has nothing
to do, update its control flow to better reflect that simple case.

Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
common/image.c

index ea27b0ba5b6ce1d90e8b886fee3143967678d0a6..dd552649ac8aad24e4eec140b1f4a007d7e42d1a 100644 (file)
@@ -408,55 +408,57 @@ int gen_image_get_format (void *img_addr)
  */
 ulong gen_get_image (ulong img_addr)
 {
-       ulong ram_addr, h_size, d_size;
-
-       h_size = image_get_header_size ();
-#if defined(CONFIG_FIT)
-       if (sizeof(struct fdt_header) > h_size)
-               h_size = sizeof(struct fdt_header);
-#endif
+       ulong ram_addr = img_addr;
 
 #ifdef CONFIG_HAS_DATAFLASH
+       ulong h_size, d_size;
+
        if (addr_dataflash (img_addr)){
+               /* ger RAM address */
                ram_addr = CFG_LOAD_ADDR;
+
+               /* get header size */
+               h_size = image_get_header_size ();
+#if defined(CONFIG_FIT)
+               if (sizeof(struct fdt_header) > h_size)
+                       h_size = sizeof(struct fdt_header);
+#endif
+
+               /* read in header */
                debug ("   Reading image header from dataflash address "
                        "%08lx to RAM address %08lx\n", img_addr, ram_addr);
-               read_dataflash (img_addr, h_size, (char *)ram_addr);
-       } else
-#endif
-               return img_addr;
 
-       ram_addr = img_addr;
+               read_dataflash (img_addr, h_size, (char *)ram_addr);
 
-       switch (gen_image_get_format ((void *)ram_addr)) {
-       case IMAGE_FORMAT_LEGACY:
-               d_size = image_get_data_size ((image_header_t *)ram_addr);
-               debug ("   Legacy format image found at 0x%08lx, size 0x%08lx\n",
-                               ram_addr, d_size);
-               break;
+               /* get data size */
+               switch (gen_image_get_format ((void *)ram_addr)) {
+               case IMAGE_FORMAT_LEGACY:
+                       d_size = image_get_data_size ((image_header_t *)ram_addr);
+                       debug ("   Legacy format image found at 0x%08lx, size 0x%08lx\n",
+                                       ram_addr, d_size);
+                       break;
 #if defined(CONFIG_FIT)
-       case IMAGE_FORMAT_FIT:
-               d_size = fdt_totalsize((void *)ram_addr) - h_size;
-               debug ("   FIT/FDT format image found at 0x%08lx, size 0x%08lx\n",
-                               ram_addr, d_size);
-
-               break;
+               case IMAGE_FORMAT_FIT:
+                       d_size = fdt_totalsize((void *)ram_addr) - h_size;
+                       debug ("   FIT/FDT format image found at 0x%08lx, size 0x%08lx\n",
+                                       ram_addr, d_size);
+                       break;
 #endif
-       default:
-               printf ("   No valid image found at 0x%08lx\n", img_addr);
-               return ram_addr;
-       }
+               default:
+                       printf ("   No valid image found at 0x%08lx\n", img_addr);
+                       return ram_addr;
+               }
 
-#ifdef CONFIG_HAS_DATAFLASH
-       if (addr_dataflash (img_addr)) {
+               /* read in image data */
                debug ("   Reading image remaining data from dataflash address "
                        "%08lx to RAM address %08lx\n", img_addr + h_size,
                        ram_addr + h_size);
 
                read_dataflash (img_addr + h_size, d_size,
                                (char *)(ram_addr + h_size));
+
        }
-#endif
+#endif /* CONFIG_HAS_DATAFLASH */
 
        return ram_addr;
 }