import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / kr076_nand / common / pmt.h
1 #ifndef _PMT_H
2 #define _PMT_H
3
4 #include "partition_define.h"
5
6 //mt6516_partition.h has defination
7 //mt6516_download.h define again, both is 20
8
9 #define MAX_PARTITION_NAME_LEN 64
10 #ifdef CONFIG_MTK_EMMC_SUPPORT
11 /*64bit*/
12 typedef struct
13 {
14 char name[MAX_PARTITION_NAME_LEN]; /* partition name */
15 unsigned long long size; /* partition size */
16 unsigned long long part_id; /* partition region */
17 unsigned long long offset; /* partition start */
18 unsigned long long mask_flags; /* partition flags */
19
20 } pt_resident;
21 /*32bit*/
22 typedef struct
23 {
24 char name[MAX_PARTITION_NAME_LEN]; /* partition name */
25 unsigned long size; /* partition size */
26 unsigned long offset; /* partition start */
27 unsigned long mask_flags; /* partition flags */
28
29 } pt_resident32;
30 #else
31
32 #define REGION_LOW_PAGE 0x004C4F57
33 #define REGION_FULL_PAGE 0x46554C4C
34 typedef struct
35 {
36 char name[MAX_PARTITION_NAME_LEN]; /* partition name */
37 unsigned long long size; /* partition size */
38 unsigned long long part_id; /* partition region *///will be used as download type on L branch. xiaolei
39 unsigned long long offset; /* partition start */
40 unsigned long long mask_flags; /* partition flags */
41
42 } pt_resident;
43 #endif
44
45
46 #define DM_ERR_OK 0
47 #define DM_ERR_NO_VALID_TABLE 9
48 #define DM_ERR_NO_SPACE_FOUND 10
49 #define ERR_NO_EXIST 1
50
51 //Sequnce number
52
53
54 //#define PT_LOCATION 4090 // (4096-80)
55 //#define MPT_LOCATION 4091 // (4096-81)
56 #define PT_SIG 0x50547633 //"PTv3"
57 #define MPT_SIG 0x4D505433 //"MPT3"
58 #define PT_SIG_SIZE 4
59 //#define is_valid_mpt(buf) ((*(unsigned int *)(buf))==MPT_SIG)
60 //#define is_valid_pt(buf) ((*(unsigned int *)(buf))==PT_SIG)
61 #define is_valid_pt(buf) (!memcmp(buf, "3vTP", 4))
62 #define is_valid_mpt(buf) (!memcmp(buf, "3TPM", 4))
63 #define RETRY_TIMES 5
64
65
66 typedef struct _DM_PARTITION_INFO
67 {
68 char part_name[MAX_PARTITION_NAME_LEN]; /* the name of partition */
69 unsigned long long start_addr; /* the start address of partition */
70 unsigned long long part_len; /* the length of partition */
71 unsigned char part_visibility; /* part_visibility is 0: this partition is hidden and CANNOT download */
72 /* part_visibility is 1: this partition is visible and can download */
73 unsigned char dl_selected; /* dl_selected is 0: this partition is NOT selected to download */
74 /* dl_selected is 1: this partition is selected to download */
75 } DM_PARTITION_INFO;
76
77 typedef struct {
78 unsigned int pattern;
79 unsigned int part_num; /* The actual number of partitions */
80 DM_PARTITION_INFO part_info[PART_MAX_COUNT];
81 } DM_PARTITION_INFO_PACKET;
82
83 typedef struct {
84 int sequencenumber:8;
85 int tool_or_sd_update:8;
86 int mirror_pt_dl:4; //mirror download OK
87 int mirror_pt_has_space:4;
88 int pt_changed:4;
89 int pt_has_space:4;
90 } pt_info;
91
92 #endif
93