aboutsummaryrefslogtreecommitdiff
path: root/util/marvell/doimage_mv/doimage.h
diff options
context:
space:
mode:
authorRuilin Hao <rlhao@marvell.com>2015-12-10 00:36:10 -0800
committerPatrick Georgi <pgeorgi@google.com>2016-02-11 14:16:08 +0100
commitc52d4f5745bde9e9d0dedc761ae3c0566aa5e2e1 (patch)
tree5c9d43fb4f513a8a8f0bea7a183e2653167d8362 /util/marvell/doimage_mv/doimage.h
parent3bc543a5c320b7edb67e8951c8e7a897a01af8a9 (diff)
util/marvell: Add Marvell doimage utility and dependency in relevant Makefile
- Add the doimage sources in util/marvell - Add dependency in root makefile - Add dependency in makefile for armada38x soc BUG=chrome-os-partner:47462 TEST=emerge-cyclone coreboot BRANCH=tot Change-Id: I81b30e0865cbd619a41659c3f2819ad3bafc5f24 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 4b2a990150580e0b879a346ed8b71b3765b66bab Original-Change-Id: I7e89b5e96206fde97ce69c296850122fd6c858f9 Original-Signed-off-by: Kefei Yao <kfyao@marvell.com> Original-Reviewed-on: https://chromium-review.googlesource.com/318046 Original-Commit-Ready: Kan Yan <kyan@google.com> Original-Tested-by: Kan Yan <kyan@google.com> Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Original-Reviewed-by: Kan Yan <kyan@google.com> Original-Reviewed-by: Yuji Sasaki <sasakiy@chromium.org> Reviewed-on: https://review.coreboot.org/13137 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'util/marvell/doimage_mv/doimage.h')
-rw-r--r--util/marvell/doimage_mv/doimage.h155
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 */