Add definitions for the following chips from Mosel Vitelic Corporation:

V29C31004B
V29C31004T
V29C51000B
V29C51000T
V29C51001B
V29C51001T
V29C51002B
V29C51002T
V29C51004B
V29C51004T
V29C51400B
V29C51400T
V29LC51000
V29LC51001
V29LC51002

This is one of my first patches ever so I am not at all certain it is
correct.

Datasheets here:
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C31004.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C51000.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C51001.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C51002.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C51004.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29C51400.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29LC51000.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29LC51001.pdf
http://www.ezoflash.com/datasheets/flash/Mosel_Vitelic/V29LC51002.pdf


Signed-off-by: Mattias Mattsson <[email protected]>

Index: flashrom/flashchips.c
===================================================================
--- flashrom.orig/flashchips.c  2010-07-09 11:07:44.000000000 +0200
+++ flashrom/flashchips.c       2010-07-09 11:08:01.000000000 +0200
@@ -3166,6 +3166,422 @@
        },
 
        {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C31004B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C31004B,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C31004T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C31004T,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51000B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51000B,
+               .total_size     = 64,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 128}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {128 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51000T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51000T,
+               .total_size     = 64,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 128}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {128 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51001B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51001B,
+               .total_size     = 128,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 256}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {256 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51001T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51001T,
+               .total_size     = 128,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 256}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {256 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51002B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51002B,
+               .total_size     = 256,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51002T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51002T,
+               .total_size     = 256,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51004B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51004B,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51004T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51004T,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51400B",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51400B,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51400T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51400T,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29C51400T",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29C51400T,
+               .total_size     = 512,
+               .page_size      = 1024,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 1024, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29LC51000",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29LC51000,
+               .total_size     = 64,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 128}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {128 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29LC51001",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29LC51001,
+               .total_size     = 128,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 256}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {256 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
+               .vendor         = "Mosel Vitelic",
+               .name           = "V29LC51002",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = MVC_ID,
+               .model_id       = MVC_V29LC51002,
+               .total_size     = 256,
+               .page_size      = 512,
+               .feature_bits   = FEATURE_BYTEWRITES | FEATURE_EITHER_RESET,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_jedec,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {1 * 512, 512}, },
+                               .block_erase = erase_sector_jedec,
+                       }, {
+                               .eraseblocks = { {512 * 512, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       },
+               },
+               .write          = write_jedec_1,
+               .read           = read_memmapped,
+       },
+
+       {
                .vendor         = "Numonyx",
                .name           = "M25PE10",
                .bustype        = CHIP_BUSTYPE_SPI,
Index: flashrom/flashchips.h
===================================================================
--- flashrom.orig/flashchips.h  2010-07-09 11:07:44.000000000 +0200
+++ flashrom/flashchips.h       2010-07-09 11:08:01.000000000 +0200
@@ -329,6 +329,23 @@
 #define MX_29SL800CB           0x6B    /* Same as MX29SL802CB */
 #define MX_29SL800CT           0xEA    /* Same as MX29SL802CT */
 
+#define MVC_ID                 0x40    /* Mosel Vitelic Corp. / SyncMOS */
+#define MVC_V29C31004B         0x73
+#define MVC_V29C31004T         0x63    /* Same as S29C31004T */
+#define MVC_V29C51000B         0xA0
+#define MVC_V29C51000T         0x00
+#define MVC_V29C51001B         0xA1
+#define MVC_V29C51001T         0x01    /* Same as S29C51001T */
+#define MVC_V29C51002B         0xA2
+#define MVC_V29C51002T         0x02    /* Same as S29C51002T */
+#define MVC_V29C51004B         0xA3
+#define MVC_V29C51004T         0x03    /* Same as S29C51004T */
+#define MVC_V29C51400B         0xB3
+#define MVC_V29C51400T         0x13
+#define MVC_V29LC51000         0x20
+#define MVC_V29LC51001         0x60
+#define MVC_V29LC51002         0x82
+
 /*
  * Programmable Micro Corp is listed in JEP106W in bank 2, so it should
  * have a 0x7F continuation code prefix.

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

Reply via email to