drv_spi_flash_table.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. #ifndef _DRV_SPI_FLASH_TABLE_H
  2. #define _DRV_SPI_FLASH_TABLE_H
  3. #if (CONFIG_CHIPID != 0x330)
  4. #define SPI_CONTROL_REG 0xbe000010
  5. #define SPI_READ_SR_REG 0xbe0000d5 //0xbe0000d4[8]
  6. #define Softmode_Select 12
  7. #define Clock 13
  8. #define CS 14 /*inverte*/
  9. #define Data 15
  10. #define WREN 0x06
  11. #define RDSR 0x05
  12. #define RDSR2 0x35
  13. #define RDSR3 0x15
  14. #define WRSR 0x01
  15. #define WRSR2 0x31
  16. #define WRSR3 0x11
  17. #define SFDP 0x5A
  18. #define ENOTP 0x3A //enter OTP
  19. #define WRDI 0x04 //exit OTP /write disable
  20. typedef struct {
  21. char Flashname[32];
  22. u32 ManufacturerID_and_Size;
  23. // u16 Code_Flash_size;
  24. u8 WRSR_Data_size;
  25. u8 WRSR_Data[5];
  26. char msg[32];
  27. }_NORFlash_SR_Table;
  28. #ifdef SISCONFIG_CPU1
  29. #define __cpu0_data
  30. #else
  31. #define __cpu0_data __attribute__((__section__(".cpu0.data")))
  32. #endif
  33. __cpu0_data _NORFlash_SR_Table NORFlash_SR_Table[] = {
  34. #if (CONFIG_CODE_FLASH_SIZE == 16384)
  35. #if (CONFIG_SPI_SIMFS_FLASHSIZE == 2048)
  36. {"EN25QH128", 0x1c7018, 2, {0x10, 0x8}, "000000h-dfffffh"}, //OTP
  37. {"GD25Q127C", 0xc84018, 2, {0x10, 0x40}, "000000h-dfffffh"},
  38. {"MX25L12835F/45G", 0xc22018, 2, {0x20, 0x8}, "000000h-7fffffh (unfit)"}, //0x8 is configuration register(CR)
  39. {"W25Q128JV", 0xef4018, 2, {0x10, 0x40}, "000000h-dfffffh"},
  40. {"XT25F128B", 0x0b4018, 2, {0x10, 0x40}, "000000h-dfffffh"},
  41. {"XM25QH128A", 0x207018, 2, {0x10, 0x8}, "000000h-dfffffh"}, //OTP
  42. {"ZB25VQ128A", 0x5e4018, 2, {0x10, 0x40}, "000000h-dfffffh"},
  43. {"XM25QH128C", 0x204018, 2, {0x10, 0x40}, "000000h-dfffffh"},
  44. //{"PY25Q128HA", 0x852018, 2, {0x10, 0x40}, "000000h-dfffffh"}
  45. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 1024)
  46. {"EN25QH128", 0x1c7018, 2, {0xc, 0x8}, "000000h-efffffh"},
  47. {"GD25Q127C", 0xc84018, 2, {0xc, 0x40}, "000000h-efffffh"},
  48. {"W25Q128JV", 0xef4018, 2, {0xc, 0x40}, "000000h-efffffh"},
  49. {"XT25F128B", 0x0b4018, 2, {0xc, 0x40}, "000000h-efffffh"},
  50. {"XM25QH128A", 0x207018, 2, {0xc, 0x8}, "000000h-efffffh"},
  51. {"ZB25VQ128A", 0x5e4018, 2, {0xc, 0x40}, "000000h-efffffh"},
  52. {"XM25QH128C", 0x204018, 2, {0xc, 0x40}, "000000h-efffffh"},
  53. //{"MX25L12835F/45G", 0xc22018, 2, {0x20, 0x8}, "000000h-7fffffh (unfit)"},
  54. //{"PY25Q128HA", 0x852018, 2, {0xc, 0x40}, "000000h-efffffh"}
  55. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 128)
  56. {"EN25QH128", 0x1c7018, 2, {0x4, 0x8}, "000000h-fbffffh (unfit)"},
  57. {"GD25Q127C", 0xc84018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  58. {"W25Q128JV", 0xef4018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  59. {"XT25F128B", 0x0b4018, 2, {0x4, 0x40}, "000000h-fbffffh"},
  60. {"XM25QH128A", 0x207018, 2, {0x4, 0x8}, "000000h-fbffffh (unfit)"},
  61. {"ZB25VQ128A", 0x5e4018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  62. {"XM25QH128C", 0x204018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  63. //{"MX25L12835F/45G", 0xc22018, 2, {0x20, 0x8}, "000000h-7fffffh (unfit)"},
  64. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 64)
  65. //{"EN25QH128", 0x1c7018, 2, {0x4, 0x8}, "000000h-fbffffh (unfit)"},
  66. //{"GD25Q127C", 0xc84018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  67. //{"MX25L12835F/45G", 0xc22018, 2, {0x20, 0x8}, "000000h-7fffffh (unfit)"},
  68. //{"W25Q128JV", 0xef4018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  69. //{"XT25F128B", 0x0b4018, 2, {0x4, 0x40}, "000000h-fbffffh"},
  70. //{"XM25QH128A", 0x207018, 2, {0x4, 0x8}, "000000h-fbffffh (unfit)"},
  71. //{"ZB25VQ128A", 0x5e4018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"},
  72. //{"XM25QH128C", 0x204018, 2, {0x4, 0x40}, "000000h-fbffffh (unfit)"}
  73. #endif
  74. #elif (CONFIG_CODE_FLASH_SIZE == 8192)
  75. #if (CONFIG_SPI_SIMFS_FLASHSIZE == 2048)
  76. {"W25Q64DW", 0xef6017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  77. {"W25Q64FV", 0xef4017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  78. {"MX25L6436F", 0xc22017, 2, {0x28, 0x0}, "000000h-5fffffh"}, //0x0: CR; 8503, don't use MX25L6433F
  79. {"MX25L6406E", 0xc22017, 1, {0x28}, "000000h-5fffffh"},
  80. {"GD25Q64B", 0xc84017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  81. {"EN25Q64", 0x1c3017, 1, {0x18}, "000000h-5fffffh"},
  82. {"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  83. {"EN25QH64A", 0x1c7017, 2, {0x20, 0x8}, "000000h-5fffffh"}, //OTP
  84. //{"EN25QX64A(2CPU)", 0x1c7117, 2, {0x14, 0x40}, "000000h-5fffffh"},
  85. {"BY25Q64AS", 0x684017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  86. {"F25L64QA", 0x8c4117, 1, {0x28}, "000000h-5fffffh"},
  87. {"XM25QH64A", 0x207017, 2, {0x20, 0x8}, "000000h-5fffffh"}, //OTP
  88. {"XM25QH64C/D", 0x204017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  89. {"XT25F64B", 0x0B4017, 2, {0x14, 0x40}, "000000h-5fffffh"}, //XT25F64F
  90. {"S25FL164K", 0x014017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  91. {"ZB25VQ64A", 0x5e4017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  92. {"PY25Q64HA", 0x852017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  93. //{"MX25L12835F/45G", 0xc22018, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  94. //{"W25Q128JV", 0xef4018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  95. //{"MX25L6433F", 0xc22017, 2, {0x1c, 0x8}, "000000h-3fffffh"}, //0x8: CR; just for customer
  96. //{"GD25Q127C", 0xc84018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  97. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit), consider TB bit"},
  98. //{"P25Q64H", 0x856017, 2, {0x14, 0x40}, "000000h-5fffffh"},
  99. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"}, //OTP
  100. //{"ZB25VQ128A", 0x5e4018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"},
  101. //{"XM25QH128C", 0x204018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"}
  102. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 1024)
  103. {"W25Q64DW", 0xef6017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  104. {"W25Q64FV", 0xef4017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  105. {"MX25L6436F", 0xc22017, 2, {0x2c, 0x0}, "000000h-6fffffh"},
  106. {"MX25L6406E", 0xc22017, 1, {0x2c}, "000000h-6fffffh"},
  107. {"GD25Q64B", 0xc84017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  108. {"EN25Q64", 0x1c3017, 1, {0x14}, "000000h-6fffffh"},
  109. {"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  110. {"EN25QH64A", 0x1c7017, 2, {0x24, 0x8}, "000000h-6fffffh"},
  111. {"EN25QX64A(2CPU)", 0x1c7117, 2, {0x10, 0x40}, "000000h-6fffffh"},
  112. {"BY25Q64AS", 0x684017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  113. {"F25L64QA", 0x8c4117, 1, {0x2c}, "000000h-6fffffh"},
  114. {"XM25QH64A", 0x207017, 2, {0x24, 0x8}, "000000h-6fffffh"},
  115. {"XM25QH64C/D", 0x204017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  116. {"XT25F64B", 0x0B4017, 2, {0x10, 0x40}, "000000h-6fffffh"}, //XT25F64F
  117. {"S25FL164K", 0x014017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  118. {"ZB25VQ64A", 0x5e4017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  119. {"PY25Q64HA", 0x852017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  120. //{"MX25L12835F/45G", 0xc22018, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  121. //{"W25Q128JV", 0xef4018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  122. //{"MX25L6433F", 0xc22017, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  123. //{"GD25Q127C", 0xc84018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  124. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  125. //{"P25Q64H", 0x856017, 2, {0x10, 0x40}, "000000h-6fffffh"},
  126. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  127. //{"ZB25VQ128A", 0x5e4018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"},
  128. //{"XM25QH128C", 0x204018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"}
  129. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 128)
  130. {"W25Q64DW", 0xef6017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  131. {"W25Q64FV", 0xef4017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  132. {"MX25L6436F", 0xc22017, 2, {0x38, 0x0}, "000000h-7dffffh"},
  133. {"MX25L6406E", 0xc22017, 1, {0x38}, "000000h-7dffffh"},
  134. {"GD25Q64B", 0xc84017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  135. {"EN25Q64", 0x1c3017, 1, {0x8}, "000000h-7dffffh"},
  136. {"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  137. {"EN25QH64A", 0x1c7017, 2, {0x30, 0x8}, "000000h-7dffffh"},
  138. {"EN25QX64A(2CPU)", 0x1c7117, 2, {0x4, 0x40}, "000000h-7dffffh"},
  139. {"BY25Q64AS", 0x684017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  140. {"F25L64QA", 0x8c4117, 1, {0x38}, "000000h-7dffffh"},
  141. {"XM25QH64A", 0x207017, 2, {0x30, 0x8}, "000000h-7dffffh"},
  142. {"XM25QH64C/D", 0x204017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  143. {"XT25F64B", 0x0B4017, 2, {0x4, 0x40}, "000000h-7dffffh"}, //XT25F64F
  144. {"S25FL164K", 0x014017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  145. {"ZB25VQ64A", 0x5e4017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  146. {"PY25Q64HA", 0x852017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  147. //{"W25Q128JV", 0xef4018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  148. //{"MX25L12835F/45G", 0xc22018, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  149. //{"MX25L6433F", 0xc22017, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  150. //{"GD25Q127C", 0xc84018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  151. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  152. //{"P25Q64H", 0x856017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  153. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  154. //{"ZB25VQ128A", 0x5e4018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"},
  155. //{"XM25QH128C", 0x204018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"}
  156. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 64)
  157. {"EN25Q64", 0x1c3017, 1, {0x4}, "000000h-7effffh"},
  158. {"XM25QH64A", 0x207017, 2, {0x34, 0x8}, "000000h-7effffh"},
  159. //{"W25Q64DW", 0xef6017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  160. //{"W25Q64FV", 0xef4017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  161. //{"MX25L6436F", 0xc22017, 2, {0x38, 0x0}, "000000h-7dffffh (unfit)"},
  162. //{"MX25L6406E", 0xc22017, 1, {0x38}, "000000h-7dffffh"},
  163. //{"GD25Q64B", 0xc84017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  164. //{"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  165. //{"EN25QH64A", 0x1c7017, 2, {0x34, 0x8}, "000000h-7effffh"},
  166. //{"EN25QX64A(2CPU)", 0x1c7117, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"},
  167. //{"BY25Q64AS", 0x684017, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"},
  168. //{"F25L64QA", 0x8c4117, 1, {0x38}, "000000h-7dffffh"},
  169. //{"XM25QH64C/D", 0x204017, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"},
  170. //{"XT25F64B", 0x0B4017, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"}, //XT25F64F
  171. //{"S25FL164K", 0x014017, 2, {0x4, 0x40}, "000000h-7dffffh"},
  172. //{"ZB25VQ64A", 0x5e4017, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"},
  173. //{"MX25L12835F/45G", 0xc22018, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  174. //{"W25Q128JV", 0xef4018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  175. //{"MX25L6433F", 0xc22017, 2, {0x1c, 0x8}, "000000h-3fffffh"},
  176. //{"GD25Q127C", 0xc84018, 2, {0x34, 0x0}, "000000h-3fffffh"},
  177. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  178. //{"P25Q64H", 0x856017, 2, {0x4, 0x40}, "000000h-7dffffh (unfit)"},
  179. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  180. //{"ZB25VQ128A", 0x5e4018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"},
  181. //{"XM25QH128C", 0x204018, 2, {0x34, 0x0}, "000000h-3fffffh (unfit)"}
  182. #endif
  183. #elif (CONFIG_CODE_FLASH_SIZE == 4096)
  184. #if (CONFIG_SPI_SIMFS_FLASHSIZE == 256)
  185. {"W25Q32FV/JV", 0xef4016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  186. {"MX25L3236F", 0xc22016, 2, {0x30, 0x0}, "000000h-3bffffh"},
  187. {"MX25L3205D", 0xc22016, 1, {0x30}, "000000h-3bffffh"},
  188. {"GD25Q32B/C/E", 0xc84016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  189. {"EN25Q32B", 0x1c3016, 1, {0x0c}, "000000h-3bffffh"},
  190. {"EN25QH32A", 0x1c7016, 1, {0x38}, "000000h-1fffffh"},
  191. {"EN25QH32B", 0x1c7016, 2, {0x24, 0x8}, "000000h-3bffffh"},
  192. {"EN25QE32A(2PPU)", 0x1c4116, 2, {0xc, 0x40}, "000000h-3bffffh"}, //2PPU
  193. {"BG25Q32A", 0xe04016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  194. {"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  195. {"XM25QH32C/D", 0x204016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  196. {"XT25F32B", 0x0B4016, 2, {0x0c, 0x40}, "000000h-3bffffh"}, //XT25F32F
  197. {"ZB25VQ32", 0x5e4016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  198. {"PY25Q32HB", 0x852016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  199. //{"FM25Q32BI3", 0xA14016, 2, {0x0c, 0x40}, "000000h-3bffffh"},
  200. //{"W25Q128JV", 0xef4018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  201. //{"W25Q64DW", 0xef6017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  202. //{"W25Q64FV", 0xef4017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  203. //{"MX25L12835F/45G", 0xc22018, 2, {0x18, 0x8}, "000000h-1fffffh"},
  204. //{"MX25L6436F", 0xc22017, 2, {0x0, 0x0}, "None"}, //OTP
  205. //{"MX25L6433F", 0xc22017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  206. //{"MX25L6406E", 0xc22017, 1, {0x00}, "Couldn't Find Protect Area"},
  207. //{"GD25Q127C", 0xc84018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  208. //{"GD25Q64B", 0xc84017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  209. //{"EN25Q64", 0x1c3017, 1, {0x00}, "Couldn't Find Protect Area"},
  210. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  211. //{"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  212. //{"EN25QH64A", 0x1c7017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  213. //{"BY25Q64AS", 0x684017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  214. //{"F25L64QA", 0x8c4117, 1, {0x00}, "Couldn't Find Protect Area"},
  215. //{"P25Q64H", 0x856017, 2, {0x34, 0x0}, "000000h-1fffffh"},
  216. //{"P25Q32H", 0x856016, 2, {0xc, 0x40}, "000000h-3bffffh"},
  217. //{"S25FL164K", 0x014017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  218. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  219. //{"XM25QH64A", 0x207017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  220. //{"XM25QH64C", 0x204017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  221. //{"XT25F64B", 0x0B4017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  222. //{"ZB25VQ128A", 0x5e4018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"},
  223. //{"ZB25VQ64A", 0x5e4017, 2, {0x34, 0x00}, "000000h-1fffffh (unfit)"},
  224. //{"XM25QH128C", 0x204018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"}
  225. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 128)
  226. {"W25Q32FV/JV", 0xef4016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  227. {"MX25L3236F", 0xc22016, 2, {0x34, 0x0}, "000000h-3dffffh"},
  228. {"MX25L3205D", 0xc22016, 1, {0x34}, "000000h-3bffffh"},
  229. {"GD25Q32B/C/E", 0xc84016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  230. {"EN25Q32B", 0x1c3016, 1, {0x08}, "000000h-3dffffh"},
  231. {"EN25QH32B", 0x1c7016, 2, {0x28, 0x8}, "000000h-3dffffh"},
  232. {"EN25QE32A(2PPU)", 0x1c4116, 2, {0x8, 0x40}, "000000h-3dffffh"},
  233. {"BG25Q32A", 0xe04016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  234. {"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  235. {"XM25QH32C/D", 0x204016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  236. {"XT25F32B", 0x0B4016, 2, {0x08, 0x40}, "000000h-3dffffh"}, //XT25F32F
  237. {"ZB25VQ32", 0x5e4016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  238. {"PY25Q32HB", 0x852016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  239. //{"FM25Q32BI3", 0xA14016, 2, {0x08, 0x40}, "000000h-3dffffh"},
  240. //{"W25Q128JV", 0xef4018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  241. //{"W25Q64DW", 0xef6017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  242. //{"W25Q64FV", 0xef4017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  243. //{"MX25L12835F/45G", 0xc22018, 2, {0x18, 0x8}, "000000h-1fffffh"},
  244. //{"MX25L6436F", 0xc22017, 2, {0x0, 0x0}, "None"},
  245. //{"MX25L6433F", 0xc22017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  246. //{"MX25L6406E", 0xc22017, 1, {0x00}, "Couldn't Find Protect Area"},
  247. //{"GD25Q127C", 0xc84018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  248. //{"GD25Q64B", 0xc84017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  249. //{"EN25Q64", 0x1c3017, 1, {0x00}, "Couldn't Find Protect Area"},
  250. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  251. //{"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  252. //{"EN25QH64A", 0x1c7017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  253. //{"EN25QH32A", 0x1c7016, 1, {0x38}, "000000h-1fffffh"},
  254. //{"BY25Q64AS", 0x684017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  255. //{"F25L64QA", 0x8c4117, 1, {0x00}, "Couldn't Find Protect Area"},
  256. //{"P25Q64H", 0x856017, 2, {0x34, 0x0}, "000000h-1fffffh"},
  257. //{"P25Q32H", 0x856016, 2, {0x8, 0x40}, "000000h-3dffffh"},
  258. //{"S25FL164K", 0x014017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  259. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  260. //{"XM25QH64A", 0x207017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  261. //{"XM25QH64C", 0x204017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  262. //{"XT25F64B", 0x0B4017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  263. //{"ZB25VQ128A", 0x5e4018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"},
  264. //{"ZB25VQ64A", 0x5e4017, 2, {0x34, 0x00}, "000000h-1fffffh (unfit)"},
  265. //{"XM25QH128C", 0x204018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"}
  266. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 64)
  267. {"W25Q32FV/JV", 0xef4016, 2, {0x04, 0x40}, "000000h-3effffh"},
  268. {"MX25L3236F", 0xc22016, 2, {0x38, 0x0}, "000000h-3effffh"},
  269. {"MX25L3205D", 0xc22016, 1, {0x38}, "000000h-3effffh"},
  270. {"GD25Q32B/C/E", 0xc84016, 2, {0x04, 0x40}, "000000h-3effffh"},
  271. {"EN25Q32B", 0x1c3016, 1, {0x04}, "000000h-3effffh"},
  272. {"EN25QH32B", 0x1c7016, 2, {0x2c, 0x8}, "000000h-3effffh"},
  273. {"EN25QE32A(2PPU)", 0x1c4116, 2, {0x4, 0x40}, "000000h-3effffh"},
  274. {"BG25Q32A", 0xe04016, 2, {0x04, 0x40}, "000000h-3effffh"},
  275. {"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x04, 0x40}, "000000h-3effffh"},
  276. {"XM25QH32C/D", 0x204016, 2, {0x04, 0x40}, "000000h-3effffh"},
  277. {"XT25F32B", 0x0B4016, 2, {0x04, 0x40}, "000000h-3effffh"}, //XT25F32F
  278. {"ZB25VQ32", 0x5e4016, 2, {0x04, 0x40}, "000000h-3effffh"},
  279. {"PY25Q32HB", 0x852016, 2, {0x04, 0x40}, "000000h-3effffh"},
  280. //{"FM25Q32BI3", 0xA14016, 2, {0x04, 0x40}, "000000h-3effffh"},
  281. //{"W25Q128JV", 0xef4018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  282. //{"W25Q64DW", 0xef6017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  283. //{"W25Q64FV", 0xef4017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  284. //{"MX25L12835F/45G", 0xc22018, 2, {0x18, 0x8}, "000000h-1fffffh"},
  285. //{"MX25L6436F", 0xc22017, 2, {0x0, 0x0}, "None"},
  286. //{"MX25L6433F", 0xc22017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  287. //{"MX25L6406E", 0xc22017, 1, {0x00}, "Couldn't Find Protect Area"},
  288. //{"GD25Q127C", 0xc84018, 2, {0x30, 0x0}, "000000h-1fffffh"},
  289. //{"GD25Q64B", 0xc84017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  290. //{"EN25Q64", 0x1c3017, 1, {0x00}, "Couldn't Find Protect Area"},
  291. //{"EN25QH128", 0x1c7018, 2, {0x0, 0x8}, "None (unfit)"},
  292. //{"EN25QH64", 0x1c7017, 1, {0x38}, "000000h-1fffffh"},
  293. //{"EN25QH64A", 0x1c7017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  294. //{"EN25QH32A", 0x1c7016, 1, {0x38}, "000000h-1fffffh"},
  295. //{"BY25Q64AS", 0x684017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  296. //{"F25L64QA", 0x8c4117, 1, {0x00}, "Couldn't Find Protect Area"},
  297. //{"P25Q64H", 0x856017, 2, {0x34, 0x0}, "000000h-1fffffh"},
  298. //{"P25Q32H", 0x856016, 2, {0x4, 0x40}, "000000h-3effffh"},
  299. //{"S25FL164K", 0x014017, 2, {0x34, 0x00}, "000000h-1fffffh"},
  300. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  301. //{"XM25QH64A", 0x207017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  302. //{"XM25QH64C", 0x204017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  303. //{"XT25F64B", 0x0B4017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  304. //{"ZB25VQ128A", 0x5e4018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"},
  305. //{"ZB25VQ64A", 0x5e4017, 2, {0x34, 0x00}, "000000h-1fffffh (unfit)"},
  306. //{"XM25QH128C", 0x204018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"}
  307. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 32)
  308. {"GD25Q32B/C/E", 0xc84016, 2, {0x58, 0x40}, "000000h-3f7fffh"},
  309. {"EN25QE32A(2PPU)", 0x1c4116, 2, {0x58, 0x40}, "000000h-3f7fffh"},
  310. {"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x50, 0x40}, "000000h-3f7fffh"},
  311. {"XM25QH32C/D", 0x204016, 2, {0x50, 0x40}, "000000h-3f7fffh"},
  312. {"XT25F32B", 0x0B4016, 2, {0x58, 0x40}, "000000h-3f7fffh"}, //XT25F32F
  313. {"ZB25VQ32", 0x5e4016, 2, {0x58, 0x40}, "000000h-3f7fffh"},
  314. {"PY25Q32HB", 0x852016, 2, {0x58, 0x40}, "000000h-3f7fffh"},
  315. //{"FM25Q32BI3", 0xA14016, 2, {0x50, 0x40}, "000000h-3f7fffh"},
  316. //{"BY25Q64AS", 0x684017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  317. //{"P25Q64H", 0x856017, 2, {0x34, 0x0}, "000000h-1fffffh"},
  318. //{"P25Q32H", 0x856016, 2, {0x58, 0x40}, "000000h-3f7fffh"},
  319. //{"XM25QH128A", 0x207018, 2, {0x0, 0x0}, "None"},
  320. //{"XM25QH64A", 0x207017, 2, {0x18, 0x8}, "000000h-1fffffh"},
  321. //{"XM25QH64C", 0x204017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  322. //{"XT25F64B", 0x0B4017, 2, {0x34, 0x0}, "000000h-1fffffh (unfit)"},
  323. //{"ZB25VQ128A", 0x5e4018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"},
  324. //{"ZB25VQ64A", 0x5e4017, 2, {0x34, 0x00}, "000000h-1fffffh (unfit)"},
  325. //{"XM25QH128C", 0x204018, 2, {0x30, 0x0}, "000000h-1fffffh (unfit)"}
  326. #endif
  327. #elif (CONFIG_CODE_FLASH_SIZE == 2048)
  328. #if (CONFIG_SPI_SIMFS_FLASHSIZE == 64)
  329. {"GD25Q16E", 0xc84015, 2, {0x4, 0x40}, "000000h-1effffh"},
  330. {"GD25LQ16E", 0xc86015, 2, {0x4, 0x40}, "000000h-1effffh"},
  331. {"IS25LP016D", 0x9d6015, 1, {0x28}, "000000h-0fffffh (unfit)"},
  332. {"S25FL164K", 0x014017, 1, {0x30}, "000000h-0fffffh (unfit)"},
  333. {"ZB25VQ16C", 0x5e4015, 2, {0x4, 0x40}, "000000h-1effffh"},
  334. //{"W25Q64DW", 0xef6017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  335. //{"W25Q64FV", 0xef4017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  336. //{"W25Q32FV/JV", 0xef4016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  337. //{"MX25L6436F", 0xc22017, 2, {0x0, 0x0}, "Couldn't Find Protect Area"},
  338. //{"MX25L6406E", 0xc22017, 1, {0x00}, "Couldn't Find Protect Area"},
  339. //{"MX25L3236F", 0xc22016, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  340. //{"MX25L3205D", 0xc22016, 1, {0x0}, "Couldn't Find Protect Area"},
  341. //{"GD25Q64B", 0xc84017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  342. //{"GD25Q32B/C", 0xc84016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  343. //{"EN25Q64", 0x1c3017, 1, {0x00}, "Couldn't Find Protect Area"},
  344. //{"EN25Q32B", 0x1c3016, 1, {0x0}, "Couldn't Find Protect Area"},
  345. //{"EN25QH64", 0x1c7017, 1, {0x34}, "000000h-0fffffh (unfit)"},
  346. //{"EN25QH64A", 0x1c7017, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  347. //{"EN25QH32A", 0x1c7016, 1, {0x34}, "000000h-0fffffh (unfit)"},
  348. //{"EN25QH32B", 0x1c7016, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  349. //{"BG25Q32A", 0xe04016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  350. //{"BY25Q64AS", 0x684017, 2, {0x30, 0x0}, "000000h-0fffffh (unfit)"},
  351. //{"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  352. //{"F25L64QA", 0x8c4117, 1, {0x00}, "Couldn't Find Protect Area"},
  353. //{"XM25QH64A", 0x207017, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  354. //{"XM25QH32C", 0x204016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  355. //{"XT25F64B", 0x0B4017, 2, {0x30, 0x0}, "000000h-0fffffh (unfit)"},
  356. //{"XT25F32B", 0x0B4016, 2, {0x34, 0x40}, "000000h-0fffffh (unfit)"},
  357. //{"ZB25VQ64A", 0x5e4017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  358. //{"ZB25VQ32", 0x5e4016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  359. #elif (CONFIG_SPI_SIMFS_FLASHSIZE == 32)
  360. {"GD25Q16E", 0xc84015, 2, {0x50, 0x40}, "000000h-1f7fffh"},
  361. {"GD25LQ16E", 0xc86015, 2, {0x50, 0x40}, "000000h-1f7fffh"},
  362. {"IS25LP016D", 0x9d6015, 1, {0x28}, "000000h-0fffffh (unfit)"},
  363. {"S25FL164K", 0x014017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  364. {"ZB25VQ16C", 0x5e4015, 2, {0x50, 0x40}, "000000h-1f7fffh"},
  365. //{"W25Q64DW", 0xef6017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  366. //{"W25Q64FV", 0xef4017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  367. //{"W25Q32FV/JV", 0xef4016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  368. //{"MX25L6436F", 0xc22017, 2, {0x0, 0x0}, "Couldn't Find Protect Area"},
  369. //{"MX25L6406E", 0xc22017, 1, {0x00}, "Couldn't Find Protect Area"},
  370. //{"MX25L3236F", 0xc22016, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  371. //{"MX25L3205D", 0xc22016, 1, {0x0}, "Couldn't Find Protect Area"},
  372. //{"GD25Q64B", 0xc84017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  373. //{"GD25Q32B/C", 0xc84016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  374. //{"EN25Q64", 0x1c3017, 1, {0x00}, "Couldn't Find Protect Area"},
  375. //{"EN25Q32B", 0x1c3016, 1, {0x0}, "Couldn't Find Protect Area"},
  376. //{"EN25QH64", 0x1c7017, 1, {0x34}, "000000h-0fffffh (unfit)"},
  377. //{"EN25QH64A", 0x1c7017, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  378. //{"EN25QH32A", 0x1c7016, 1, {0x34}, "000000h-0fffffh (unfit)"},
  379. //{"EN25QH32B", 0x1c7016, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  380. //{"BG25Q32A", 0xe04016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  381. //{"BY25Q64AS", 0x684017, 2, {0x30, 0x0}, "000000h-0fffffh (unfit)"},
  382. //{"BY25Q32BS/BH25Q32BS", 0x684016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  383. //{"F25L64QA", 0x8c4117, 1, {0x00}, "Couldn't Find Protect Area"},
  384. //{"XM25QH64A", 0x207017, 2, {0x14, 0x8}, "000000h-0fffffh (unfit)"},
  385. //{"XM25QH32C", 0x204016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  386. //{"XT25F64B", 0x0B4017, 2, {0x30, 0x0}, "000000h-0fffffh (unfit)"},
  387. //{"XT25F32B", 0x0B4016, 2, {0x34, 0x40}, "000000h-0fffffh (unfit)"},
  388. //{"ZB25VQ64A", 0x5e4017, 2, {0x30, 0x00}, "000000h-0fffffh (unfit)"},
  389. //{"ZB25VQ32", 0x5e4016, 2, {0x34, 0x0}, "000000h-0fffffh (unfit)"},
  390. #endif
  391. #endif
  392. };
  393. #endif
  394. #endif // _DRV_SPI_FLASH_TABLE_H