[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/bsp/lk/lib/partition/gpt.h b/src/bsp/lk/lib/partition/gpt.h
new file mode 100644
index 0000000..20dced8
--- /dev/null
+++ b/src/bsp/lk/lib/partition/gpt.h
@@ -0,0 +1,120 @@
+/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
+
+ * 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 The Linux Foundation 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 "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * 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 __LIB_PARTITION_GPT_H
+#define __LIB_PARTITION_GPT_H
+
+#include <stdbool.h>
+
+#define PARTITION_TYPE_MBR 0
+#define PARTITION_TYPE_GPT 1
+#define PARTITION_TYPE_GPT_BACKUP 2
+
+/* GPT Signature should be 0x5452415020494645 */
+#define GPT_SIGNATURE_1 0x54524150
+#define GPT_SIGNATURE_2 0x20494645
+
+#define MMC_MBR_SIGNATURE_BYTE_0 0x55
+#define MMC_MBR_SIGNATURE_BYTE_1 0xAA
+
+/* GPT Offsets */
+#define PROTECTIVE_MBR_SIZE BLOCK_SIZE
+#define HEADER_SIZE_OFFSET 12
+#define HEADER_CRC_OFFSET 16
+#define PRIMARY_HEADER_OFFSET 24
+#define BACKUP_HEADER_OFFSET 32
+#define FIRST_USABLE_LBA_OFFSET 40
+#define LAST_USABLE_LBA_OFFSET 48
+#define PARTITION_ENTRIES_OFFSET 72
+#define PARTITION_COUNT_OFFSET 80
+#define PENTRY_SIZE_OFFSET 84
+#define PARTITION_CRC_OFFSET 88
+
+#define MIN_PARTITION_ARRAY_SIZE 0x4000
+
+#define PARTITION_ENTRY_FIRST_LBA 32
+#define PARTITION_ENTRY_LAST_LBA 40
+
+#define ENTRY_SIZE 0x080
+
+#define UNIQUE_GUID_OFFSET 16
+#define FIRST_LBA_OFFSET 32
+#define LAST_LBA_OFFSET 40
+#define ATTRIBUTE_FLAG_OFFSET 48
+#define PARTITION_NAME_OFFSET 56
+
+#define MAX_GPT_NAME_SIZE 72
+#define PARTITION_TYPE_GUID_SIZE 16
+#define UNIQUE_PARTITION_GUID_SIZE 16
+#define NUM_PARTITIONS 128
+
+/* Some useful define used to access the MBR/EBR table */
+#define BLOCK_SIZE 0x200
+#define TABLE_ENTRY_0 0x1BE
+#define TABLE_ENTRY_1 0x1CE
+#define TABLE_ENTRY_2 0x1DE
+#define TABLE_ENTRY_3 0x1EE
+#define TABLE_SIGNATURE 0x1FE
+#define TABLE_ENTRY_SIZE 0x010
+
+#define OFFSET_STATUS 0x00
+#define OFFSET_TYPE 0x04
+#define OFFSET_FIRST_SEC 0x08
+#define OFFSET_SIZE 0x0C
+#define COPYBUFF_SIZE (1024 * 16)
+#define BINARY_IN_TABLE_SIZE (16 * 512)
+#define MAX_FILE_ENTRIES 20
+
+#define MBR_EBR_TYPE 0x05
+#define MBR_MODEM_TYPE 0x06
+#define MBR_MODEM_TYPE2 0x0C
+#define MBR_SBL1_TYPE 0x4D
+#define MBR_SBL2_TYPE 0x51
+#define MBR_SBL3_TYPE 0x45
+#define MBR_RPM_TYPE 0x47
+#define MBR_TZ_TYPE 0x46
+#define MBR_MODEM_ST1_TYPE 0x4A
+#define MBR_MODEM_ST2_TYPE 0x4B
+#define MBR_EFS2_TYPE 0x4E
+
+#define MBR_ABOOT_TYPE 0x4C
+#define MBR_BOOT_TYPE 0x48
+#define MBR_SYSTEM_TYPE 0x82
+#define MBR_USERDATA_TYPE 0x83
+#define MBR_RECOVERY_TYPE 0x60
+#define MBR_MISC_TYPE 0x63
+#define MBR_PROTECTED_TYPE 0xEE
+#define MBR_SSD_TYPE 0x5D
+
+#define GET_LWORD_FROM_BYTE(x) (*(unsigned *)(x))
+#define GET_LLWORD_FROM_BYTE(x) ({unsigned long long *__ret = (unsigned long long *)(x); *__ret;})
+#define GET_LONG(x) (*(uint32_t *)(x))
+#define PUT_LONG(x, y) *((uint32_t *)(x)) = y
+#define PUT_LONG_LONG(x,y) *((unsigned long long *)(x)) = y
+
+#endif