X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tools%2Fimagetool.h;h=a766aa2ae91f72129f55061fd9c7449c163e2cbc;hb=7314ba2bf8452df68d07f251aa59440de58067b0;hp=3fcfb4468d88153e5103035b6ad03f11c55d2fd7;hpb=a2b96ece5be146f4995d737f047e5bbb76079b8f;p=platform%2Fkernel%2Fu-boot.git diff --git a/tools/imagetool.h b/tools/imagetool.h index 3fcfb44..a766aa2 100644 --- a/tools/imagetool.h +++ b/tools/imagetool.h @@ -21,10 +21,15 @@ #include #include +#include + #include "fdt_host.h" #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) +#define ALIGN(x, a) __ALIGN_MASK((x), (typeof(x))(a) - 1) + #define IH_ARCH_DEFAULT IH_ARCH_INVALID /* Information about a file that needs to be placed into the FIT */ @@ -34,6 +39,14 @@ struct content_info { const char *fname; }; +/* FIT auto generation modes */ +enum af_mode { + AF_OFF = 0, /* Needs .its or existing FIT to be provided */ + AF_HASHED_IMG, /* Auto FIT with crc32 hashed images subnodes */ + AF_SIGNED_IMG, /* Auto FIT with signed images subnodes */ + AF_SIGNED_CONF, /* Auto FIT with sha1 images and signed configs */ +}; + /* * This structure defines all such variables those are initialized by * mkimage and dumpimage main core and need to be referred by image @@ -48,6 +61,7 @@ struct image_tool_params { int pflag; int vflag; int xflag; + int Aflag; int skipcpy; int os; int arch; @@ -64,11 +78,16 @@ struct image_tool_params { const char *outfile; /* Output filename */ const char *keydir; /* Directory holding private keys */ const char *keydest; /* Destination .dtb for public key */ + const char *keyfile; /* Filename of private or public key */ + const char *keyname; /* Key name "hint" */ const char *comment; /* Comment to add to signature node */ + /* Algorithm name to use for hashing/signing or NULL to use the one + * specified in the its */ + const char *algo_name; int require_keys; /* 1 to mark signing keys as 'required' */ int file_size; /* Total size of output file */ int orig_file_size; /* Original size for file before padding */ - bool auto_its; /* Automatically create the .its file */ + enum af_mode auto_fit; /* Automatically create the FIT */ int fit_image_type; /* Image type to put into the FIT */ char *fit_ramdisk; /* Ramdisk file to include */ struct content_info *content_head; /* List of files to include */ @@ -76,7 +95,10 @@ struct image_tool_params { bool external_data; /* Store data outside the FIT */ bool quiet; /* Don't output text in normal operation */ unsigned int external_offset; /* Add padding to external data */ + int bl_len; /* Block length in byte for external data */ const char *engine_id; /* Engine to use for signing */ + bool reset_timestamp; /* Reset the timestamp on an existing image */ + struct image_summary summary; /* results of signing process */ }; /* @@ -110,7 +132,7 @@ struct image_type_params { */ int (*verify_header) (unsigned char *, int, struct image_tool_params *); /* Prints image information abstracting from image header */ - void (*print_header) (const void *); + void (*print_header) (const void *, struct image_tool_params *); /* * The header or image contents need to be set as per image type to * be generated using this callback function. @@ -121,9 +143,9 @@ struct image_type_params { struct image_tool_params *); /* * This function is used by the command to retrieve a component - * (sub-image) from the image (i.e. dumpimage -i -p - * ). - * Thus the code to extract a file from an image must be put here. + * (sub-image) from the image (i.e. dumpimage -p + * -o ). Thus the code to extract a file + * from an image must be put here. * * Returns 0 if the file was successfully retrieved from the image, * or a negative value on error. @@ -166,12 +188,17 @@ struct image_type_params *imagetool_get_type(int type); /* * imagetool_verify_print_header() - verifies the image header * - * Scan registered image types and verify the image_header for each - * supported image type. If verification is successful, this prints - * the respective header. + * Verify the image_header for the image type given by tparams. + * If tparams is NULL then scan registered image types and verify the + * image_header for each supported image type. + * If verification is successful, this prints the respective header. + * @ptr: pointer the the image header + * @sbuf: stat information about the file pointed to by ptr + * @tparams: image type parameters or NULL + * @params: mkimage parameters * - * @return 0 on success, negative if input image format does not match with - * any of supported image types + * Return: 0 on success, negative if input image format does not match with + * the given image type */ int imagetool_verify_print_header( void *ptr, @@ -204,7 +231,7 @@ int imagetool_save_subimage( * * @params: mkimage parameters * @fname: filename to check - * @return size of file, or -ve value on error + * Return: size of file, or -ve value on error */ int imagetool_get_filesize(struct image_tool_params *params, const char *fname); @@ -218,7 +245,7 @@ int imagetool_get_filesize(struct image_tool_params *params, const char *fname); * * @cmdname: command name * @fallback: timestamp to use if SOURCE_DATE_EPOCH isn't set - * @return timestamp based on SOURCE_DATE_EPOCH + * Return: timestamp based on SOURCE_DATE_EPOCH */ time_t imagetool_get_source_date( const char *cmdname, @@ -233,6 +260,8 @@ time_t imagetool_get_source_date( void pbl_load_uboot(int fd, struct image_tool_params *mparams); int zynqmpbif_copy_image(int fd, struct image_tool_params *mparams); int imx8image_copy_image(int fd, struct image_tool_params *mparams); +int imx8mimage_copy_image(int fd, struct image_tool_params *mparams); +int rockchip_copy_image(int fd, struct image_tool_params *mparams); #define ___cat(a, b) a ## b #define __cat(a, b) ___cat(a, b) @@ -244,17 +273,19 @@ int imx8image_copy_image(int fd, struct image_tool_params *mparams); * b) we need a API call to get the respective section symbols */ #if defined(__MACH__) #include +#include #define INIT_SECTION(name) do { \ unsigned long name ## _len; \ - char *__cat(pstart_, name) = getsectdata("__TEXT", \ + char *__cat(pstart_, name) = getsectdata("__DATA", \ #name, &__cat(name, _len)); \ + __cat(pstart_, name) += _dyld_get_image_vmaddr_slide(0);\ char *__cat(pstop_, name) = __cat(pstart_, name) + \ __cat(name, _len); \ __cat(__start_, name) = (void *)__cat(pstart_, name); \ __cat(__stop_, name) = (void *)__cat(pstop_, name); \ } while (0) -#define SECTION(name) __attribute__((section("__TEXT, " #name))) +#define SECTION(name) __attribute__((section("__DATA, " #name))) struct image_type_params **__start_image_type, **__stop_image_type; #else