| /******************************************************************************* |
| Copyright (C) Marvell International Ltd. and its affiliates |
| |
| This software file (the "File") is owned and distributed by Marvell |
| International Ltd. and/or its affiliates ("Marvell") under the following |
| alternative licensing terms. Once you have made an election to distribute the |
| File under one of the following license alternatives, please (i) delete this |
| introductory statement regarding license alternatives, (ii) delete the two |
| license alternatives that you have not elected to use and (iii) preserve the |
| Marvell copyright notice above. |
| |
| ******************************************************************************** |
| Marvell Commercial License Option |
| |
| If you received this File from Marvell and you have entered into a commercial |
| license agreement (a "Commercial License") with Marvell, the File is licensed |
| to you under the terms of the applicable Commercial License. |
| |
| ******************************************************************************** |
| 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| 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. |
| ******************************************************************************** |
| Marvell BSD License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File under the following licensing terms. |
| Redistribution and use in source and binary forms, with or without modification, |
| are permitted provided that the following conditions are met: |
| |
| * Redistributions of source code must retain the above copyright notice, |
| this list of conditions and the following disclaimer. |
| |
| * Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| |
| * Neither the name of Marvell nor the names of its contributors may be |
| used to endorse or promote products derived from this software without |
| specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| *******************************************************************************/ |
| #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 seperate 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 */ |