diff --git a/mbtk/mbtk_otad/inc/tim.h b/mbtk/mbtk_otad/inc/tim.h
new file mode 100755
index 0000000..5cd20ec
--- /dev/null
+++ b/mbtk/mbtk_otad/inc/tim.h
@@ -0,0 +1,334 @@
+#ifndef __TIM_H__
+#define __TIM_H__
+
+enum {
+	IMAGE_ID_DTIM_A = 0x54494D31, /* dtim primary */
+	IMAGE_ID_DTIM_B = 0x54494d32, /* dtim recovery */
+	IMAGE_ID_UBOOT  = 0x4F534C4F,
+	IMAGE_ID_KERNEL = 0x5A494D47,
+	IMAGE_ID_ROOTFS = 0x5359534A,
+	IMAGE_ID_ARBEL  = 0x41524249,
+	IMAGE_ID_MSA	= 0x47524249,
+	IMAGE_ID_RF		= 0x52464249,
+	IMAGE_ID_OEMD	= 0x4F454D44,
+	IMAGE_ID_OBM	= 0x4f424d49,
+	IMAGE_ID_TIMH	= 0x54494d48,
+
+    // Add by liubin
+    IMAGE_ID_DEVICE	= 0x4F454D55,
+};
+
+#define TIMIDENTIFIER		0x54494D48		// "TIMH"
+// TIM Versions
+#define TIM_3_2_00			0x30200			// Support for Partitioning
+#define TIM_3_3_00			0x30300			// Support for ECDSA-256
+#define TIM_3_4_00			0x30400			// Support for ECDSA-521
+
+// Defined for DTIM support
+typedef enum
+{
+	TIMH_NOTINC				= 0,
+	TIMH_INC				= 1,
+	DTIM_PRIMARY_INC		= 2,
+	DTIM_RECOVERY_INC		= 3,
+	DTIM_CP_INC				= 4,
+	TIMH_RECOVERY_INC		= 5,
+	DTIM_PPSETTING_INC		= 6,
+	// 7-9 reserved
+	DTIM_CUSTMOZIEDTYPE1	= 10,
+	DTIM_CUSTMOZIEDTYPE2	= 11,
+	DTIM_CUSTMOZIEDTYPE3	= 12,
+	DTIM_CUSTMOZIEDTYPE4	= 13,
+	DTIM_CUSTMOZIEDTYPE5	= 14,
+	DTIM_CUSTMOZIEDTYPE6	= 15,
+	DTIM_CUSTMOZIEDTYPE7	= 16,
+	DTIM_CUSTMOZIEDTYPE8	= 17,
+	DTIM_CUSTMOZIEDTYPE9	= 18,
+	DTIM_CUSTMOZIEDTYPE10	= 19,
+	DTIM_CUSTMOZIEDTYPE11	= 20,
+	DTIM_CUSTMOZIEDTYPE12	= 21,
+	DTIM_CUSTMOZIEDTYPE13	= 22,
+	DTIM_CUSTMOZIEDTYPE14	= 23,
+	DTIM_CUSTMOZIEDTYPE15	= 24,
+	DTIM_CUSTMOZIEDTYPE16	= 25,
+	DTIM_CUSTMOZIEDTYPE17	= 26,
+	DTIM_CUSTMOZIEDTYPE18	= 27,
+	DTIM_CUSTMOZIEDTYPE19	= 28,
+	DTIM_CUSTMOZIEDTYPE20	= 29,
+
+	DTIM_CUSTMOZIED_MAX		= 50
+} TIMIncluded_Type;
+
+typedef unsigned int UINT_T, *PUINT;
+typedef unsigned char UINT8_T;
+
+typedef enum
+{
+	SHA160 = 0x00000014,   //20
+	SHA256 = 0x00000020,   //32
+	SHA512 = 0x00000040,   //64
+	DUMMY_HASH = 0x7FFFFFFF
+}
+HASHALGORITHMID_T;
+
+typedef struct
+{
+ UINT_T Version;
+ UINT_T	Identifier;					// "TIMH"
+ UINT_T Trusted;					// 1- Trusted, 0 Non
+ UINT_T IssueDate;
+ UINT_T OEMUniqueID;
+} VERSION_I, *pVERSION_I;			// 0x10 bytes
+
+typedef struct
+{
+ UINT_T WTMFlashSign;
+ UINT_T WTMEntryAddr;
+ UINT_T WTMEntryAddrBack;
+ UINT_T WTMPatchSign;
+ UINT_T WTMPatchAddr;
+ UINT_T BootFlashSign;
+} FLASH_I, *pFLASH_I;				// 0x10 bytes
+
+typedef struct
+{
+	UINT_T PartitionNumber	: 4;
+	UINT_T ImageType		: 8;
+	UINT_T Reserved			: 20;
+}TIM_INT;
+
+typedef union{
+	TIM_INT bits;
+	UINT_T value;
+}PN, *pPN;
+
+typedef struct
+{
+ UINT_T ImageID;					// Indicate which Image
+ UINT_T NextImageID;				// Indicate next image in the chain
+ UINT_T FlashEntryAddr;			 	// Block numbers for NAND
+ UINT_T LoadAddr;
+ UINT_T ImageSize;
+ UINT_T ImageSizeToHash;
+ HASHALGORITHMID_T HashAlgorithmID;            // See HASHALGORITHMID_T
+ UINT_T Hash[16];					// Reserve 512 bits for the hash
+ PN PartitionNumber;
+} IMAGE_INFO_3_4_0, *pIMAGE_INFO_3_4_0;			// 0x60 bytes
+
+typedef struct
+{
+ UINT_T ImageID;					// Indicate which Image
+ UINT_T NextImageID;				// Indicate next image in the chain
+ UINT_T FlashEntryAddr;			 	// Block numbers for NAND
+ UINT_T LoadAddr;
+ UINT_T ImageSize;
+ UINT_T ImageSizeToHash;
+ HASHALGORITHMID_T HashAlgorithmID;			// See HASHALGORITHMID_T
+ UINT_T Hash[8];					// Reserve 256 bits for the hash
+ UINT_T PartitionNumber;			// This is new for V3.2.0
+} IMAGE_INFO_3_2_0, *pIMAGE_INFO_3_2_0;			// 0x40 bytes
+
+// Constant part of the TIMs
+typedef struct
+{
+ VERSION_I      VersionBind;         			// 0
+ FLASH_I        FlashInfo;           			// 0x10
+ UINT_T         NumImages;           			// 0x20
+ UINT_T         NumKeys;						// 0x24
+ UINT_T         SizeOfReserved;					// 0x28
+} CTIM, *pCTIM;									// 0x2C
+
+// TIM structure for use by DKB/OBM/BootROM
+typedef struct
+{
+ pCTIM 				pConsTIM;			// Constant part
+ pIMAGE_INFO_3_4_0	pImg;				// Pointer to Images
+ void				*pKey;				// Pointer to Keys
+ PUINT				pReserved;			// Pointer to Reserved Area
+ void       		*pTBTIM_DS;			// Pointer to Digital Signature
+} TIM, *pTIM;
+
+/**
+ * General error code definitions			0x0 - 0x1F
+ **/
+#define NoError								0x0
+#define NotFoundError						0x1
+#define TIMNotFound							0x6D
+
+// WTP Format Recognized Reserved Area Indicator
+#define WTPRESERVEDAREAID	0x4F505448	  // "OPTH"
+
+// Reserved Area Package Headers
+#define TERMINATORID		0x5465726D		// "Term"
+
+/********** WTP Recognized Reserved Area Layout ********************************
+*
+*	WTPTP_Defined_Reserved_Format_ID	\	  This clues BR, OBM and DKB that the reserved area is in a known format
+*	Number of Reserved Area Packages	/	  For each package there is a header, payload size and payload
+*
+*	Header	 	 		\	  Indicates what type of a Reserved Area Package
+*	Size		  		 \	  Size Comprises a single Reserved Area Package
+*	Payload		  		 /	  There may be any number of Packages so long as TIM/NTIM < 4KB
+*			 			/
+*
+*	Header		 		\	  The Last one should be a Package with a Terminator Header
+*	Size		 		/	  The size should be 8 bytes (the size of this package)
+*
+**********************************************************************************/
+typedef struct
+{
+ UINT_T WTPTP_Reserved_Area_ID;	  	// This clues BR, OBM and DKB that the reserved area is in a known format
+ UINT_T	NumReservedPackages;	  	// For each package there is a header, payload size and payload
+}WTP_RESERVED_AREA, *pWTP_RESERVED_AREA;
+
+typedef struct
+{
+ UINT_T Identifier;					// Identification of this reserved area entry
+ UINT_T Size;						// Size  = Payload Size + 2 words (8 bytes).
+}WTP_RESERVED_AREA_HEADER, *pWTP_RESERVED_AREA_HEADER;
+
+#define DDR_FLASH_MCP_PACKAGE_ID  0X44464D50 // "DFMP"
+typedef struct
+{
+			unsigned int	 VendorDdrPid;
+			unsigned int	 FlashInfo; //for eMMC, FlashInfo is flash size, MB; for nand, FlashInfo is NandID
+} VendorDdrFlashSpec, *pVendorDdrFlashSpec;
+
+
+typedef struct
+{
+			WTP_RESERVED_AREA_HEADER WRAH;
+			unsigned int NumberVendorDdrFlashSpec;
+			VendorDdrFlashSpec  ddrFlashSpec[2];
+} DDR_FLASH_MCP_PACKAGE, *pDDR_FLASH_MCP_PACKAGE;
+
+#define MAXRSAKEYSIZEWORDS	 	64				// 2048 bits
+#define MAXECCKEYSIZEWORDS 		17				// 521 bits+
+
+typedef enum
+{
+	Marvell_DS =		0x00000000,
+	PKCS1_v1_5_Caddo =	0x00000001,
+	PKCS1_v2_1_Caddo =	0x00000002,
+	PKCS1_v1_5_Ippcp =	0x00000003,
+	PKCS1_v2_1_Ippcp =	0x00000004,
+	ECDSA_256 =			0x00000005,
+	ECDSA_521 =			0x00000006,
+	PKCS1_v2_2_Ippcp =	0x00000007,
+	DUMMY_ENALG = 0x7FFFFFFF   // See _Cryptographic_Scheme for additional id's
+}
+ENCRYPTALGORITHMID_T;
+
+typedef struct
+{
+ UINT_T	KeyID;						// Associate an ID with this key
+ HASHALGORITHMID_T HashAlgorithmID;	// See HASHALGORITHMID_T
+ UINT_T KeySize;					// Specified in bits
+ UINT_T PublicKeySize;				// Specified in bits
+ UINT_T RSAPublicExponent[MAXRSAKEYSIZEWORDS]; // Contents depend on PublicKeySize
+ UINT_T RSAModulus[MAXRSAKEYSIZEWORDS]; // Up to 2K bits
+ UINT_T KeyHash[8]; 				// Reserve 256 bits for the hash
+} KEY_MOD_3_2_0, *pKEY_MOD_3_2_0;				// 0x22C bytes
+
+typedef struct
+{
+ UINT_T KeyID;				// Associate an ID with this key
+ HASHALGORITHMID_T HashAlgorithmID;	 // See HASHALGORITHMID_T
+ UINT_T KeySize;			// Specified in bits
+ UINT_T PublicKeySize;		// Specified in bits
+ ENCRYPTALGORITHMID_T EncryptAlgorithmID;	// See ENCRYPTALGORITHMID_T;
+ union
+ {
+	struct
+	{
+ 		UINT_T RSAPublicExponent[MAXRSAKEYSIZEWORDS];	// Contents depend on PublicKeySize
+		UINT_T RSAModulus[MAXRSAKEYSIZEWORDS];			// Up to 2K bits
+	}Rsa;
+
+	struct
+	{
+		UINT_T PublicKeyCompX[MAXECCKEYSIZEWORDS]; // Contents depend on PublicKeySize
+		UINT_T PublicKeyCompY[MAXECCKEYSIZEWORDS]; // Up to 521 bits
+		// Pad this struct so it remains consistent with RSA struct
+		UINT_T Reserved[(2*MAXRSAKEYSIZEWORDS)-(2*MAXECCKEYSIZEWORDS)];
+	}Ecdsa;
+ };
+
+ UINT_T KeyHash[8]; 				// Reserve 256 bits for the hash
+} KEY_MOD_3_3_0, *pKEY_MOD_3_3_0;		//
+
+typedef struct
+{
+ UINT_T KeyID;				// Associate an ID with this key
+ HASHALGORITHMID_T HashAlgorithmID;	// See HASHALGORITHMID_T
+ UINT_T KeySize;			// Specified in bits
+ UINT_T PublicKeySize;		// Specified in bits
+ ENCRYPTALGORITHMID_T EncryptAlgorithmID; // See ENCRYPTALGORITHMID_T;
+ union
+ {
+	struct
+	{
+ 		UINT_T RSAPublicExponent[MAXRSAKEYSIZEWORDS];	// Contents depend on PublicKeySize
+		UINT_T RSAModulus[MAXRSAKEYSIZEWORDS];			// Up to 2K bits
+	}Rsa;
+
+	struct
+	{
+		UINT_T PublicKeyCompX[MAXECCKEYSIZEWORDS]; // Contents depend on PublicKeySize
+		UINT_T PublicKeyCompY[MAXECCKEYSIZEWORDS]; // Up to 521 bits
+		// Pad this struct so it remains consistent with RSA struct
+		UINT_T Reserved[(2*MAXRSAKEYSIZEWORDS)-(2*MAXECCKEYSIZEWORDS)];
+	}Ecdsa;
+
+	struct
+	{
+		UINT_T EncryptedHashRSAPublicExponent[MAXRSAKEYSIZEWORDS];  // Contents depend on PublicKeySize
+		UINT_T EncryptedHashRSAModulus[MAXRSAKEYSIZEWORDS];		 // Up to 2K bits
+	}EncryptedRsa;
+
+	struct
+	{
+		UINT_T EncryptedHashPublicKeyCompX_R[MAXECCKEYSIZEWORDS]; // Contents depend on PublicKeySize
+		UINT_T EncryptedHashPublicKeyCompX_S[MAXECCKEYSIZEWORDS]; // Contents depend on PublicKeySize
+
+		UINT_T EncryptedHashPublicKeyCompY_R[MAXECCKEYSIZEWORDS]; // Up to 521 bits
+		UINT_T EncryptedHashPublicKeyCompY_S[MAXECCKEYSIZEWORDS]; // Up to 521 bits
+
+		// Pad this struct so it remains consistent with encrypted RSA struct
+		UINT_T Reserved[(2 * MAXRSAKEYSIZEWORDS)-(4 * MAXECCKEYSIZEWORDS)];
+	}EncryptedEcdsa;
+ };
+
+ UINT_T KeyHash[16]; 				// Reserve 512 bits for the hash
+} KEY_MOD_3_4_0, *pKEY_MOD_3_4_0;		//
+
+
+typedef struct
+{
+ ENCRYPTALGORITHMID_T DSAlgorithmID;   // See ENCRYPTALGORITHMID_T
+ HASHALGORITHMID_T HashAlgorithmID; // See HASHALGORITHMID_T
+ UINT_T KeySize;			  // Specified in bits
+ UINT_T Hash[8];			  // Reserve 256 bits for optional key hash
+ union 	// Note that this union should not be included as part of the hash for TIM in the Digital Signature
+ {
+	struct
+	{
+		UINT_T RSAPublicExponent[MAXRSAKEYSIZEWORDS];
+		UINT_T RSAModulus[MAXRSAKEYSIZEWORDS];		   	// Up to 2K bits
+		UINT_T RSADigS[MAXRSAKEYSIZEWORDS];				// Contains TIM Hash
+	}Rsa;
+
+	struct
+	{
+		UINT_T ECDSAPublicKeyCompX[MAXECCKEYSIZEWORDS]; // Allow for 544 bits (17 words, 68 bytes for use with EC-521)
+		UINT_T ECDSAPublicKeyCompY[MAXECCKEYSIZEWORDS];
+		UINT_T ECDSADigS_R[MAXECCKEYSIZEWORDS];
+		UINT_T ECDSADigS_S[MAXECCKEYSIZEWORDS];
+		// Pad this struct so it remains consistent with RSA struct
+		UINT_T Reserved[(MAXRSAKEYSIZEWORDS*3)-(MAXECCKEYSIZEWORDS*4)];
+	} Ecdsa;
+ };
+} PLAT_DS, *pPLAT_DS;
+
+#endif
+
