aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-10-01 13:15:01 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-10-01 13:15:01 +0000
commit4010712033b988f0be85f790982a12bb4010094b (patch)
treeef7410b7271f893786b85dbc262f6740eecdd6d9
parent2bc98f6c915f615fe5262eceeeb280c12d337357 (diff)
downloadflashrom-4010712033b988f0be85f790982a12bb4010094b.tar.gz
flashrom-4010712033b988f0be85f790982a12bb4010094b.tar.bz2
flashrom-4010712033b988f0be85f790982a12bb4010094b.zip
Add comments about the meaning of block erase related struct flashchip members
Cosmetics: Place curly brackets on a common line. Add MX25V512 as alias name to MX25L512. Add MX25V8005 as alias name to MX25L8005. Add erase block definitions for MX25L2005, MX25L4005, MX25L8005, MX25L1605 and change their status to TEST_OK_PRW where applicable. Corresponding to flashrom svn r738. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Reinauer <stepan@coresystems.de>
-rw-r--r--flashchips.c116
-rw-r--r--flashchips.h4
2 files changed, 97 insertions, 23 deletions
diff --git a/flashchips.c b/flashchips.c
index b876d51b..c8d51bff 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -44,6 +44,11 @@ struct flashchip flashchips[] = {
* .probe = Probe function
* .probe_timing = Probe function delay
* .erase = Chip erase function
+ * .block_erasers[] = Array of erase layouts and erase functions
+ * {
+ * .eraseblocks[] = Array of { blocksize, blockcount }
+ * .block_erase = Block erase function
+ * }
* .write = Chip write function
* .read = Chip read function
*/
@@ -1235,20 +1240,16 @@ struct flashchip flashchips[] = {
{
.eraseblocks = { {4 * 1024, 16} },
.block_erase = spi_block_erase_20,
- },
- {
+ }, {
.eraseblocks = { {64 * 1024, 1} },
.block_erase = spi_block_erase_52,
- },
- {
+ }, {
.eraseblocks = { {64 * 1024, 1} },
.block_erase = spi_block_erase_d8,
- },
- {
+ }, {
.eraseblocks = { {64 * 1024, 1} },
.block_erase = spi_block_erase_60,
- },
- {
+ }, {
.eraseblocks = { {64 * 1024, 1} },
.block_erase = spi_block_erase_c7,
},
@@ -1274,16 +1275,13 @@ struct flashchip flashchips[] = {
{
.eraseblocks = { {4 * 1024, 32} },
.block_erase = spi_block_erase_20,
- },
- {
+ }, {
.eraseblocks = { {64 * 1024, 2} },
.block_erase = spi_block_erase_d8,
- },
- {
+ }, {
.eraseblocks = { {128 * 1024, 1} },
.block_erase = spi_block_erase_60,
- },
- {
+ }, {
.eraseblocks = { {128 * 1024, 1} },
.block_erase = spi_block_erase_c7,
},
@@ -1303,7 +1301,26 @@ struct flashchip flashchips[] = {
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 64} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {64 * 1024, 4} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 4} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {256 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_256,
.read = spi_chip_read,
},
@@ -1316,10 +1333,29 @@ struct flashchip flashchips[] = {
.model_id = MX_25L4005,
.total_size = 512,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_256,
.read = spi_chip_read,
},
@@ -1332,10 +1368,29 @@ struct flashchip flashchips[] = {
.model_id = MX_25L8005,
.total_size = 1024,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 256} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {64 * 1024, 16} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 16} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_256,
.read = spi_chip_read,
},
@@ -1348,10 +1403,29 @@ struct flashchip flashchips[] = {
.model_id = MX_25L1605,
.total_size = 2048,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 512} },
+ .block_erase = spi_block_erase_20, /* This erase function has 64k blocksize for eLiteFlash */
+ }, {
+ .eraseblocks = { {64 * 1024, 32} }, /* Not supported in MX25L1605 (eLiteFlash) and MX25L1605D */
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 32} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {2 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {2 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_256,
.read = spi_chip_read,
},
diff --git a/flashchips.h b/flashchips.h
index 40edbbba..81ce2504 100644
--- a/flashchips.h
+++ b/flashchips.h
@@ -251,11 +251,11 @@
* and use the same set of IDs.
*/
#define MX_ID 0xC2 /* Macronix (MX) */
-#define MX_25L512 0x2010 /* 2^19 kbit or 2^16 kByte */
+#define MX_25L512 0x2010 /* Same as MX25V512 */
#define MX_25L1005 0x2011
#define MX_25L2005 0x2012
#define MX_25L4005 0x2013 /* MX25L4005{,A} */
-#define MX_25L8005 0x2014
+#define MX_25L8005 0x2014 /* Same as MX25V8005 */
#define MX_25L1605 0x2015 /* MX25L1605{,A,D} */
#define MX_25L3205 0x2016 /* MX25L3205{,A} */
#define MX_25L6405 0x2017 /* MX25L3205{,D} */