blob: 914c17f66adb4b6d6aa076a2edeaa60ab8e0076d [file] [log] [blame]
/********************************************************************************
* 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.
******************************************************************************/
#ifndef __IMAGE3_HEADER_H
#define __IMAGE3_HEADER_H
#define MAX_LINUX_BOOTARGS_LEN 4096
typedef struct __sm_image_attr{
int bsm_image_active ; // whether need to load sm image
unsigned int uism_image_load_addr ; // the address sm image is loaded to
unsigned int uism_image_ori_size ; // the original size of sm image
unsigned int uism_image_final_size ; // the final size of sm image
int bsm_image_encrypt ; // whether sm image is encrypted
unsigned int uism_encrypt_image_size ; // the size of encrypted sm image
unsigned int uism_encrypt_image_body_size ; // the size of encrypted image body
int bsm_image_bss_init ; // whether need to init sm image's bbs
unsigned int uism_bss_start_addr ; // the start address of sm bss section
unsigned int uism_bss_length ; // the length of sm bss section
}sm_image_attr ;
typedef struct __cpu0_image_attr{
int bcpu0_image_active ;
unsigned int uicpu0_image_load_addr ;
unsigned int uicpu0_image_ori_size ;
unsigned int uicpu0_image_final_size ;
int bcpu0_image_encrypt ;
unsigned int uicpu0_encrypt_image_size ;
unsigned int uicpu0_encrypt_image_body_size ;
int bcpu0_image_bss_init ;
unsigned int uicpu0_bss_start_addr ;
unsigned int uicpu0_bss_length ;
}cpu0_image_attr ;
typedef struct _linux_hdr_t_ {
unsigned int kernel_size;
unsigned int ramdisk_size;
unsigned int ramdisk_addr;
unsigned char reserved[20]; /* 32 bytes aligned */
} linux_hdr_t;
//cpu1 is reserved
typedef struct __cpu1_image_attr{
int bcpu1_image_active ;
unsigned int uicpu1_image_load_addr ;
unsigned int uicpu1_image_ori_size ;
unsigned int uicpu1_image_final_size ;
int bcpu1_image_compress ;
unsigned int uicpu1_compress_image_size ;
int bcpu1_image_encrypt ;
unsigned int uicpu1_encrypt_image_size ;
unsigned int uicpu1_encrypt_image_body_size ;
int bcpu1_image_bss_init ;
unsigned int uicpu1_bss_start_addr ;
unsigned int uicpu1_bss_length ;
}cpu1_image_attr ;
#define IMAGE_ENCRYPTION_HEADER_MAX 256
#define FIGO_SECTION_MAX (100<<10)
typedef struct Encryption_Header{
unsigned int uiSM_Encrypt_Image_Header_Offset ;
unsigned int uiSM_Encrypt_Image_Header_Size ;
unsigned int uiCPU0_Encrypt_Image_Header_Offset ;
unsigned int uiCPU0_Encrypt_Image_Header_Size ;
unsigned int uiCPU1_Encrypt_Image_Header_Offset ;
unsigned int uiCPU1_Encrypt_Image_Header_Size ;
unsigned int reserve[58]; // 64 int align, 256 byte
}Encryption_Header ;
typedef struct __Mem_Layout{
unsigned int uizsp_mem_size ;
unsigned int uicpu1_mem_size ;
unsigned int uicpu0_mem_size ;
unsigned int uishm_mem_size ;
}Mem_Layout ;
typedef struct {
unsigned int size;
}recovery_ou_attr;
typedef struct __Image3_Attr{
sm_image_attr sm_param ;
cpu0_image_attr cpu0_param ;
cpu1_image_attr cpu1_param ;
recovery_ou_attr recou_param;
Mem_Layout mem_layout ;
unsigned char linux_bootargs[MAX_LINUX_BOOTARGS_LEN];
}Image3_Attr ;
#endif