This is a bit more intrusive than my earlier patch. It's a bit hard to
read in some places because keeping the definitions alphabetically
sorted.
Add definitions for the following chips from
Mosel Vitelic Corporation (MVC):
V29C51000B
V29C51000T
V29C51400B
V29C51400T
V29LC51000
V29LC51001
V29LC51002
SyncMOS (SM)/Mosel Vitelic Corporation (MVC)
{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
Modifies earlier definitions of
S29C31004T/S29C51001T/S29C51002T/S29C51004T to change name and correct
page size. Also changes vendor and chip constants.
Signed-off-by: Mattias Mattsson <vitplister(a)gmail.com>
Index: flashchips.c
===================================================================
--- flashchips.c (revision 1079)
+++ flashchips.c (working copy)
@@ -3197,6 +3197,188 @@
},
{
+ .vendor = "MVC",
+ .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 = "MVC",
+ .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 = "MVC",
+ .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 = "MVC",
+ .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 = "MVC",
+ .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 = "MVC",
+ .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 = "MVC",
+ .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,
@@ -5601,13 +5783,13 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C31004T",
+ .vendor = "SM/MVC",
+ .name = "{F,S,V}29C51001B",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C31004T,
- .total_size = 512,
- .page_size = 128,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51001B,
+ .total_size = 128,
+ .page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
.probe = probe_jedec,
@@ -5615,10 +5797,10 @@
.block_erasers =
{
{
- .eraseblocks = { {1 * 1024, 512} },
+ .eraseblocks = { {512, 256} },
.block_erase = erase_sector_jedec,
}, {
- .eraseblocks = { {512 * 1024, 1} },
+ .eraseblocks = { {128 * 1024, 1} },
.block_erase = erase_chip_block_jedec,
},
},
@@ -5627,13 +5809,13 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C51001T",
+ .vendor = "SM/MVC",
+ .name = "{F,S,V}29C51001T",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51001T,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51001T,
.total_size = 128,
- .page_size = 128,
+ .page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
.probe = probe_jedec,
@@ -5653,14 +5835,40 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C51002T",
+ .vendor = "SM/MVC",
+ .name = "{F,S,V}29C51002B",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51002T,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51002B,
.total_size = 256,
- .page_size = 128,
+ .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 =
+ {
+ {
+ .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 = "SM/MVC",
+ .name = "{F,S,V}29C51002T",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = SYNCMOS_MVC_ID,
+ .model_id = SM_MVC_29C51002T,
+ .total_size = 256,
+ .page_size = 512,
+ .feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PRW,
.probe = probe_jedec,
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
@@ -5679,13 +5887,13 @@
},
{
- .vendor = "SyncMOS",
- .name = "S29C51004T",
+ .vendor = "SM/MVC",
+ .name = "{F,S,V}29C51004B",
.bustype = CHIP_BUSTYPE_PARALLEL,
- .manufacture_id = SYNCMOS_ID,
- .model_id = S29C51004T,
+ .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,
@@ -5693,7 +5901,7 @@
.block_erasers =
{
{
- .eraseblocks = { {1 * 1024, 512} },
+ .eraseblocks = { {1024, 512} },
.block_erase = erase_sector_jedec,
}, {
.eraseblocks = { {512 * 1024, 1} },
@@ -5705,6 +5913,84 @@
},
{
+ .vendor = "SM/MVC",
+ .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 = "SM/MVC",
+ .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 = "SM/MVC",
+ .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} },
+ .block_erase = erase_chip_block_jedec,
+ },
+ },
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
.vendor = "TI",
.name = "TMS29F002RB",
.bustype = CHIP_BUSTYPE_PARALLEL,
Index: flashchips.h
===================================================================
--- flashchips.h (revision 1079)
+++ flashchips.h (working copy)
@@ -486,11 +486,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 */