[flashrom] [PATCH] Add chip definitions for Mosel Vitelic

Mattias Mattsson vitplister at gmail.com
Fri Jul 9 11:36:39 CEST 2010


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 <vitplister at gmail.com>

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.




More information about the flashrom mailing list