Commit | Line | Data |
---|---|---|
6fa3eb70 S |
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; | |
4b9e9796 S |
117 | |
118 | static const flashdev_info_t gen_FlashTable_p[]={ | |
6fa3eb70 S |
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 | }; | |
4b9e9796 S |
150 | |
151 | static unsigned int flash_number = sizeof(gen_FlashTable_p) / sizeof(flashdev_info_t); | |
6fa3eb70 | 152 | #endif |