blob: c72dc59a7dbb4906536d28f8ef4173106f4901b9 [file] [log] [blame]
#ifndef H_ASR_FLAG_H
#define H_ASR_FLAG_H
#include "Typedef.h"
#include "tim.h"
typedef struct{
UINT_T CurImageID;
UINT_T ImageType;
UINT_T ImageState; /* 1: new image is backed up, 0: not backed up */
UINT_T ImageBkAddr;
UINT_T ImageBkLen;
UINT_T SegState;
UINT_T SegIndex;
UINT_T SegDestBkAddr;
UINT_T SegDestBkLen;
UINT_T PreTailAddr;
UINT_T PreTailLen;
UINT_T NextHeadAddr;
UINT_T NextHeadLen;
UINT_T NextSegWriteOffset;
UINT_T NextSegReadOffset;
UINT_T NextSegEraseOffset;
}SDfotaState, *pSDfotaState;
enum {
SDFOTA_NONE = 0,
SDFOTA_DEST_SAVED = 1,
SDFOTA_HEAD_SAVED = 2,
SDFOTA_WRITE_ALIGN,
SDFOTA_WRITE_TAIL,
SDFOTA_SEG_DONE,
SDFOTA_IMG_DONE,
SDFOTA_IMG_SAVE,
};
#define MAX_SEG_NUM 32
typedef struct{
UINT_T SrcLen;
UINT_T SrcComLen;
UINT_T DestLen;
UINT_T DestComLen;
UINT_T Compression;
UINT_T PatchLen;
CHAR *Bsdiff40;
}SDFotaSegInfo, *pSDFotaSegInfo;
typedef struct{
UINT_T Version;
CHAR * Patch;
UINT_T PatchLen;
/* belows only for Bsdiff50 */
UINT_T SegNum;
UINT_T ImageSrcLen;
UINT_T ImageSrcComLen;
UINT_T ImageDestLen;
UINT_T ImageDestComLen;
UINT_T MaxSegDecLen;
SDFotaSegInfo SegInfo[MAX_SEG_NUM];
}BsdiffInfo, *pBsdiffInfo;
struct DDRT_STATE{
unsigned int test_proc :1; //1: start, 0: done
unsigned int last_res :1; //1: fail, 0: pass
unsigned int total_times :15;
unsigned int fail_times :15;
};
typedef union{
unsigned int value;
struct DDRT_STATE bits;
}DDRTestState, *pDDRTestState;
typedef struct
{
UINT_T Header;
UINT_T Upgrade_Flag; // 1, upgrade; 2, backup boot
UINT_T FBF_Flash_Address;
UINT_T FBF_Size;
UINT_T Erase_PSM;
UINT_T PSM_Erase_Address;
UINT_T PSM_Erase_Size;
UINT_T Erase_FS;
UINT_T FS_Erase_Address;
UINT_T FS_Erase_Size;
UINT_T Upgrade_Method; // 1, TR069; 2, SD; 3, WebUI.
UINT_T UnlockKeyFlag;
UINT_T Production_Mode_Flag; // for prouction mode
UINT_T eehP[2];
UINT_T cpsr[2];
UINT_T hawk[2];
UINT_T imsd[2];
UINT_T pipe[2];
UINT_T fast[2];
UINT_T apmf[2];
UINT_T pid[2];
UINT_T vid[2];
UINT_T obmdl[2];
UINT_T dlflag[2];
UINT_T ramdump[2];
UINT_T DFota_nOfImages;
UINT_T Dfota_NeedCopyOnly;
UINT_T Dfota_CopyLen;
#ifdef CONFIG_AB_SYSTEM
UINT_T active_slot; /* prev active slot */
UINT_T temp_active_slot; /* current active slot */
UINT_T reboot_cnt;
UINT_T synced;
UINT_T rsvd[16];
#endif
UINT_T nocp[2];
UINT_T TrustBootStatus;
CHAR MVersion[128];
SDfotaState SDfotaInfo;
UINT_T RefCounter;
UINT_T FlagLen;
UINT_T Version;
UINT_T DDR_ID;
UINT_T Flash_ID;
UINT_T cplog[2];
DDRTestState ddrt_state;
UINT_T svc_state;
CHAR MVersion_B[128]; /* only use for AB system */
UINT_T Reserved[68]; /* reserved for asr */
UINT_T ReservedForCustomer[35]; /* reserved for customer */
/* reserve to make the ASR_Flag length as 1KB */
UINT_T CRC;
/* NOTICE !!!
* If you change this structure, you must also sync the change to OBM/Uboot/OTA/Telephony
* OBM: obm/Common/Misc/asr_flag.h
* Uboot: uboot/board/Marvell/common/asr_flag.h
* OTA: services/ota/otad.c
* Telephony: lte_telephony/apps/cp_load/cploader.h
* If add a new member to this structure, must decrease the size of Reserved[]
*/
}FOTA_Firmware, *P_FOTA_Firmware;
/* ASR Flag version history
* 1.0.0.1: support dual asr flag
* 1.0.0.2: support asr flag crc
*/
#define ASRFLAG_VERSION_LEGACY 0xFFFFFFFF
#define ASRFLAG_VERSION_DAF 0x31303031
#define ASRFLAG_VERSION_CRC 0x31303032
#define ASRFLAG_VERSION ASRFLAG_VERSION_CRC
#define ASRFLAG_HEADER 0x464F5441
#define SVC_NOT_BURN 0x00
#define SVC_BURN_01 0x01
#define SVC_BURN_11 0x03
#define SVC_01_BURNED 0xe1
#define SVC_11_BURNED 0xe3
#define SVC_01_BURN_FAILED 0xf1
#define SVC_11_BURN_FAILED 0xf3
#define SVC_ERROR_STATE 0xff
enum TRUST_BOOT_CODES{
TB_NO_ERROR = 0,
TB_TIMH_ERROR,
TB_OBMI_ERROR,
TB_UBOOT_ERROR,
TB_DTIM_ERROR,
TB_ZIMG_ERROR,
TB_SYSJ_ERROR,
TB_RFBI_ERROR,
TB_GRBI_ERROR,
TB_ARBI_ERROR,
TB_ABRL_ERROR,
TB_CBRL_ERROR,
TB_APRL_ERROR,
TB_OEMD_ERROR,
TB_DTIM_PRIMARY_ERROR,
TB_DTIM_RECOVERY_ERROR,
TB_DTIM_PPSETTING_ERROR,
TB_TOS_ERROR,
TB_OSLO_GENERAL_ERROR,
TB_AB_SYSTEM_BOOT_ERROR,
TB_CPHD_ERROR,
TB_BXBI_ERROR,
TB_AB_SYSTEM_ROLLBACK_ERROR,
TB_SDTIM_ERROR,
};
#define FBF_HEADER_FLASH_ADDRESS 0x06b60000
#define FBF_HEADER_IDENTIFIER 0x464F5441 // "FOTA"
#define MAX_ASR_FLAG_SIZE 0x20000
// Operating mode related ID's
#define EEHPID 0x50686565 // "eehP"
#define CPSRID 0x52535043 // "cpsr"
#define HAWKID 0x4B574148 // "hawk"
#define IMSDID 0x44534D49 // "IMSD"
#define PRODID 0x444F5250 // "PROD"
#define PIPEID 0x45504950 // "PIPE"
#define FASTID 0x54534146 // "FAST"
#define APMFID 0x464D5041 // "apmf"
#define PIDID 0x00444950 // "PID"
#define VIDID 0x00444956 // "VID"
#define OBMDLID 0x444D424F // "OBMDL"
#define OBMNODL 0x4C444F4E // "NODL"
#define UUID0 0x30444955 // "UID0"
#define UUID1 0x31444955 // "UID1"
#define DLFLG 0x47464C44 // "DLFLG"
#define RAMDUMPID 0x50554452 // "RDUP"
#define NOCPID 0x50434F4E // "NOCP"
#define ATDL 0x4154444C // "ATDL"
#define TSDS 0x54534453 // "TEE secure dram size"
#define TNMZ 0x544E4D5A // "TEE non-secure shared memory size"
#define TLVL 0x544C564C // "TEE Log Level"
#define OBMINDL 0x4C444E49 // "OBM IN DL State"
#define OBMENUMUSB 0x1 // "OBM Enum USB in Non_prod mode"
#define OBMNOUSB 0x0 // "OBM No USB in Non_prod mode"
#define DLDONE 0x4B4F4C44 // "DL OK"
#define INIT_DONE 0x54494E49
#define OBMDL 0x444D424F // OBM enum DL port
#define LWG_3MODE 0x47574C33 // 3LWG
#define LTG_3MODE 0x47544C33 // 3LTG
#define LWG_5MODE 0x47574C35 // 5LWG
#define LTG_5MODE 0x47544C35 // 5LTG
#define CPLOGID 0x4F4C5043 //CPLO
P_FOTA_Firmware OTAGetConfig(pTIM pTIM_h);
UINT_T OTA_Save_Config(pTIM pTIM_h);
#endif