Author: hailfinger
Date: 2009-10-01 15:15:01 +0200 (Thu, 01 Oct 2009)
New Revision: 738
Modified:
trunk/flashchips.c
trunk/flashchips.h
Log:
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.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Acked-by: Stefan Reinauer <stepan(a)coresystems.de>
Modified: trunk/flashchips.c
===================================================================
--- trunk/flashchips.c 2009-09-30 18:29:55 UTC (rev 737)
+++ trunk/flashchips.c 2009-10-01 13:15:01 UTC (rev 738)
@@ -44,6 +44,11 @@
* .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 @@
{
.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 @@
{
.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 @@
.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 @@
.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 @@
.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 @@
.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,
},
Modified: trunk/flashchips.h
===================================================================
--- trunk/flashchips.h 2009-09-30 18:29:55 UTC (rev 737)
+++ trunk/flashchips.h 2009-10-01 13:15:01 UTC (rev 738)
@@ -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} */