|  | /* | 
|  | * (C) Copyright 2000-2004 | 
|  | * DENX Software Engineering | 
|  | * Wolfgang Denk, wd@denx.de | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU General Public License as | 
|  | * published by the Free Software Foundation; either version 2 of | 
|  | * the License, or (at your option) any later version. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU General Public License | 
|  | * along with this program; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
|  | * MA 02111-1307 USA | 
|  | */ | 
|  |  | 
|  | #ifndef _MKIIMAGE_H_ | 
|  | #define _MKIIMAGE_H_ | 
|  |  | 
|  | #include "os_support.h" | 
|  | #include <errno.h> | 
|  | #include <fcntl.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  | #include <string.h> | 
|  | #include <sys/stat.h> | 
|  | #include <time.h> | 
|  | #include <unistd.h> | 
|  | #include <sha1.h> | 
|  | #include "fdt_host.h" | 
|  |  | 
|  | #undef MKIMAGE_DEBUG | 
|  |  | 
|  | #ifdef MKIMAGE_DEBUG | 
|  | #define debug(fmt,args...)	printf (fmt ,##args) | 
|  | #else | 
|  | #define debug(fmt,args...) | 
|  | #endif /* MKIMAGE_DEBUG */ | 
|  |  | 
|  | #define MKIMAGE_TMPFILE_SUFFIX		".tmp" | 
|  | #define MKIMAGE_MAX_TMPFILE_LEN		256 | 
|  | #define MKIMAGE_DEFAULT_DTC_OPTIONS	"-I dts -O dtb -p 500" | 
|  | #define MKIMAGE_MAX_DTC_CMDLINE_LEN	512 | 
|  | #define MKIMAGE_DTC			"dtc"   /* assume dtc is in $PATH */ | 
|  |  | 
|  | /* | 
|  | * This structure defines all such variables those are initialized by | 
|  | * mkimage main core and need to be referred by image type specific | 
|  | * functions | 
|  | */ | 
|  | struct mkimage_params { | 
|  | int dflag; | 
|  | int eflag; | 
|  | int fflag; | 
|  | int lflag; | 
|  | int vflag; | 
|  | int xflag; | 
|  | int os; | 
|  | int arch; | 
|  | int type; | 
|  | int comp; | 
|  | char *dtc; | 
|  | unsigned int addr; | 
|  | unsigned int ep; | 
|  | char *imagename; | 
|  | char *datafile; | 
|  | char *imagefile; | 
|  | char *cmdname; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * image type specific variables and callback functions | 
|  | */ | 
|  | struct image_type_params { | 
|  | /* name is an identification tag string for added support */ | 
|  | char *name; | 
|  | /* | 
|  | * header size is local to the specific image type to be supported, | 
|  | * mkimage core treats this as number of bytes | 
|  | */ | 
|  | uint32_t header_size; | 
|  | /* Image type header pointer */ | 
|  | void *hdr; | 
|  | /* | 
|  | * There are several arguments that are passed on the command line | 
|  | * and are registered as flags in mkimage_params structure. | 
|  | * This callback function can be used to check the passed arguments | 
|  | * are in-lined with the image type to be supported | 
|  | * | 
|  | * Returns 1 if parameter check is successful | 
|  | */ | 
|  | int (*check_params) (struct mkimage_params *); | 
|  | /* | 
|  | * This function is used by list command (i.e. mkimage -l <filename>) | 
|  | * image type verification code must be put here | 
|  | * | 
|  | * Returns 0 if image header verification is successful | 
|  | * otherwise, returns respective negative error codes | 
|  | */ | 
|  | int (*verify_header) (unsigned char *, int, struct mkimage_params *); | 
|  | /* Prints image information abstracting from image header */ | 
|  | void (*print_header) (const void *); | 
|  | /* | 
|  | * The header or image contents need to be set as per image type to | 
|  | * be generated using this callback function. | 
|  | * further output file post processing (for ex. checksum calculation, | 
|  | * padding bytes etc..) can also be done in this callback function. | 
|  | */ | 
|  | void (*set_header) (void *, struct stat *, int, | 
|  | struct mkimage_params *); | 
|  | /* | 
|  | * Some image generation support for ex (default image type) supports | 
|  | * more than one type_ids, this callback function is used to check | 
|  | * whether input (-T <image_type>) is supported by registered image | 
|  | * generation/list low level code | 
|  | */ | 
|  | int (*check_image_type) (uint8_t); | 
|  | /* This callback function will be executed if fflag is defined */ | 
|  | int (*fflag_handle) (struct mkimage_params *); | 
|  | /* pointer to the next registered entry in linked list */ | 
|  | struct image_type_params *next; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * Exported functions | 
|  | */ | 
|  | void mkimage_register (struct image_type_params *tparams); | 
|  |  | 
|  | /* | 
|  | * There is a c file associated with supported image type low level code | 
|  | * for ex. default_image.c, fit_image.c | 
|  | * init is the only function referred by mkimage core. | 
|  | * to avoid a single lined header file, you can define them here | 
|  | * | 
|  | * Supported image types init functions | 
|  | */ | 
|  | void init_kwb_image_type (void); | 
|  | void init_default_image_type (void); | 
|  | void init_fit_image_type (void); | 
|  |  | 
|  | #endif /* _MKIIMAGE_H_ */ |