This is second step towards cleaning mkimage code for kwbimage
support in clean way. In this patch-
1. The image_get_header_size function call is replaced by sizeof(image_header_t)
   in default_image.c
2. image header code moved form mkimage.c to default_image .c

Signed-off-by: Prafulla Wadaskar <prafu...@marvell.com>
---
 tools/default_image.c |   22 ++++++++++++++++++----
 tools/default_image.h |    1 +
 tools/mkimage.c       |   24 ++++++++++++------------
 tools/mkimage.h       |    8 ++++++++
 4 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/tools/default_image.c b/tools/default_image.c
index 45afde1..e1a9bc7 100644
--- a/tools/default_image.c
+++ b/tools/default_image.c
@@ -29,6 +29,20 @@
 #include <image.h>
 #include "default_image.h"
 
+image_header_t header;
+
+/*
+ * Default image parameters
+ */
+struct image_type_params defimage_params = {
+       .header_size = sizeof(image_header_t),
+       .hdr = (void*)&header,
+};
+
+void *image_get_tparams (void){
+       return (void *)&defimage_params;
+}
+
 int image_check_params (struct mkimage_params *params)
 {
        return  ((params->dflag && (params->fflag || params->lflag)) ||
@@ -100,13 +114,13 @@ void image_set_header (char *ptr, struct stat *sbuf,
        image_header_t * hdr = (image_header_t *)ptr;
 
        checksum = crc32 (0,
-                       (const char *)(ptr + image_get_header_size ()),
-                       sbuf->st_size - image_get_header_size ());
+                       (const char *)(ptr + sizeof(image_header_t)),
+                       sbuf->st_size - sizeof(image_header_t));
 
        /* Build new header */
        image_set_magic (hdr, IH_MAGIC);
        image_set_time (hdr, sbuf->st_mtime);
-       image_set_size (hdr, sbuf->st_size - image_get_header_size ());
+       image_set_size (hdr, sbuf->st_size - sizeof(image_header_t));
        image_set_load (hdr, params->addr);
        image_set_ep (hdr, params->ep);
        image_set_dcrc (hdr, checksum);
@@ -117,7 +131,7 @@ void image_set_header (char *ptr, struct stat *sbuf,
 
        image_set_name (hdr, params->imagename);
 
-       checksum = crc32 (0, (const char *)hdr, image_get_header_size ());
+       checksum = crc32 (0, (const char *)hdr, sizeof(image_header_t));
 
        image_set_hcrc (hdr, checksum);
 }
diff --git a/tools/default_image.h b/tools/default_image.h
index 6ebc689..2311ede 100644
--- a/tools/default_image.h
+++ b/tools/default_image.h
@@ -25,6 +25,7 @@
 #ifndef _DEFAULT_IMAGE_H_
 #define _DEFAULT_IMAGE_H_
 
+void *image_get_tparams (void);
 int image_check_params (struct mkimage_params *params);
 int image_verify_header (char *ptr, int image_size,
                        struct mkimage_params *params);
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 66d6c8e..d1636d8 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -49,9 +49,6 @@ struct mkimage_params params = {
        .cmdname = "",
 };
 
-image_header_t header;
-image_header_t *hdr = &header;
-
 int
 main (int argc, char **argv)
 {
@@ -59,6 +56,7 @@ main (int argc, char **argv)
        struct stat sbuf;
        unsigned char *ptr;
        int retval;
+       struct image_type_params *tparams = image_get_tparams ();
 
        params.cmdname = *argv;
 
@@ -163,7 +161,7 @@ NXTARG:             ;
                params.ep = params.addr;
                /* If XIP, entry point must be after the U-Boot header */
                if (params.xflag)
-                       params.ep += image_get_header_size ();
+                       params.ep += tparams->header_size;
        }
 
        /*
@@ -171,11 +169,11 @@ NXTARG:           ;
         * the size of the U-Boot header.
         */
        if (params.xflag) {
-               if (params.ep != params.addr + image_get_header_size ()) {
+               if (params.ep != params.addr + tparams->header_size) {
                        fprintf (stderr,
                                "%s: For XIP, the entry point must be the load 
addr + %lu\n",
                                params.cmdname,
-                               (unsigned long)image_get_header_size ());
+                               (unsigned long)tparams->header_size);
                        exit (EXIT_FAILURE);
                }
        }
@@ -209,7 +207,7 @@ NXTARG:             ;
                        exit (EXIT_FAILURE);
                }
 
-               if ((unsigned)sbuf.st_size < image_get_header_size ()) {
+               if ((unsigned)sbuf.st_size < tparams->header_size) {
                        fprintf (stderr,
                                "%s: Bad size: \"%s\" is no valid image\n",
                                params.cmdname, params.imagefile);
@@ -247,9 +245,10 @@ NXTARG:            ;
         *
         * write dummy header, to be fixed later
         */
-       memset (hdr, 0, image_get_header_size ());
+       memset (tparams->hdr, 0, tparams->header_size);
 
-       if (write(ifd, hdr, image_get_header_size ()) != image_get_header_size 
()) {
+       if (write(ifd, tparams->hdr, tparams->header_size)
+                                       != tparams->header_size) {
                fprintf (stderr, "%s: Write error on %s: %s\n",
                        params.cmdname, params.imagefile, strerror(errno));
                exit (EXIT_FAILURE);
@@ -366,6 +365,7 @@ copy_file (int ifd, const char *datafile, int pad)
        int zero = 0;
        int offset = 0;
        int size;
+       struct image_type_params *tparams = image_get_tparams ();
 
        if (params.vflag) {
                fprintf (stderr, "Adding Image %s\n", datafile);
@@ -398,14 +398,14 @@ copy_file (int ifd, const char *datafile, int pad)
                 * reserved for it.
                 */
 
-               if ((unsigned)sbuf.st_size < image_get_header_size ()) {
+               if ((unsigned)sbuf.st_size < tparams->header_size) {
                        fprintf (stderr,
                                "%s: Bad size: \"%s\" is too small for XIP\n",
                                params.cmdname, datafile);
                        exit (EXIT_FAILURE);
                }
 
-               for (p = ptr; p < ptr + image_get_header_size (); p++) {
+               for (p = ptr; p < ptr + tparams->header_size; p++) {
                        if ( *p != 0xff ) {
                                fprintf (stderr,
                                        "%s: Bad file: \"%s\" has invalid 
buffer for XIP\n",
@@ -414,7 +414,7 @@ copy_file (int ifd, const char *datafile, int pad)
                        }
                }
 
-               offset = image_get_header_size ();
+               offset = tparams->header_size;
        }
 
        size = sbuf.st_size - offset;
diff --git a/tools/mkimage.h b/tools/mkimage.h
index 0418644..3e94911 100644
--- a/tools/mkimage.h
+++ b/tools/mkimage.h
@@ -69,4 +69,12 @@ struct mkimage_params {
        char *cmdname;
 };
 
+/*
+ * These are image type specific variables
+ */
+struct image_type_params {
+       uint32_t header_size;
+       void *hdr;
+};
+
 #endif /* _MKIIMAGE_H_ */
-- 
1.5.3.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to