Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / nand_device_define.h
1
2 #ifndef __NAND_DEVICE_LIST_H__
3 #define __NAND_DEVICE_LIST_H__
4
5 #define NAND_ABTC_ATAG
6 #define ATAG_FLASH_NUMBER_INFO 0x54430006
7 #define ATAG_FLASH_INFO 0x54430007
8
9 struct tag_nand_number {
10 u32 number;
11 };
12
13 #define MAX_FLASH 20 //modify this define if device list is more than 20 later .xiaolei
14
15 #define NAND_MAX_ID 6
16 #define CHIP_CNT 10
17 #define P_SIZE 16384
18 #define P_PER_BLK 256
19 #define C_SIZE 8192
20 #define RAMDOM_READ (1<<0)
21 #define CACHE_READ (1<<1)
22 #define RAND_TYPE_SAMSUNG 0
23 #define RAND_TYPE_TOSHIBA 1
24 #define RAND_TYPE_NONE 2
25
26 #define READ_RETRY_MAX 10
27 struct gFeature
28 {
29 u32 address;
30 u32 feature;
31 };
32
33 enum readRetryType
34 {
35 RTYPE_MICRON,
36 RTYPE_SANDISK,
37 RTYPE_SANDISK_19NM,
38 RTYPE_TOSHIBA,
39 RTYPE_HYNIX,
40 RTYPE_HYNIX_16NM
41 };
42
43 struct gFeatureSet
44 {
45 u8 sfeatureCmd;
46 u8 gfeatureCmd;
47 u8 readRetryPreCmd;
48 u8 readRetryCnt;
49 u32 readRetryAddress;
50 u32 readRetryDefault;
51 u32 readRetryStart;
52 enum readRetryType rtype;
53 struct gFeature Interface;
54 struct gFeature Async_timing;
55 };
56
57 struct gRandConfig
58 {
59 u8 type;
60 u32 seed[6];
61 };
62
63 enum pptbl
64 {
65 MICRON_8K,
66 HYNIX_8K,
67 SANDISK_16K,
68 };
69
70 struct MLC_feature_set
71 {
72 enum pptbl ptbl_idx;
73 struct gFeatureSet FeatureSet;
74 struct gRandConfig randConfig;
75 };
76
77 enum flashdev_vendor
78 {
79 VEND_SAMSUNG,
80 VEND_MICRON,
81 VEND_TOSHIBA,
82 VEND_HYNIX,
83 VEND_SANDISK,
84 VEND_BIWIN,
85 VEND_NONE,
86 };
87
88 enum flashdev_IOWidth
89 {
90 IO_8BIT = 8,
91 IO_16BIT = 16,
92 IO_TOGGLEDDR = 9,
93 IO_TOGGLESDR = 10,
94 IO_ONFI = 12,
95 };
96
97 typedef struct
98 {
99 u8 id[NAND_MAX_ID];
100 u8 id_length;
101 u8 addr_cycle;
102 u32 iowidth;
103 u16 totalsize;
104 u16 blocksize;
105 u16 pagesize;
106 u16 sparesize;
107 u32 timmingsetting;
108 u32 s_acccon;
109 u32 s_acccon1;
110 u32 freq;
111 u16 vendor;
112 u16 sectorsize;
113 u8 devciename[30];
114 u32 advancedmode;
115 struct MLC_feature_set feature_set;
116 }flashdev_info_t,*pflashdev_info;
117
118 static const flashdev_info_t gen_FlashTable_p[]={
119 {{0x45,0xDE,0x94,0x93,0x76,0x57}, 6,5,IO_8BIT,8192,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_SANDISK,1024, "SDTNQGAMA008G ",0 ,
120 {SANDISK_16K, {0xEF,0xEE,0xFF,16,0x11,0,1,RTYPE_SANDISK_19NM,{0x80, 0x00},{0x80, 0x01}},
121 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
122 {{0x98,0xD7,0x84,0x93,0x72,0x00}, 5,5,IO_8BIT,4096,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_TOSHIBA,1024, "TC58TEG5DCKTA00",0 ,
123 {SANDISK_16K, {0xEF,0xEE,0xFF,7,0xFF,7,0,RTYPE_TOSHIBA,{0x80, 0x00},{0x80, 0x01}},
124 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
125 {{0x45,0xDE,0x94,0x93,0x76,0x00}, 5,5,IO_8BIT,8192,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_SANDISK,1024, "SDTNRGAMA008GK ",0 ,
126 {SANDISK_16K, {0xEF,0xEE,0x5D,32,0x11,0,0xFFFFFFFF,RTYPE_SANDISK,{0x80, 0x00},{0x80, 0x01}},
127 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
128 {{0xAD,0xDE,0x14,0xA7,0x42,0x00}, 5,5,IO_8BIT,8192,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_HYNIX,1024, "H27UCG8T2ETR",0 ,
129 {SANDISK_16K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX_16NM,{0XFF, 0xFF},{0XFF, 0xFF}},
130 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
131 {{0x2C,0x44,0x44,0x4B,0xA9,0x00}, 5,5,IO_8BIT,4096,2048,8192,640,0x10804222, 0xC03222,0x101,80,VEND_MICRON,1024, "MT29F32G08CBADB ",0 ,
132 {MICRON_8K, {0xEF,0xEE,0xFF,7,0x89,0,1,RTYPE_MICRON,{0x1, 0x14},{0x1, 0x5}},
133 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
134 {{0xAD,0xDE,0x94,0xA7,0x42,0x00}, 5,5,IO_8BIT,8192,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_BIWIN,1024, "BW27UCG8T2ETR",0 ,
135 {SANDISK_16K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX_16NM,{0XFF, 0xFF},{0XFF, 0xFF}},
136 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
137 {{0x45,0xD7,0x84,0x93,0x72,0x00}, 5,5,IO_8BIT,4096,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_SANDISK,1024, "SDTNRGAMA004GK ",0 ,
138 {SANDISK_16K, {0xEF,0xEE,0x5D,32,0x11,0,0xFFFFFFFF,RTYPE_SANDISK,{0x80, 0x00},{0x80, 0x01}},
139 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
140 {{0x2C,0x64,0x44,0x4B,0xA9,0x00}, 5,5,IO_8BIT,8192,2048,8192,640,0x10804222, 0xC03222,0x101,80,VEND_MICRON,1024, "MT29F128G08CFABA ",0 ,
141 {MICRON_8K, {0xEF,0xEE,0xFF,7,0x89,0,1,RTYPE_MICRON,{0x1, 0x14},{0x1, 0x5}},
142 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
143 {{0xAD,0xD7,0x94,0x91,0x60,0x00}, 5,5,IO_8BIT,4096,2048,8192,640,0x10804222, 0xC03222,0x101,80,VEND_HYNIX,1024, "H27UBG8T2CTR",0 ,
144 {HYNIX_8K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX,{0XFF, 0xFF},{0XFF, 0xFF}},
145 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
146 {{0x98,0xDE,0x94,0x93,0x76,0x00}, 5,5,IO_8BIT,8192,4096,16384,1280,0x10804222, 0xC03222,0x101,80,VEND_TOSHIBA,1024, "TC58TEG6DDKTA00",0 ,
147 {SANDISK_16K, {0xEF,0xEE,0xFF,7,0xFF,7,0,RTYPE_TOSHIBA,{0x80, 0x00},{0x80, 0x01}},
148 {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}}},
149 };
150
151 static unsigned int flash_number = sizeof(gen_FlashTable_p) / sizeof(flashdev_info_t);
152 #endif