New version.
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@gmx.net
Index: flashrom-eraseblocks_mx25/flashchips.c =================================================================== --- flashrom-eraseblocks_mx25/flashchips.c (Revision 731) +++ flashrom-eraseblocks_mx25/flashchips.c (Arbeitskopie) @@ -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, }, Index: flashrom-eraseblocks_mx25/flashchips.h =================================================================== --- flashrom-eraseblocks_mx25/flashchips.h (Revision 731) +++ flashrom-eraseblocks_mx25/flashchips.h (Arbeitskopie) @@ -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} */