Author: stefanct
Date: Sun Oct 20 01:09:16 2013
New Revision: 1758
URL: http://flashrom.org/trac/flashrom/changeset/1758

Log:
Refine support for SST25VF family.

 - Reorder some models and refine comments.
 - Add SST25VF512A:
   AAI is available but with an uncommon opcode (0xAF). Fully tested
   with Bus Pirate 3.5 running 6.2 beta firmware by Cory.
 - Add SST25VF020 and SST25VF020B.

Signed-off-by: Cory Henderson <[email protected]>
Signed-off-by: Stefan Tauner <[email protected]>
Acked-by: Stefan Tauner <[email protected]>

Modified:
   trunk/flashchips.c
   trunk/flashchips.h

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c  Wed Oct  2 03:22:17 2013        (r1757)
+++ trunk/flashchips.c  Sun Oct 20 01:09:16 2013        (r1758)
@@ -9551,11 +9551,11 @@
 
        {
                .vendor         = "SST",
-               .name           = "SST25VF010",
+               .name           = "SST25VF512A",
                .bustype        = BUS_SPI,
                .manufacture_id = SST_ID,
-               .model_id       = SST_SST25VF010_REMS,
-               .total_size     = 128,
+               .model_id       = SST_SST25VF512A_REMS,
+               .total_size     = 64,
                .page_size      = 256,
                .feature_bits   = FEATURE_WRSR_EWSR,
                .tested         = TEST_OK_PREW,
@@ -9564,134 +9564,134 @@
                .block_erasers  =
                {
                        {
-                               .eraseblocks = { {4 * 1024, 32} },
+                               .eraseblocks = { {4 * 1024, 16} },
                                .block_erase = spi_block_erase_20,
                        }, {
-                               .eraseblocks = { {32 * 1024, 4} },
+                               .eraseblocks = { {32 * 1024, 2} },
                                .block_erase = spi_block_erase_52,
                        }, {
-                               .eraseblocks = { {128 * 1024, 1} },
+                               .eraseblocks = { {32 * 1024, 2} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 1} },
                                .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_sst25, /* 
TODO: check */
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
FIXME: No BP2 & 3 */
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_chip_write_1,
-               .read           = spi_chip_read,
+               .write          = spi_chip_write_1, /* AAI supported, but 
opcode is 0xAF */
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
                .voltage        = {2700, 3600},
        },
 
        {
                .vendor         = "SST",
-               .name           = "SST25VF016B",
+               .name           = "SST25VF010",
                .bustype        = BUS_SPI,
                .manufacture_id = SST_ID,
-               .model_id       = SST_SST25VF016B,
-               .total_size     = 2048,
+               .model_id       = SST_SST25VF010_REMS,
+               .total_size     = 128,
                .page_size      = 256,
-               .feature_bits   = FEATURE_WRSR_EITHER,
+               .feature_bits   = FEATURE_WRSR_EWSR,
                .tested         = TEST_OK_PREW,
-               .probe          = probe_spi_rdid,
+               .probe          = probe_spi_rems,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
                {
                        {
-                               .eraseblocks = { {4 * 1024, 512} },
+                               .eraseblocks = { {4 * 1024, 32} },
                                .block_erase = spi_block_erase_20,
                        }, {
-                               .eraseblocks = { {32 * 1024, 64} },
+                               .eraseblocks = { {32 * 1024, 4} },
                                .block_erase = spi_block_erase_52,
                        }, {
-                               .eraseblocks = { {64 * 1024, 32} },
+                               .eraseblocks = { {32 * 1024, 4} },
                                .block_erase = spi_block_erase_d8,
                        }, {
-                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .eraseblocks = { {128 * 1024, 1} },
                                .block_erase = spi_block_erase_60,
                        }, {
-                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .eraseblocks = { {128 * 1024, 1} },
                                .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_sst25vf016,
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
FIXME: No BP2 & 3 */
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_aai_write,
-               .read           = spi_chip_read,
+               .write          = spi_chip_write_1, /* AAI supported, but 
opcode is 0xAF */
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
                .voltage        = {2700, 3600},
        },
 
        {
                .vendor         = "SST",
-               .name           = "SST25VF032B",
+               .name           = "SST25VF020",
                .bustype        = BUS_SPI,
                .manufacture_id = SST_ID,
-               .model_id       = SST_SST25VF032B,
-               .total_size     = 4096,
+               .model_id       = SST_SST25VF020_REMS,
+               .total_size     = 256,
                .page_size      = 256,
                .feature_bits   = FEATURE_WRSR_EWSR,
-               .tested         = TEST_OK_PREW,
-               .probe          = probe_spi_rdid,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rems,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
                {
                        {
-                               .eraseblocks = { {4 * 1024, 1024} },
+                               .eraseblocks = { {4 * 1024, 64} },
                                .block_erase = spi_block_erase_20,
                        }, {
-                               .eraseblocks = { {32 * 1024, 128} },
+                               .eraseblocks = { {32 * 1024, 8} },
                                .block_erase = spi_block_erase_52,
                        }, {
-                               .eraseblocks = { {64 * 1024, 64} },
-                               .block_erase = spi_block_erase_d8,
-                       }, {
-                               .eraseblocks = { {4 * 1024 * 1024, 1} },
+                               .eraseblocks = { {256 * 1024, 1} },
                                .block_erase = spi_block_erase_60,
-                       }, {
-                               .eraseblocks = { {4 * 1024 * 1024, 1} },
-                               .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_sst25, /* 
TODO: check */
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
FIXME: No BP2 & 3 */
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_aai_write,
-               .read           = spi_chip_read,
+               .write          = spi_chip_write_1, /* AAI supported, but 
opcode is 0xAF */
+               .read           = spi_chip_read, /* only */
                .voltage        = {2700, 3600},
        },
 
        {
                .vendor         = "SST",
-               .name           = "SST25VF064C",
+               .name           = "SST25VF020B",
                .bustype        = BUS_SPI,
                .manufacture_id = SST_ID,
-               .model_id       = SST_SST25VF064C,
-               .total_size     = 8192,
+               .model_id       = SST_SST25VF020B,
+               .total_size     = 256,
                .page_size      = 256,
                .feature_bits   = FEATURE_WRSR_EWSR,
-               .tested         = TEST_OK_PREW,
+               .tested         = TEST_UNTESTED,
                .probe          = probe_spi_rdid,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
                {
                        {
-                               .eraseblocks = { {4 * 1024, 2048} },
+                               .eraseblocks = { {4 * 1024, 64} },
                                .block_erase = spi_block_erase_20,
                        }, {
-                               .eraseblocks = { {32 * 1024, 256} },
+                               .eraseblocks = { {32 * 1024, 8} },
                                .block_erase = spi_block_erase_52,
                        }, {
-                               .eraseblocks = { {64 * 1024, 128} },
+                               .eraseblocks = { {64 * 1024, 4} },
                                .block_erase = spi_block_erase_d8,
                        }, {
-                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .eraseblocks = { {256 * 1024, 1} },
                                .block_erase = spi_block_erase_60,
                        }, {
-                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .eraseblocks = { {256 * 1024, 1} },
                                .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_sst25, /* 
TODO: check */
-               .unlock         = spi_disable_blockprotect,
-               .write          = spi_chip_write_256,
-               .read           = spi_chip_read,
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
FIXME: No BP2 & 3 and 2nd SR */
+               .unlock         = spi_disable_blockprotect, /* FIXME: 2nd SR */
+               .write          = spi_aai_write, /* AAI supported (0xAD) */
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
                .voltage        = {2700, 3600},
        },
 
@@ -9760,8 +9760,8 @@
                },
                .printlock      = spi_prettyprint_status_register_sst25vf040b,
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_aai_write,
-               .read           = spi_chip_read,
+               .write          = spi_aai_write, /* AAI supported (0xAD) */
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
                .voltage        = {2700, 3600},
        },
 
@@ -9840,6 +9840,120 @@
                .read           = spi_chip_read,
                .voltage        = {2700, 3600},
        },
+
+       {
+               .vendor         = "SST",
+               .name           = "SST25VF016B",
+               .bustype        = BUS_SPI,
+               .manufacture_id = SST_ID,
+               .model_id       = SST_SST25VF016B,
+               .total_size     = 2048,
+               .page_size      = 256,
+               .feature_bits   = FEATURE_WRSR_EITHER,
+               .tested         = TEST_OK_PREW,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 512} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {32 * 1024, 64} },
+                               .block_erase = spi_block_erase_52,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 32} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       },
+               },
+               .printlock      = spi_prettyprint_status_register_sst25vf016,
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_aai_write,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "SST",
+               .name           = "SST25VF032B",
+               .bustype        = BUS_SPI,
+               .manufacture_id = SST_ID,
+               .model_id       = SST_SST25VF032B,
+               .total_size     = 4096,
+               .page_size      = 256,
+               .feature_bits   = FEATURE_WRSR_EWSR,
+               .tested         = TEST_OK_PREW,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 1024} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {32 * 1024, 128} },
+                               .block_erase = spi_block_erase_52,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 64} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {4 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {4 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       },
+               },
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
TODO: check */
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_aai_write,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "SST",
+               .name           = "SST25VF064C",
+               .bustype        = BUS_SPI,
+               .manufacture_id = SST_ID,
+               .model_id       = SST_SST25VF064C,
+               .total_size     = 8192,
+               .page_size      = 256,
+               .feature_bits   = FEATURE_WRSR_EWSR,
+               .tested         = TEST_OK_PREW,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 2048} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {32 * 1024, 256} },
+                               .block_erase = spi_block_erase_52,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 128} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       },
+               },
+               .printlock      = spi_prettyprint_status_register_sst25, /* 
TODO: check */
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
 
        {
                .vendor         = "SST",

Modified: trunk/flashchips.h
==============================================================================
--- trunk/flashchips.h  Wed Oct  2 03:22:17 2013        (r1757)
+++ trunk/flashchips.h  Sun Oct 20 01:09:16 2013        (r1758)
@@ -577,6 +577,7 @@
 #define SST_SST25VF512A_REMS   0x48    /* REMS or RES opcode */
 #define SST_SST25VF010_REMS    0x49    /* REMS or RES opcode */
 #define SST_SST25VF020_REMS    0x43    /* REMS or RES opcode */
+#define SST_SST25VF020B                0x258C
 #define SST_SST25VF040_REMS    0x44    /* REMS or RES opcode, same as 
SST25LF040A */
 #define SST_SST25VF040B                0x258D
 #define SST_SST25VF040B_REMS   0x8D    /* REMS or RES opcode */

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to