Add definitions for the following chips
Mosel Vitelic Corporation:
V29C51000B, V29C51000T, V29C51400B, V29C51400T, V29LC51000, V29LC51001,
V29LC51002
SyncMOS / Mosel Vitelic Corporation:
{F,S,V}29C51001B, {F,S,V}29C51001T, {F,S,V}29C51002B, {F,S,V}29C51002T,
{F,S,V}29C51004B, {F,S,V}29C51004T, {V,S}29C31004B, {V,S}29C31004T
Modify earlier definitions of
S29C31004T/S29C51001T/S29C51002T/S29C51004T to change name and correct
page size.
Corresponding to flashrom svn r1124.
Signed-off-by: Mattias Mattsson <vitplister@gmail.com>
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
diff --git a/flashchips.c b/flashchips.c
index efd7599..eac08ff 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -3879,6 +3879,188 @@
},
{
+ .vendor = "MoselVitelic",
+ .name = "V29C51000B",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29C51000B,
+ .total_size = 64,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 128} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "MoselVitelic",
+ .name = "V29C51000T",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29C51000T,
+ .total_size = 64,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 128} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "MoselVitelic",
+ .name = "V29C51400B",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29C51400B,
+ .total_size = 512,
+ .page_size = 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {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 = "MoselVitelic",
+ .name = "V29C51400T",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29C51400T,
+ .total_size = 512,
+ .page_size = 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {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 = "MoselVitelic",
+ .name = "V29LC51000",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29LC51000,
+ .total_size = 64,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 128} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {64 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "MoselVitelic",
+ .name = "V29LC51001",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29LC51001,
+ .total_size = 128,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 256} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {128 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "MoselVitelic",
+ .name = "V29LC51002",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = MVC_V29LC51002,
+ .total_size = 256,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 512} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
.vendor = "Numonyx",
.name = "M25PE10",
.bustype = CHIP_BUSTYPE_SPI,
@@ -6382,39 +6564,13 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C31004T",
+ .vendor = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51001B",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C31004T,
- .total_size = 512,
- .page_size = 128,
- .feature_bits = FEATURE_EITHER_RESET,
- .tested = TEST_UNTESTED,
- .probe = probe_jedec,
- .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
- .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 = "SyncMOS",
- .name = "S29C51001T",
- .bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51001T,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51001B,
.total_size = 128,
- .page_size = 128,
+ .page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
.probe = probe_jedec,
@@ -6434,15 +6590,41 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C51002T",
+ .vendor = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51001T",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51002T,
- .total_size = 256,
- .page_size = 128,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51001T,
+ .total_size = 128,
+ .page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
- .tested = TEST_OK_PRW,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 256} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {128 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51002B",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51002B,
+ .total_size = 256,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
.probe = probe_jedec,
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
@@ -6460,13 +6642,39 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C51004T",
+ .vendor = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51002T",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51004T,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51002T,
+ .total_size = 256,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_OK_PR,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {512, 512} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51004B",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51004B,
.total_size = 512,
- .page_size = 128,
+ .page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
.probe = probe_jedec,
@@ -6474,7 +6682,85 @@
.block_erasers =
{
{
- .eraseblocks = { {1 * 1024, 512} },
+ .eraseblocks = { {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 = "SyncMOS/MoselVitelic",
+ .name = "{F,S,V}29C51004T",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51004T,
+ .total_size = 512,
+ .page_size = 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {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 = "SyncMOS/MoselVitelic",
+ .name = "{S,V}29C31004B",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C31004B,
+ .total_size = 512,
+ .page_size = 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {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 = "SyncMOS/MoselVitelic",
+ .name = "{S,V}29C31004T",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C31004T,
+ .total_size = 512,
+ .page_size = 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_UNTESTED,
+ .probe = probe_jedec,
+ .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {1024, 512} },
.block_erase = erase_sector_jedec,
}, {
.eraseblocks = { {512 * 1024, 1} },
diff --git a/flashchips.h b/flashchips.h
index 56faf0a..8a7e89b 100644
--- a/flashchips.h
+++ b/flashchips.h
@@ -514,11 +514,22 @@
#define ST_M29W040B 0xE3
#define ST_M29W512B 0x27
-#define SYNCMOS_ID 0x40 /* SyncMOS and Mosel Vitelic */
-#define S29C51001T 0x01
-#define S29C51002T 0x02
-#define S29C51004T 0x03
-#define S29C31004T 0x63
+#define SYNCMOS_MVC_ID 0x40 /* SyncMOS (SM) and Mosel Vitelic Corporation (MVC) */
+#define MVC_V29C51000T 0x00
+#define MVC_V29C51400T 0x13
+#define MVC_V29LC51000 0x20
+#define MVC_V29LC51001 0x60
+#define MVC_V29LC51002 0x82
+#define MVC_V29C51000B 0xA0
+#define MVC_V29C51400B 0xB3
+#define SM_MVC_29C51001T 0x01 /* Identical chips: {F,S,V}29C51001T */
+#define SM_MVC_29C51002T 0x02 /* Identical chips: {F,S,V}29C51002T */
+#define SM_MVC_29C51004T 0x03 /* Identical chips: {F,S,V}29C51004T */
+#define SM_MVC_29C31004T 0x63 /* Identical chips: {S,V}29C31004T */
+#define SM_MVC_29C31004B 0x73 /* Identical chips: {S,V}29C31004B */
+#define SM_MVC_29C51001B 0xA1 /* Identical chips: {F,S,V}29C51001B */
+#define SM_MVC_29C51002B 0xA2 /* Identical chips: {F,S,V}29C51002B */
+#define SM_MVC_29C51004B 0xA3 /* Identical chips: {F,S,V}29C51004B */
#define TI_ID 0x97 /* Texas Instruments */
#define TI_OLD_ID 0x01 /* TI chips from last century */