nand_device_list.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. #ifndef __NAND_DEVICE_LIST_H__
  2. #define __NAND_DEVICE_LIST_H__
  3. #define NAND_MAX_ID 6
  4. #define CHIP_CNT 12
  5. #define P_SIZE 16384
  6. #define P_PER_BLK 256
  7. #define C_SIZE 8192
  8. #define RAMDOM_READ (1<<0)
  9. #define CACHE_READ (1<<1)
  10. #define RAND_TYPE_SAMSUNG 0
  11. #define RAND_TYPE_TOSHIBA 1
  12. #define RAND_TYPE_NONE 2
  13. #define READ_RETRY_MAX 10
  14. struct gFeature
  15. {
  16. u32 address;
  17. u32 feature;
  18. };
  19. enum readRetryType
  20. {
  21. RTYPE_MICRON,
  22. RTYPE_SANDISK,
  23. RTYPE_SANDISK_19NM,
  24. RTYPE_TOSHIBA,
  25. RTYPE_HYNIX,
  26. RTYPE_HYNIX_16NM,
  27. RTYPE_SANDISK_TLC_1YNM,
  28. RTYPE_TOSHIBA_TLC
  29. };
  30. struct gFeatureSet
  31. {
  32. u8 sfeatureCmd;
  33. u8 gfeatureCmd;
  34. u8 readRetryPreCmd;
  35. u8 readRetryCnt;
  36. u32 readRetryAddress;
  37. u32 readRetryDefault;
  38. u32 readRetryStart;
  39. enum readRetryType rtype;
  40. struct gFeature Interface;
  41. struct gFeature Async_timing;
  42. };
  43. struct gRandConfig
  44. {
  45. u8 type;
  46. u32 seed[6];
  47. };
  48. enum pptbl
  49. {
  50. MICRON_8K,
  51. HYNIX_8K,
  52. SANDISK_16K,
  53. PPTBL_NONE,
  54. };
  55. struct MLC_feature_set
  56. {
  57. enum pptbl ptbl_idx;
  58. struct gFeatureSet FeatureSet;
  59. struct gRandConfig randConfig;
  60. };
  61. enum flashdev_vendor
  62. {
  63. VEND_SAMSUNG,
  64. VEND_MICRON,
  65. VEND_TOSHIBA,
  66. VEND_HYNIX,
  67. VEND_SANDISK,
  68. VEND_BIWIN,
  69. VEND_NONE,
  70. };
  71. enum flashdev_IOWidth
  72. {
  73. IO_8BIT = 8,
  74. IO_16BIT = 16,
  75. IO_TOGGLEDDR = 9,
  76. IO_TOGGLESDR = 10,
  77. IO_ONFI = 12,
  78. };
  79. #define NAND_FLASH_SLC (0x0000)
  80. #define NAND_FLASH_MLC (0x0001)
  81. #define NAND_FLASH_TLC (0x0002)
  82. #define NAND_FLASH_MASK (0x00FF)
  83. typedef struct
  84. {
  85. bool slcopmodeEn; //TRUE: slc mode FALSE: tlc mode
  86. bool pPlaneEn; //this chip has pseudo plane
  87. bool needchangecolumn; //read page with change column address command
  88. bool normaltlc; //whether need 09/0d 01/02/03 tlc command, whether need wl and page exchange. micron no need
  89. u16 en_slc_mode_cmd; //enable slc mode cmd
  90. u16 dis_slc_mode_cmd; //disable slc mode cmd: 0xff is invalid
  91. bool ecc_recalculate_en; //for nfi config
  92. u8 ecc_required; //required ecc bit
  93. u8 block_bit; //block address start bit;
  94. u8 pPlane_bit; //pesudo plane bit;
  95. } NFI_TLC_CTRL;
  96. typedef enum
  97. {
  98. PROGRAM_1ST_CYCLE = 1,
  99. PROGRAM_2ND_CYCLE = 2,
  100. PROGRAM_3RD_CYCLE = 3
  101. }NFI_TLC_PG_CYCLE;
  102. typedef enum
  103. {
  104. WL_LOW_PAGE = 0,
  105. WL_MID_PAGE = 1,
  106. WL_HIGH_PAGE = 2,
  107. }NFI_TLC_WL_PRE;
  108. typedef struct
  109. {
  110. u32 word_line_idx;
  111. NFI_TLC_WL_PRE wl_pre;
  112. }NFI_TLC_WL_INFO;
  113. #endif
  114. typedef struct
  115. {
  116. u8 id[NAND_MAX_ID];
  117. u8 id_length;
  118. u8 addr_cycle;
  119. u32 iowidth;
  120. u32 totalsize;
  121. u16 blocksize;
  122. u16 pagesize;
  123. u16 sparesize;
  124. u32 timmingsetting;
  125. u32 dqs_delay_ctrl;
  126. u32 s_acccon;
  127. u32 s_acccon1;
  128. u32 freq;
  129. enum flashdev_vendor vendor;
  130. u16 sectorsize;
  131. u8 devciename[30];
  132. u32 advancedmode;
  133. struct MLC_feature_set feature_set;
  134. u16 NAND_FLASH_TYPE;
  135. NFI_TLC_CTRL tlcControl;
  136. }flashdev_info,*pflashdev_info;
  137. static const flashdev_info gen_FlashTable[]={
  138. {{0x45,0xDE,0x94,0x93,0x76,0x57}, 6,5,IO_8BIT,0x800000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_SANDISK,1024, "SDTNQGAMA008G ",0 ,
  139. {SANDISK_16K, {0xEF,0xEE,0xFF,16,0x11,0,1,RTYPE_SANDISK_19NM,{0x80, 0x00},{0x80, 0x01}},
  140. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  141. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  142. {{0x98,0xD7,0x84,0x93,0x72,0x00}, 5,5,IO_8BIT,0x400000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_TOSHIBA,1024, "TC58TEG5DCKTA00",0 ,
  143. {SANDISK_16K, {0xEF,0xEE,0xFF,7,0xFF,7,0,RTYPE_TOSHIBA,{0x80, 0x00},{0x80, 0x01}},
  144. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  145. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  146. {{0x45,0xDE,0x94,0x93,0x76,0x00}, 5,5,IO_8BIT,0x800000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_SANDISK,1024, "SDTNRGAMA008GK ",0 ,
  147. {SANDISK_16K, {0xEF,0xEE,0x5D,36,0x11,0,0xFFFFFFFF,RTYPE_SANDISK,{0x80, 0x00},{0x80, 0x01}},
  148. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  149. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  150. {{0xAD,0xDE,0x14,0xA7,0x42,0x00}, 5,5,IO_8BIT,0x800000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_HYNIX,1024, "H27UCG8T2ETR",0 ,
  151. {SANDISK_16K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX_16NM,{0XFF, 0xFF},{0XFF, 0xFF}},
  152. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  153. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  154. {{0x2C,0x44,0x44,0x4B,0xA9,0x00}, 5,5,IO_8BIT,0x400000,2048,8192,640,0x10401011, 0xC03222,0x101,0,80,VEND_MICRON,1024, "MT29F32G08CBADB ",0 ,
  155. {MICRON_8K, {0xEF,0xEE,0xFF,7,0x89,0,1,RTYPE_MICRON,{0x1, 0x14},{0x1, 0x5}},
  156. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  157. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  158. {{0xAD,0xDE,0x94,0xA7,0x42,0x00}, 5,5,IO_8BIT,0x800000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_BIWIN,1024, "BW27UCG8T2ETR",0 ,
  159. {SANDISK_16K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX_16NM,{0XFF, 0xFF},{0XFF, 0xFF}},
  160. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  161. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  162. {{0x45,0xD7,0x84,0x93,0x72,0x00}, 5,5,IO_8BIT,0x400000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_SANDISK,1024, "SDTNRGAMA004GK ",0 ,
  163. {SANDISK_16K, {0xEF,0xEE,0x5D,36,0x11,0,0xFFFFFFFF,RTYPE_SANDISK,{0x80, 0x00},{0x80, 0x01}},
  164. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  165. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  166. {{0x2C,0x64,0x44,0x4B,0xA9,0x00}, 5,5,IO_8BIT,0x800000,2048,8192,640,0x10401011, 0xC03222,0x101,0,80,VEND_MICRON,1024, "MT29F128G08CFABA ",0 ,
  167. {MICRON_8K, {0xEF,0xEE,0xFF,7,0x89,0,1,RTYPE_MICRON,{0x1, 0x14},{0x1, 0x5}},
  168. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  169. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  170. {{0xAD,0xD7,0x94,0x91,0x60,0x00}, 5,5,IO_8BIT,0x400000,2048,8192,640,0x10401011, 0xC03222,0x101,0,80,VEND_HYNIX,1024, "H27UBG8T2CTR",0 ,
  171. {HYNIX_8K, {0xFF,0xFF,0xFF,7,0xFF,0,1,RTYPE_HYNIX,{0XFF, 0xFF},{0XFF, 0xFF}},
  172. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  173. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  174. {{0x98,0xDE,0x94,0x93,0x76,0x00}, 5,5,IO_8BIT,0x800000,4096,16384,1280,0x10401011, 0xC03222,0x101,0,80,VEND_TOSHIBA,1024, "TC58TEG6DDKTA00",0 ,
  175. {SANDISK_16K, {0xEF,0xEE,0xFF,7,0xFF,7,0,RTYPE_TOSHIBA,{0x80, 0x00},{0x80, 0x01}},
  176. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  177. NAND_FLASH_MLC, {FALSE,FALSE,FALSE,FALSE, 0xFF, 0xFF,FALSE, 0xFF, 8, 0xFF}},
  178. {{0x45,0xDE,0xA8,0x92,0x76,0x00}, 5,5,IO_8BIT,0x83C580,4128,16384,1952,0x10401011, 0xC03222,0x101,0,80,VEND_SANDISK,1024, "SDTNRCAMAOO8G",0 ,
  179. {PPTBL_NONE, {0xEF,0xEE,0x5D,39,0x11,0,0,RTYPE_SANDISK_TLC_1YNM,{0x80, 0x00},{0x80, 0x01}},
  180. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  181. NAND_FLASH_TLC, {TRUE, TRUE, TRUE, TRUE, 0xA2, 0xFF, TRUE, 68, 9, 8}},
  182. {{0x98,0xDE,0x88,0xA3,0x72,0x00}, 5,5,IO_TOGGLEDDR,0x85E000,6144,16384,1952,0x10818022, 0x00028021, 0x33418010, 0x01010400,100,VEND_TOSHIBA,1024, "TC58TEG6TGLTA00",0 ,
  183. {PPTBL_NONE, {0xEF,0xEE,0x5D,39,0x11,0,0,RTYPE_TOSHIBA_TLC,{0x80, 0x00},{0x80, 0x01}},
  184. {RAND_TYPE_SAMSUNG,{0x2D2D,1,1,1,1,1}}},
  185. NAND_FLASH_TLC, {TRUE, FALSE, TRUE, TRUE, 0xA2, 0xFF, TRUE, 68, 8, 0}},
  186. };