diff options
Diffstat (limited to 'util/marvell/doimage_mv/doimage.h')
-rw-r--r-- | util/marvell/doimage_mv/doimage.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/util/marvell/doimage_mv/doimage.h b/util/marvell/doimage_mv/doimage.h new file mode 100644 index 0000000000..d0000c2731 --- /dev/null +++ b/util/marvell/doimage_mv/doimage.h @@ -0,0 +1,155 @@ +/******************************************************************************* +Copyright (C) Marvell International Ltd. and its affiliates + +Marvell GPL License Option + +If you received this File from Marvell, you may opt to use, redistribute and/or +modify this File in accordance with the terms and conditions of the General +Public License Version 2, June 1991 (the "GPL License"), a copy of which is +available along with the File in the license.txt file or by writing to the Free +Software Foundation, Inc. + +THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY +DISCLAIMED. The GPL License provides additional details about this warranty +disclaimer. + +*******************************************************************************/ +#ifndef _INC_DOIMAGE_H +#define _INC_DOIMAGE_H + +#include <sys/types.h> + +/* use the same version as in "bootrom.inc" file */ +#define VERSION_NUMBER "2.20" +#define PRODUCT_SUPPORT "Marvell Armada-3xx series" + +#define RSA_KEY_SIZE 2048 +#define RSA_EXPONENT 65537 + +#define T_OPTION_MASK 0x1 /* image type */ +#define D_OPTION_MASK 0x2 /* image destination */ +#define E_OPTION_MASK 0x4 /* image execution address */ +#define S_OPTION_MASK 0x8 /* starting sector */ +#define R_OPTION_MASK 0x10 /* DRAM file */ +#define C_OPTION_MASK 0x20 /* headers definition file */ +#define P_OPTION_MASK 0x40 /* NAND Page size */ +#define M_OPTION_MASK 0x80 /* TWSI serial init file */ +#define W_OPTION_MASK 0x100 /* HEX file width */ +#define H_OPTION_MASK 0x200 /* Header mode */ +#define X_OPTION_MASK 0x400 /* Pre padding */ +#define Y_OPTION_MASK 0x800 /* Post padding */ +#define J_OPTION_MASK 0x1000 /* JTAG Enabled */ +#define B_OPTION_MASK 0x2000 /* Box ID */ +#define Z_OPTION_MASK 0x4000 /* secure boot mode - KAK private key */ +#define F_OPTION_MASK 0x8000 /* Flash ID */ +#define A_OPTION_MASK 0x10000 /* secure boot mode - CSK private key */ +#define G_OPTION_MASK 0x20000 /* binary file */ +#define K_OPTION_MASK 0x40000 /* secure boot mode - CSK private key index */ +#define L_OPTION_MASK 0x80000 /* NAND block size (in 64K chunks) */ +#define N_OPTION_MASK 0x100000 /* NAND cell technology MLC/SLC */ +#define p_OPTION_MASK 0x200000 /* Print enable */ +#define b_OPTION_MASK 0x400000 /* Baudrate */ +#define u_OPTION_MASK 0x800000 /* debug serial port number */ +#define m_OPTION_MASK 0x1000000 /* debug serial port MPP configuration */ + +#ifndef O_BINARY /* should be defined on __WIN32__ */ +#define O_BINARY 0 +#endif + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + +typedef enum { + IMG_SATA, + IMG_UART, + IMG_FLASH, + IMG_MMC, + IMG_BOOTROM, + IMG_NAND, + IMG_HEX, + IMG_BIN, + IMG_PEX, + IMG_I2C + +} IMG_TYPE; + +#define REGULAR_IMAGE(opt) \ + (((opt)->image_type != IMG_BOOTROM) && \ + ((opt)->image_type != IMG_HEX) && ((opt)->image_type != IMG_BIN)) + +typedef struct { + IMG_TYPE img_type; /* image type */ + char *img_name; /* image name string */ + unsigned int img_opt; /* mandatory options for this image type */ + +} IMG_MAP; + +typedef enum { + IMG_FILE_INDX = 1, + HDR_FILE_INDX = 2 + +} FILE_IDX; + +typedef enum { + HDR_IMG_ONE_FILE = 1, /* Create one file with header and image */ + HDR_IMG_TWO_FILES = 2, /* Create separate header and image files */ + HDR_ONLY = 3, /* Create only header */ + IMG_ONLY = 4, /* Create only image */ + +} HEADER_MODE; + +typedef struct { + IMG_TYPE image_type; + char *fname_dram; /* DRAM init file for "register" header */ + char *fname_twsi; /* TWSI serial init file */ + char *fname_bin; /* binary code file for "binary" header */ + char *fname_prkey; /* KAK RSA Private key file */ + char *fname_prkeyCsk; /* CSK RSA Private key file */ + char *fname_list; /* headers definition file */ + u32 flags; /* user-defined flags */ + u32 req_flags; /* mandatory flags */ + u32 image_source; /* starting sector */ + u32 image_dest; /* image destination */ + u32 image_exec; /* image execution */ + unsigned int hex_width; /* HEX file width */ + unsigned int header_mode; /* Header file mode */ + int csk_index; + int pre_padding; + int post_padding; + int prepadding_size; + int postpadding_size; + unsigned int bytesToAlign; + unsigned int nandPageSize; + unsigned int nandBlkSize; + char nandCellTech; + u32 boxId; + u32 flashId; + u32 jtagDelay; + char *image_buf; /* image buffer for image pre-load */ + u32 image_sz; /* total size of pre-loaded image buffer including + paddings */ + u32 img_gap; /* gap between header and image start point */ + u32 baudRate; /* debug print port baudrate */ + u32 debugPortNum; /* debug print port number */ + u32 debugPortMpp; /* debug print port MPP configuration */ + union { + char *fname_arr[5]; + struct { + char *in; + char *out; + char *hdr_out; + char *romc; + char *romd; + } fname; + }; +} USER_OPTIONS; + +/* Function declaration */ +void print_usage(void); + +/* 32 bit checksum */ +MV_U32 checksum32(void *start, MV_U32 len, MV_U32 csum); +MV_U8 checksum8(void *start, MV_U32 len, MV_U8 csum); +MV_U32 crc32(MV_U32 crc, volatile MV_U32 *buf, MV_U32 len); + +#endif /* _INC_DOIMAGE_H */ |