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@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 */