diff options
Diffstat (limited to 'flashchips.c')
-rw-r--r-- | flashchips.c | 11371 |
1 files changed, 7080 insertions, 4291 deletions
diff --git a/flashchips.c b/flashchips.c index 3d8042d0d..26decb1ed 100644 --- a/flashchips.c +++ b/flashchips.c @@ -66,7 +66,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_SHORT_RESET | FEATURE_ADDR_2AA, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -77,14 +77,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -55, others 4.5-5.5V */ }, @@ -98,7 +98,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_EITHER_RESET | FEATURE_ADDR_2AA, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -109,14 +109,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -55, others 4.5-5.5V */ }, @@ -130,20 +130,20 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {16 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -157,20 +157,20 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {16 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -184,20 +184,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -211,20 +211,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -238,20 +238,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -265,20 +265,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -292,20 +292,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -319,7 +319,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -329,14 +329,14 @@ const struct flashchip flashchips[] = { {4 * 1024, 2}, {16 * 1024, 7}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -45R, others 2.7-3.6V */ }, @@ -350,7 +350,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -360,14 +360,14 @@ const struct flashchip flashchips[] = { {4 * 1024, 2}, {8 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -45R, others 2.7-3.6V */ }, @@ -381,7 +381,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -392,14 +392,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -55, others 2.7-3.6V */ }, @@ -413,7 +413,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -424,14 +424,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -55, others 2.7-3.6V */ }, @@ -445,7 +445,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -456,14 +456,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -477,7 +477,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -488,14 +488,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -509,7 +509,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -520,14 +520,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 15}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -70R, others 2.7-3.6V */ }, @@ -541,7 +541,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -552,14 +552,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -70R, others 2.7-3.6V */ }, @@ -572,21 +572,21 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, - .tested = TEST_OK_PRE, - .probe = probe_jedec, + .tested = TEST_OK_PREW, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -60R, others 2.7-3.6V*/ }, @@ -600,20 +600,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, /* datasheet specifies address as don't care */ .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -70R, others 2.7-3.6V */ }, @@ -627,25 +627,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 32 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 2 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 128 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -659,25 +659,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 512 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 32 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 2048 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -691,25 +691,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 64 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 4 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 256 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -724,31 +724,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, 0x48; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 1024 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 64 } }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 64 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 4096 * 1024, 1 } }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 4096 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_amic_a25l032, /* bit5: T/B, bit6: prot size */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032, /* bit5: T/B, bit6: prot size */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -762,25 +762,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 128 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 8 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 512 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -794,7 +794,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -805,16 +805,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -828,7 +828,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -839,16 +839,16 @@ const struct flashchip flashchips[] = { {16 * 1024, 1}, {32 * 1024, 1}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -862,25 +862,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 256 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 16 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 1024 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -894,7 +894,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -906,16 +906,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -929,7 +929,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -941,16 +941,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 1}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -964,7 +964,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -976,19 +976,19 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1002,7 +1002,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1014,19 +1014,19 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 31}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1040,7 +1040,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1052,16 +1052,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1075,7 +1075,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1087,16 +1087,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1115,7 +1115,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1127,16 +1127,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1150,7 +1150,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1162,16 +1162,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1185,25 +1185,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 16 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 1 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 64 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1217,7 +1217,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1229,16 +1229,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 15}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1254,31 +1254,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, 0x48; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 1024 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 64 } }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 64 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 4096 * 1024, 1 } }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 4096 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_amic_a25l032, /* bit5: T/B, bit6: prot size */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032, /* bit5: T/B, bit6: prot size */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1294,31 +1294,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, 0x48; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 512 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 64 * 1024, 32 } }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 32 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 2048 * 1024, 1 } }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 2048 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_amic_a25l032, /* bit5: T/B, bit6: prot size */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032, /* bit5: T/B, bit6: prot size */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1335,31 +1335,31 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 2048 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 256 } }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 128 } }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 8192 * 1024, 1 } }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 8192 * 1024, 1 } }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enhance (sic!) */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enhance (sic!) */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1373,7 +1373,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1384,14 +1384,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -1405,7 +1405,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -1416,14 +1416,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -1437,20 +1437,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -1464,26 +1464,65 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, { .vendor = "Atmel", + .name = "AT25DF011", + .bustype = BUS_SPI, + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT25DF011, + .total_size = 128, + .page_size = 256, + /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 4} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {32 * 1024, 4} }, + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 3600}, + }, + + { + .vendor = "Atmel", .name = "AT25DF021", .bustype = BUS_SPI, .manufacture_id = ATMEL_ID, @@ -1493,31 +1532,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, /* 2.3-3.6V & 2.7-3.6V models available */ }, @@ -1532,31 +1571,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 3600}, }, @@ -1570,31 +1609,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, /* 2.3-3.6V & 2.7-3.6V models available */ }, @@ -1608,31 +1647,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1600, 2000}, /* Datasheet says range is 1.65-1.95 V */ }, @@ -1646,31 +1685,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1684,31 +1723,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1723,31 +1762,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1762,31 +1801,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1800,31 +1839,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1839,31 +1878,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, /* Dual I/O (0xA2) supported */ - .read = spi_chip_read, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, /* Dual I/O (0xA2) supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ .voltage = {1650, 1950}, }, @@ -1878,31 +1917,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, /* Dual I/O (0xA2) supported */ - .read = spi_chip_read, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, /* Dual I/O (0xA2) supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ .voltage = {1650, 1950}, }, @@ -1917,31 +1956,31 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df_sec, - .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT_SEC, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1957,22 +1996,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_at25f, + .probe = PROBE_SPI_AT25F, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f, - .unlock = spi_disable_blockprotect_at25f, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25F, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -1986,22 +2025,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_at25f, + .probe = PROBE_SPI_AT25F, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f, - .unlock = spi_disable_blockprotect_at25f, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25F, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2015,23 +2054,23 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_at25f, + .probe = PROBE_SPI_AT25F, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f4096, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F4096, /* "Bits 5-6 are 0s when device is not in an internal write cycle." Better leave them alone: */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2045,22 +2084,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_at25f, + .probe = PROBE_SPI_AT25F, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f, - .unlock = spi_disable_blockprotect_at25f, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25F, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2074,23 +2113,23 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_at25f, + .probe = PROBE_SPI_AT25F, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f512a, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512A, /* FIXME: It is not correct to use this one, because the BP1 bit is N/A. */ - .unlock = spi_disable_blockprotect_at25f512a, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25F512A, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2105,34 +2144,34 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_62, + .block_erase = SPI_BLOCK_ERASE_62, } }, - .printlock = spi_prettyprint_status_register_at25f512b, - .unlock = spi_disable_blockprotect_at25f512b, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512B, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25F512B, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2146,34 +2185,34 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25fs010, - .unlock = spi_disable_blockprotect_at25fs010, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS010, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25FS010, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2187,31 +2226,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25fs040, - .unlock = spi_disable_blockprotect_at25fs040, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS040, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25FS040, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2225,31 +2264,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2500, 3600}, }, @@ -2263,36 +2302,74 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, { .vendor = "Atmel", + .name = "AT25SF128A", + .bustype = BUS_SPI, + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT25SF128A, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_OK_PR, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { + .vendor = "Atmel", .name = "AT25SF161", .bustype = BUS_SPI, .manufacture_id = ATMEL_ID, @@ -2301,31 +2378,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2500, 3600}, }, @@ -2339,31 +2416,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2500, 3600}, }, @@ -2376,34 +2453,44 @@ const struct flashchip flashchips[] = { .total_size = 16384, .page_size = 256, /* supports SFDP */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 2000}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -2416,25 +2503,25 @@ const struct flashchip flashchips[] = { .page_size = 256, /* does not support EWSR nor WREN and has no writable status register bits whatsoever */ .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 2048} }, - .block_erase = spi_block_erase_81, + .block_erase = SPI_BLOCK_ERASE_81, }, { .eraseblocks = { {2 * 1024, 256} }, - .block_erase = spi_block_erase_50, + .block_erase = SPI_BLOCK_ERASE_50, }, { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, } }, - .printlock = spi_prettyprint_status_register_plain, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* Supports also an incompatible page write (of exactly 256 B) and an auto-erasing write. */ - .write = spi_chip_write_1, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .write = SPI_CHIP_WRITE1, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 3.0-3.6V for higher speed, 2.7-3.6V normal */ }, @@ -2448,31 +2535,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at26df081a, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT26DF081A, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2486,31 +2573,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at25df, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2524,31 +2611,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_at26df081a, - .unlock = spi_disable_blockprotect_at2x_global_unprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT26DF081A, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT2X_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2562,30 +2649,30 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = {.probe = NT, .read = NT, .erase = NT, .write = BAD}, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .write = NULL, /* Incompatible Page write */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .write = 0, /* Incompatible Page write */ + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -2599,17 +2686,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10000, /* 10mS, Enter=Exec */ .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, /* FIXME */ - .read = read_memmapped, + .write = WRITE_JEDEC, /* FIXME */ + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -2623,17 +2710,17 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10000, /* 10ms */ .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -2647,17 +2734,17 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10000, /* 10 ms */ .block_erasers = { { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -2671,17 +2758,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10000, /* 10mS, Enter=Exec */ .block_erasers = { { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -2697,7 +2784,7 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77 (4 dummy bytes); write 0x9A (via buffer) */ .feature_bits = FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -2707,14 +2794,14 @@ const struct flashchip flashchips[] = { {248 * 1056, 1}, /* sector 0b: opcode 7Ch */ {256 * 1056, 63}, /* sectors 1 - 63: opcode 7Ch */ }, - .block_erase = spi_erase_at45cs_sector, + .block_erase = SPI_ERASE_AT45CS_SECTOR, } }, - .printlock = spi_prettyprint_status_register_plain, - .write = spi_write_at45db, - .read = spi_read_at45db, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, .voltage = {2700, 3600}, - .gran = write_gran_1056bytes, + .gran = WRITE_GRAN_1056BYTES, }, { @@ -2729,33 +2816,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 512} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 256, 512/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 256, 1}, {120 * 256, 1}, {128 * 256, 3}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -2771,33 +2858,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 1024} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 256, 1024/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 256, 1}, {120 * 256, 1}, {128 * 256, 7}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -2813,33 +2900,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 2048} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 256, 2048/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 256, 1}, {248 * 256, 1}, {256 * 256, 7}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 2.5-3.6V & 2.7-3.6V models available */ }, @@ -2855,33 +2942,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 4096} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 256, 4096/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 256, 1}, {248 * 256, 1}, {256 * 256, 15}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 2.5-3.6V & 2.7-3.6V models available */ }, @@ -2897,33 +2984,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 4096} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 512, 4096/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 512, 1}, {248 * 512, 1}, {256 * 512, 15}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 2.5-3.6V & 2.7-3.6V models available */ }, @@ -2939,16 +3026,16 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77 (4 dummy bytes); write 0x9A (via buffer) */ .feature_bits = FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {528, 8192} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 528, 8192/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, /* Although the datasheets describes sectors (which can be write protected) * there seems to be no erase functions for them. { @@ -2957,17 +3044,17 @@ const struct flashchip flashchips[] = { {120 * 528, 1}, {128 * 528, 63}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, */ { .eraseblocks = { {4224 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, /* Bit 0 is undefined, no lockdown */ - .write = spi_write_at45db, - .read = spi_read_at45db_e8, /* 3 address and 4 dummy bytes */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, /* Bit 0 is undefined, no lockdown */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB_E8, /* 3 address and 4 dummy bytes */ .voltage = {2700, 3600}, - .gran = write_gran_528bytes, + .gran = WRITE_GRAN_528BYTES, }, { @@ -2982,33 +3069,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 8192} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 512, 8192/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 512, 1}, {120 * 512, 1}, {128 * 512, 63}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 2.5-3.6V & 2.7-3.6V models available */ }, @@ -3024,33 +3111,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 8192} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 512, 8192/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 512, 1}, {120 * 512, 1}, {128 * 512, 63}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, /* has a 2nd status register */ - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, /* has a 2nd status register */ + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2500, 3600}, /* 2.3-3.6V & 2.5-3.6V models available */ }, @@ -3066,33 +3153,33 @@ const struct flashchip flashchips[] = { /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */ .feature_bits = FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_at45db, + .probe = PROBE_SPI_AT45DB, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {1024, 8192} }, - .block_erase = spi_erase_at45db_page, + .block_erase = SPI_ERASE_AT45DB_PAGE, }, { .eraseblocks = { {8 * 1024, 8192/8} }, - .block_erase = spi_erase_at45db_block, + .block_erase = SPI_ERASE_AT45DB_BLOCK, }, { .eraseblocks = { {8 * 1024, 1}, {248 * 1024, 1}, {256 * 1024, 31}, }, - .block_erase = spi_erase_at45db_sector + .block_erase = SPI_ERASE_AT45DB_SECTOR }, { .eraseblocks = { {8192 * 1024, 1} }, - .block_erase = spi_erase_at45db_chip, + .block_erase = SPI_ERASE_AT45DB_CHIP, } }, - .printlock = spi_prettyprint_status_register_at45db, - .unlock = spi_disable_blockprotect_at45db, /* Impossible if locked down or #WP is low */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT45DB, /* Impossible if locked down or #WP is low */ /* granularity will be set by the probing function. */ - .write = spi_write_at45db, - .read = spi_read_at45db, /* Fast read (0x0B) supported */ + .write = SPI_WRITE_AT45DB, + .read = SPI_READ_AT45DB, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3106,18 +3193,18 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_at49f, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_AT49F, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3131,17 +3218,17 @@ const struct flashchip flashchips[] = { .page_size = 64, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -3155,7 +3242,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -3166,14 +3253,14 @@ const struct flashchip flashchips[] = { {96 * 1024, 1}, {128 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3187,7 +3274,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -3198,14 +3285,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3219,13 +3306,13 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } /* Chip features an optional permanent write protection * of the first 8 kB. The erase function is the same as @@ -3234,9 +3321,9 @@ const struct flashchip flashchips[] = { * supported. */ }, - .printlock = printlock_at49f, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_AT49F, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3250,13 +3337,13 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } /* Chip features an optional permanent write protection * of the first 16 kB. The erase function is the same as @@ -3265,9 +3352,9 @@ const struct flashchip flashchips[] = { * supported. */ }, - .printlock = printlock_at49f, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_AT49F, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3281,13 +3368,13 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } /* Chip features an optional permanent write protection * of the first 16 kB. The erase function is the same as @@ -3296,9 +3383,9 @@ const struct flashchip flashchips[] = { * supported. */ }, - .printlock = printlock_at49f, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_AT49F, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3313,13 +3400,13 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } /* Chip features an optional permanent write protection * of the first 16 kB. The erase function is the same as @@ -3328,9 +3415,9 @@ const struct flashchip flashchips[] = { * supported. */ }, - .printlock = printlock_at49f, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_AT49F, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3344,7 +3431,7 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3355,18 +3442,18 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = NULL, /* TODO: Implement. */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* TODO: Implement. */ }, { .eraseblocks = { {64 * 1024, 4}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -3380,7 +3467,7 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3391,18 +3478,18 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, { .eraseblocks = { {64 * 1024, 8}, }, - .block_erase = NULL, /* TODO: Implement. */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* TODO: Implement. */ }, }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -3416,7 +3503,7 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3427,22 +3514,136 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = NULL, /* TODO: Implement. */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* TODO: Implement. */ }, { .eraseblocks = { {64 * 1024, 8}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, { + .vendor = "Boya/BoHong Microelectronics", + .name = "B.25D16A", + .bustype = BUS_SPI, + .manufacture_id = BOYA_BOHONG_ID, + .model_id = BOYA_BOHONG_B_25D16A, + .total_size = 2048, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PR, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { + .vendor = "Boya/BoHong Microelectronics", + .name = "B.25D80A", + .bustype = BUS_SPI, + .manufacture_id = BOYA_BOHONG_ID, + .model_id = BOYA_BOHONG_B__25D80A, + .total_size = 1024, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PR, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 16} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {1 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { + .vendor = "Boya/BoHong Microelectronics", + .name = "B.25Q128AS", + .bustype = BUS_SPI, + .manufacture_id = BOYA_BOHONG_ID, + .model_id = BOYA_BOHONG_B_25Q128AS, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT_AT25FS040, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { .vendor = "Bright", .name = "BM29F040", .bustype = BUS_PARALLEL, @@ -3452,20 +3653,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3479,17 +3680,17 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = 0, .tested = {.probe = OK, .read = OK, .erase = BAD, .write = BAD}, - .probe = probe_jedec, /* FIXME! */ + .probe = PROBE_JEDEC, /* FIXME! */ .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = NULL, /* TODO */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* TODO */ }, }, - .write = NULL, /* TODO */ - .read = read_memmapped, + .write = 0, /* TODO */ + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3502,19 +3703,19 @@ const struct flashchip flashchips[] = { .feature_bits = FEATURE_ERASED_ZERO, .tested = TEST_OK_PREW, .spi_cmd_set = SPI_EDI, - .probe = edi_probe_kb9012, + .probe = PROBE_EDI_KB9012, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {128, 1024} }, - .block_erase = edi_chip_block_erase, + .block_erase = EDI_CHIP_BLOCK_ERASE, }, }, - .write = edi_chip_write, - .read = edi_chip_read, + .write = EDI_CHIP_WRITE, + .read = EDI_CHIP_READ, .voltage = {2700, 3600}, - .gran = write_gran_128bytes, + .gran = WRITE_GRAN_128BYTES, }, { @@ -3529,22 +3730,22 @@ const struct flashchip flashchips[] = { * supports read (0x53), fast read (0x5B), erase (0xD5) and program (0x52) instructions. */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast Read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast Read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3560,22 +3761,22 @@ const struct flashchip flashchips[] = { * supports read (0x53), fast read (0x5B), erase (0xD5) and program (0x52) instructions. */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast Read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast Read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3591,22 +3792,22 @@ const struct flashchip flashchips[] = { * supports read (0x53), fast read (0x5B), erase (0xD5) and program (0x52) instructions. */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast Read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast Read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3620,28 +3821,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -3655,28 +3856,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_bpl, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -3690,7 +3891,7 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -3701,14 +3902,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -3722,7 +3923,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3733,16 +3934,16 @@ const struct flashchip flashchips[] = { {16 * 1024, 1}, {32 * 1024, 1}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3756,7 +3957,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3767,16 +3968,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3790,7 +3991,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3801,16 +4002,16 @@ const struct flashchip flashchips[] = { {16 * 1024, 1}, {32 * 1024, 3}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3824,7 +4025,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3835,16 +4036,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3858,7 +4059,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3870,16 +4071,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 31}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3893,7 +4094,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3905,16 +4106,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3928,7 +4129,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3940,16 +4141,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3963,7 +4164,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -3975,16 +4176,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -3999,7 +4200,7 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4011,16 +4212,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 63}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4035,7 +4236,7 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4047,16 +4248,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4070,7 +4271,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4082,16 +4283,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4105,7 +4306,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4117,16 +4318,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4141,7 +4342,7 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4153,16 +4354,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 127}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4177,7 +4378,7 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4189,16 +4390,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4212,7 +4413,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4224,16 +4425,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 15} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4247,7 +4448,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -4259,16 +4460,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 1}, {4 * 1024, 2}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4282,31 +4483,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4319,32 +4520,32 @@ const struct flashchip flashchips[] = { .total_size = 128, .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4358,28 +4559,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4393,31 +4594,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4431,28 +4632,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4466,28 +4667,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4501,28 +4702,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4536,28 +4737,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4571,23 +4772,23 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4601,22 +4802,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4630,22 +4831,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4659,22 +4860,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4689,22 +4890,22 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4718,22 +4919,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4748,22 +4949,22 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4777,22 +4978,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -4807,28 +5008,28 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, }, { @@ -4844,32 +5045,32 @@ const struct flashchip flashchips[] = { /* OTP: D16 512B/Q16 128B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { /* not supported by Q16 version */ .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4884,28 +5085,28 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4920,28 +5121,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4956,28 +5157,28 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -4992,28 +5193,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -5029,30 +5230,37 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ /* QPI enable 0x38, disable 0xFF */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -5068,28 +5276,28 @@ const struct flashchip flashchips[] = { /* QPI enable 0x38, disable 0xFF */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 2048, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 2048, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -5106,28 +5314,76 @@ const struct flashchip flashchips[] = { /* QPI enable 0x38, disable 0xFF */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1024 * 4096, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {1024 * 4096, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Eon", + .name = "EN25QH32B", + .bustype = BUS_SPI, + .manufacture_id = EON_ID_NOPREFIX, + .model_id = EON_EN25QH32, + .total_size = 4096, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1536B total; enter 0x3A */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 4096, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 4096, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -5144,28 +5400,76 @@ const struct flashchip flashchips[] = { /* QPI enable 0x38, disable 0xFF */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 8192 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 8192 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + }, + .decode_range = DECODE_RANGE_SPI25_64K_BLOCK, + }, + + { + .vendor = "Eon", + .name = "EN25QH64A", + .bustype = BUS_SPI, + .manufacture_id = EON_ID_NOPREFIX, + .model_id = EON_EN25QH64, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ + /* OTP: 512B total; enter 0x3A */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { { 8192 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { { 8192 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -5180,28 +5484,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5216,31 +5520,31 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, - }, { - .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {64 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_en25s_wp, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5255,28 +5559,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5291,31 +5595,31 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_en25s_wp, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5330,28 +5634,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5365,29 +5669,29 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 512B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8192 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8192 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_en25s_wp, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5402,28 +5706,28 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -5437,7 +5741,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -5448,14 +5752,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -5469,7 +5773,7 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -5480,14 +5784,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -5501,21 +5805,21 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {16 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -5529,7 +5833,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -5538,14 +5842,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -5559,7 +5863,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -5568,14 +5872,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 127}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -5589,20 +5893,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -5616,20 +5920,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {128 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -5642,21 +5946,21 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 4 * 1024, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -45R and 55R, others 2.7-3.6V */ }, @@ -5670,7 +5974,7 @@ const struct flashchip flashchips[] = { .page_size = 8192, .feature_bits = FEATURE_ADDR_SHIFTED, .tested = TEST_OK_PREW, - .probe = probe_en29lv640b, + .probe = PROBE_EN29LV640B, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -5679,14 +5983,286 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_en29lv640b, - .read = read_memmapped, + .write = WRITE_EN29LV640B, + .read = READ_MEMMAPPED, + .voltage = {2700, 3600}, + }, + + { + .vendor = "Fudan", + .name = "FM25F005", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25F005, + .total_size = 64, + .page_size = 256, + /* OTP: 256B total; enter 0x3A */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 16} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 2} }, + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .voltage = {2700, 3600}, /* 2.3-2.7V acceptable results in lower performance */ + }, + + { + .vendor = "Fudan", + .name = "FM25F01", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25F01, + .total_size = 128, + .page_size = 256, + /* OTP: 256B total; enter 0x3A */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 4} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .voltage = {2700, 3600}, /* 2.3-2.7V acceptable results in lower performance */ + }, + + { + .vendor = "Fudan", + .name = "FM25F02(A)", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25F02, + .total_size = 256, + .page_size = 256, + /* OTP: 256B total; enter 0x3A, (A version only:) read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 8} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 4} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1024 * 256, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {1024 * 256, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .voltage = {2700, 3600}, /* 2.3-2.7V acceptable results in lower performance */ + }, + + { + .vendor = "Fudan", + .name = "FM25F04(A)", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25F04, + .total_size = 512, + .page_size = 256, + /* OTP: 256B total; enter 0x3A, (A version only:) read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 16} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 8} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1024 * 512, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {1024 * 512, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O (0x3B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Fudan", + .name = "FM25Q08", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25Q08, + .total_size = 1024, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 32} }, + .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, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, /* bit6 selects size of protected blocks; TODO: SR2 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Fudan", + .name = "FM25Q16", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25Q16, + .total_size = 2048, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, /* bit6 selects size of protected blocks; TODO: SR2 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Fudan", + .name = "FM25Q32", + .bustype = BUS_SPI, + .manufacture_id = FUDAN_ID_NOPREFIX, + .model_id = FUDAN_FM25Q32, + .total_size = 4096, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, /* bit6 selects size of protected blocks; TODO: SR2 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -5700,7 +6276,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -5711,14 +6287,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = NULL, - .read = read_memmapped, + .write = 0, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -5732,7 +6308,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -5743,14 +6319,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = NULL, - .read = read_memmapped, + .write = 0, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -5765,7 +6341,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -5776,14 +6352,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -55, others 4.5-5.5V */ }, @@ -5797,7 +6373,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -5808,14 +6384,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -55, others 4.5-5.5V */ }, @@ -5829,7 +6405,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -5840,14 +6416,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 31}, }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, /* Supports a fast mode too */ - .read = read_memmapped, + .write = WRITE_JEDEC1, /* Supports a fast mode too */ + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -70, others 2.7-3.6V */ }, @@ -5861,7 +6437,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -5872,14 +6448,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, /* Supports a fast mode too */ - .read = read_memmapped, + .write = WRITE_JEDEC1, /* Supports a fast mode too */ + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* 3.0-3.6V for type -70, others 2.7-3.6V */ }, @@ -5894,71 +6470,81 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, { .vendor = "GigaDevice", - .name = "GD25LQ128C/GD25LQ128D", + .name = "GD25LQ128C/GD25LQ128D/GD25LQ128E", .bustype = BUS_SPI, .manufacture_id = GIGADEVICE_ID, .model_id = GIGADEVICE_GD25LQ128CD, .total_size = 16384, .page_size = 256, /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR_EXT2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + .sec = {STATUS1, 6, RW}, /* Called BP4 in datasheet, acts like SEC */ + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -5972,31 +6558,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, }, @@ -6011,31 +6597,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, }, @@ -6050,31 +6636,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, }, @@ -6087,34 +6673,44 @@ const struct flashchip flashchips[] = { .total_size = 8192, .page_size = 256, /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR_EXT2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + .sec = {STATUS1, 6, RW}, /* Called BP4 in datasheet, acts like SEC */ + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -6128,31 +6724,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1695, 1950}, }, @@ -6166,31 +6762,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -6204,35 +6800,45 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 1536B total; read 0x48; write 0x42, erase 0x44 */ /* QPI: enable 0x38, disable 0xFF */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: 2nd status reg (read 0x35, write 0x31) and 3rd status reg (read 0x15, write 0x11) */ - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + .sec = {STATUS1, 6, RW}, /* Called BP4 in datasheet, acts like SEC */ + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -6246,31 +6852,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (B version only) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -6284,79 +6890,88 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, { .vendor = "GigaDevice", - .name = "GD25Q256D", + .name = "GD25Q256D/GD25Q256E", .bustype = BUS_SPI, .manufacture_id = GIGADEVICE_ID, .model_id = GIGADEVICE_GD25Q256D, .total_size = 32768, .page_size = 256, - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 6, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -6368,34 +6983,44 @@ const struct flashchip flashchips[] = { .total_size = 4096, .page_size = 256, /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + .sec = {STATUS1, 6, RW}, /* Called BP4 in datasheet, acts like SEC */ + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -6407,32 +7032,32 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -6446,28 +7071,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -6480,34 +7105,44 @@ const struct flashchip flashchips[] = { .total_size = 8192, .page_size = 256, /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like TB */ + .sec = {STATUS1, 6, RW}, /* Called BP4 in datasheet, acts like SEC */ + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -6521,31 +7156,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (B version only) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -6560,31 +7195,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0x3A */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -6600,31 +7235,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; read 0x48, write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -6639,31 +7274,31 @@ const struct flashchip flashchips[] = { /* OTP: 1536B total; read 0x48, write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -6679,31 +7314,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; read 0x48, write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -6718,31 +7353,31 @@ const struct flashchip flashchips[] = { /* OTP: 1536B total; read 0x48, write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -6758,31 +7393,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; read 0x48, write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { { 32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { { 64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, /* TODO: 2nd status reg (read with 0x35) */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, /* TODO: 2nd status reg (read with 0x35) */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -6796,31 +7431,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp4_srwd, - .unlock = spi_disable_blockprotect_bp4_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 3600}, }, @@ -6834,7 +7469,7 @@ const struct flashchip flashchips[] = { .page_size = 256 * 1024, .feature_bits = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */ .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -6845,14 +7480,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -45, others 4.5-5.5V */ }, @@ -6866,7 +7501,7 @@ const struct flashchip flashchips[] = { .page_size = 256 * 1024, .feature_bits = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */ .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -6877,14 +7512,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -45, others 4.5-5.5V */ }, @@ -6898,25 +7533,66 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, { .vendor = "ISSI", + .name = "IS25LP016", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25LP016, + .total_size = 2048, + .page_size = 256, + /* OTP: 1024B total; read 0x48; write 0x42 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2300, 3600}, + }, + + { + .vendor = "ISSI", .name = "IS25LP064", .bustype = BUS_SPI, .manufacture_id = ISSI_ID_SPI, @@ -6925,34 +7601,34 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 1024B total; read 0x48; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -6967,33 +7643,33 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; read 0x48; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -7007,48 +7683,172 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total; read 0x68; write 0x62, erase 0x64, read ID 0x4B */ - /* FOUR_BYTE_ADDR: supports 4-bytes addressing mode */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_4BA_ENTER_EAR7, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_4BA | FEATURE_4BA_ENTER_EAR7 | FEATURE_4BA_EAR_1716, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, - /* could also use spi_block_erase_d7 */ + .block_erase = SPI_BLOCK_ERASE_20, + /* could also use SPI_BLOCK_ERASE_D7 */ }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2300, 3600}, + }, + + + { + .vendor = "ISSI", + .name = "IS25LQ016", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25LQ016, + .total_size = 2048, + .page_size = 256, + /* OTP: 256B total; read 0x4b; write 0xb1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .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, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, { .vendor = "ISSI", + .name = "IS25WP016", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25WP016, + .total_size = 2048, + .page_size = 256, + /* OTP: 1024B total; read 0x48; write 0x42 */ + /* QPI enable 0x35, disable 0xF5 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "ISSI", + .name = "IS25WP020", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25WP020, + .total_size = 256, + .page_size = 256, + /* OTP: 1024B total; read 0x48; write 0x42 */ + /* QPI enable 0x35, disable 0xF5 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 8} }, + .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, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "ISSI", .name = "IS25WP032", .bustype = BUS_SPI, .manufacture_id = ISSI_ID_SPI, @@ -7059,33 +7859,75 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "ISSI", + .name = "IS25WP040", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25WP040, + .total_size = 512, + .page_size = 256, + /* OTP: 1024B total; read 0x48; write 0x42 */ + /* QPI enable 0x35, disable 0xF5 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 16} }, + .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, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -7101,33 +7943,75 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "ISSI", + .name = "IS25WP080", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25WP080, + .total_size = 1024, + .page_size = 256, + /* OTP: 1024B total; read 0x48; write 0x42 */ + /* QPI enable 0x35, disable 0xF5 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 32} }, + .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, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -7143,33 +8027,33 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -7183,43 +8067,83 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total; read 0x68; write 0x62, erase 0x64, read ID 0x4B */ - /* FOUR_BYTE_ADDR: supports 4-bytes addressing mode */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_4BA_ENTER_EAR7, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_4BA | FEATURE_4BA_ENTER_EAR7 | FEATURE_4BA_EAR_1716, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, - /* could also use spi_block_erase_d7 */ + .block_erase = SPI_BLOCK_ERASE_20, + /* could also use SPI_BLOCK_ERASE_D7 */ }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "ISSI", + .name = "IS25WQ040", + .bustype = BUS_SPI, + .manufacture_id = ISSI_ID_SPI, + .model_id = ISSI_IS25WQ040, + .total_size = 512, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D7, + }, { + .eraseblocks = { {32 * 1024, 16} }, + .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, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, @@ -7233,7 +8157,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7242,14 +8166,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -7263,20 +8187,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -7290,7 +8214,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7299,14 +8223,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 127}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -7320,20 +8244,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {128 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -7348,7 +8272,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7360,19 +8284,19 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 31} // inaccessible }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7387,7 +8311,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7399,19 +8323,19 @@ const struct flashchip flashchips[] = { {64 * 1024, 31}, // inaccessible {8 * 1024, 8} }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7426,7 +8350,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7438,19 +8362,19 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 63} // inaccessible }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7465,7 +8389,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7477,19 +8401,19 @@ const struct flashchip flashchips[] = { {64 * 1024, 63}, // inaccessible {8 * 1024, 8} }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7503,8 +8427,8 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7516,19 +8440,19 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127} // inaccessible }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7543,7 +8467,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -7555,19 +8479,19 @@ const struct flashchip flashchips[] = { {64 * 1024, 127}, // inaccessible {8 * 1024, 8} }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, - .unlock = spi_disable_blockprotect_bp2_ep_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* also fast read 0x0B */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_EP_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* also fast read 0x0B */ .voltage = {2700, 3600}, }, @@ -7580,7 +8504,7 @@ const struct flashchip flashchips[] = { .total_size = 128, .page_size = 128 * 1024, /* 8k + 2x4k + 112k */ .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7590,11 +8514,11 @@ const struct flashchip flashchips[] = { {4 * 1024, 2}, {112 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -7607,7 +8531,7 @@ const struct flashchip flashchips[] = { .total_size = 128, .page_size = 128 * 1024, /* 112k + 2x4k + 8k */ .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7617,11 +8541,11 @@ const struct flashchip flashchips[] = { {4 * 1024, 2}, {8 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -7634,7 +8558,7 @@ const struct flashchip flashchips[] = { .total_size = 256, .page_size = 256 * 1024, .tested = TEST_OK_PRE, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7645,11 +8569,11 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { @@ -7661,7 +8585,7 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 128 * 1024, /* maximal block size */ .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7672,11 +8596,11 @@ const struct flashchip flashchips[] = { {96 * 1024, 1}, {128 * 1024, 3}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { @@ -7688,7 +8612,7 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 128 * 1024, /* maximal block size */ .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7699,11 +8623,11 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { @@ -7715,18 +8639,18 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .unlock = unlock_28f004s5, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_28F004S5, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { @@ -7739,7 +8663,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* maximal block size */ .feature_bits = FEATURE_ADDR_SHIFTED, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7750,11 +8674,11 @@ const struct flashchip flashchips[] = { {96 * 1024, 1}, {128 * 1024, 3}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { @@ -7767,7 +8691,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* maximal block size */ .feature_bits = FEATURE_ADDR_SHIFTED, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -7778,16 +8702,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .write = write_82802ab, - .read = read_memmapped, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, }, { .vendor = "Intel", - .name = "82802AB", + .name = "AT82802AB", .bustype = BUS_FWH, .manufacture_id = INTEL_ID, .model_id = INTEL_82802AB, @@ -7795,18 +8719,18 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -7820,18 +8744,18 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -7844,10 +8768,10 @@ const struct flashchip flashchips[] = { .total_size = 16384, .page_size = 256, .tested = {.probe = NT, .read = NT, .erase = NA, .write = NA}, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, /* MX23L12854 is a mask ROM, so it is read-only */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .write = 0, /* MX23L12854 is a mask ROM, so it is read-only */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {3000, 3600}, }, @@ -7860,10 +8784,10 @@ const struct flashchip flashchips[] = { .total_size = 2048, .page_size = 256, .tested = {.probe = NT, .read = NT, .erase = NA, .write = NA}, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, /* MX23L1654 is a mask ROM, so it is read-only */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .write = 0, /* MX23L1654 is a mask ROM, so it is read-only */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {3000, 3600}, }, @@ -7876,10 +8800,10 @@ const struct flashchip flashchips[] = { .total_size = 4096, .page_size = 256, .tested = {.probe = OK, .read = OK, .erase = NA, .write = NA}, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, /* MX23L3254 is a mask ROM, so it is read-only */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .write = 0, /* MX23L3254 is a mask ROM, so it is read-only */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {3000, 3600}, }, @@ -7892,10 +8816,10 @@ const struct flashchip flashchips[] = { .total_size = 8192, .page_size = 256, .tested = {.probe = OK, .read = OK, .erase = NA, .write = NA}, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, /* MX23L6454 is a mask ROM, so it is read-only */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .write = 0, /* MX23L6454 is a mask ROM, so it is read-only */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {3000, 3600}, }, @@ -7910,28 +8834,28 @@ const struct flashchip flashchips[] = { /* MX25L1006E supports SFDP */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported, MX25L1006E supports dual I/O */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported, MX25L1006E supports dual I/O */ .voltage = {2700, 3600}, }, @@ -7946,68 +8870,68 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, { .vendor = "Macronix", - .name = "MX25L12835F/MX25L12845E/MX25L12865E", + .name = "MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, .model_id = MACRONIX_MX25L12805D, .total_size = 16384, .page_size = 256, - /* OTP: 512B total; enter 0xB1, exit 0xC1 */ + /* OTP: MX25L12833F has 1KB total, others have 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register and SBLK/SBULK; MX25L12835F: configuration register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8021,28 +8945,66 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit6: error flag */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Macronix", + .name = "MX25V16066", /* was called KH25V16066 in rev v1.3 */ + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25L1605, + .total_size = 2048, /* 16M-bits */ + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PR, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8057,31 +9019,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E and MX25L1608E only) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* MX25L1605A bp2 only */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported (MX25L1608E supports dual-I/O read) */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* MX25L1605A bp2 only */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported (MX25L1608E supports dual-I/O read) */ .voltage = {2700, 3600}, }, @@ -8095,28 +9057,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: Continuously Program (CP) mode, for 73E is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6: Continuously Program (CP) mode, for 73E is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, }, @@ -8130,29 +9092,29 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -8167,28 +9129,28 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -8202,31 +9164,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8241,41 +9203,41 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register and SBLK/SBULK; MX25L12835F: configuration register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8289,28 +9251,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit6: error flag */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8325,28 +9287,28 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: continuously program mode */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6: continuously program mode */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O supported */ .voltage = {2700, 3600}, }, @@ -8360,33 +9322,40 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .cmp = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like CMP */ + }, + .decode_range = DECODE_RANGE_SPI25_BIT_CMP, }, { @@ -8400,67 +9369,107 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, { .vendor = "Macronix", - .name = "MX25L3273E", + .name = "MX25L3233F/MX25L3273E", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, .model_id = MACRONIX_MX25L3205, .total_size = 4096, .page_size = 256, - /* OTP: 64B total; enter 0xB1, exit 0xC1 */ + /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O supported */ + .voltage = {2700, 3600}, /* 33F 2.65V..3.6V */ + }, + + { + .vendor = "Macronix", + .name = "MX25L3255E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25L3255E, + .total_size = 4096, + .page_size = 256, + /* OTP: 4K total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + /* Fast read (0x0B), 2x and 4x I/O supported */ + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -8474,31 +9483,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -8513,36 +9522,74 @@ const struct flashchip flashchips[] = { /* MX25L512E supports SFDP */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported, MX25L512E supports dual I/O */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported, MX25L512E supports dual I/O */ .voltage = {2700, 3600}, /* 2.35-3.6V for MX25V512(C) */ }, { .vendor = "Macronix", + .name = "MX25L5121E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25L5121E, + .total_size = 64, + .page_size = 32, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .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, + }, + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Macronix", .name = "MX25L6405", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, @@ -8552,29 +9599,35 @@ const struct flashchip flashchips[] = { /* Has an additional 512B EEPROM sector */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: error flag */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6: error flag */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -8588,29 +9641,36 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: continuously program mode */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0xBB) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6: continuously program mode */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0xBB) supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .cmp = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like CMP */ + }, + .decode_range = DECODE_RANGE_SPI25_BIT_CMP, }, { @@ -8624,38 +9684,92 @@ const struct flashchip flashchips[] = { /* MX25L6406E supports SFDP */ /* OTP: 06E 64B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read supported */ + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .cmp = {STATUS1, 5, RW}, /* Called BP3 in datasheet, acts like CMP */ + }, + .decode_range = DECODE_RANGE_SPI25_BIT_CMP, + }, + + { + .vendor = "Macronix", + .name = "MX25L6436E/MX25L6445E/MX25L6465E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25L6405, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ + /* OTP: 512B total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_SCUR, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .wps = {SECURITY, 7, OTP}, /* This bit is set by WPSEL command */ + }, + .decode_range = DECODE_RANGE_SPI25_2X_BLOCK, }, { .vendor = "Macronix", - .name = "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F", + .name = "MX25L6473E", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, .model_id = MACRONIX_MX25L6405, @@ -8663,34 +9777,89 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 512B total; enter 0xB1, exit 0xC1 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR_EXT2 | FEATURE_SCUR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {CONFIG, 3, OTP}, + .wps = {SECURITY, 7, OTP}, /* This bit is set by WPSEL command */ + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Macronix", + .name = "MX25L6473F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25L6405, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ + /* OTP: 512B total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR_EXT2, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {CONFIG, 3, OTP}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -8704,30 +9873,30 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, - }, { - .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -8743,31 +9912,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L8006E, MX25L8008E only) */ .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, /* 2.35-3.6V for MX25V8005 */ }, @@ -8782,31 +9951,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, - }, { - .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit 6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit 6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 3600}, }, @@ -8821,36 +9990,142 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, - }, { - .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 3600}, }, { .vendor = "Macronix", + .name = "MX25V4035F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25V4035F, + .total_size = 512, + .page_size = 256, + /* OTP: 8KiB total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_SCUR, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { { 4 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 16} }, + .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_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2300, 3600}, + }, + { + .vendor = "Macronix", + .name = "MX25V8035F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25V8035F, + .total_size = 1024, + .page_size = 256, + /* OTP: 8KiB total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_SCUR, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { { 4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 16} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2300, 3600}, + }, + { + .vendor = "Macronix", + .name = "MX25V1635F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX25V1635F, + .total_size = 2048, + .page_size = 256, + /* OTP: 8KiB total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_SCUR, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { { 4 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 64} }, + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ + .voltage = {2300, 3600}, + }, + + { + .vendor = "Macronix", .name = "MX25U12835F", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, @@ -8860,32 +10135,32 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -8901,38 +10176,38 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PR, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, { .vendor = "Macronix", - .name = "MX25U25635F", + .name = "MX25U25635F/MX25U25643G", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, .model_id = MACRONIX_MX25U25635F, @@ -8940,42 +10215,42 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_4BA, - .tested = TEST_OK_PR, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -8992,32 +10267,32 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -9032,41 +10307,41 @@ const struct flashchip flashchips[] = { /* OTP: 512B factory programmed and 512B customer programmed; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_4BA, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -9083,32 +10358,32 @@ const struct flashchip flashchips[] = { /* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -9123,32 +10398,32 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1650, 2000}, }, @@ -9162,7 +10437,7 @@ const struct flashchip flashchips[] = { .page_size = 32 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9174,14 +10449,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9195,7 +10470,7 @@ const struct flashchip flashchips[] = { .page_size = 32 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9207,14 +10482,14 @@ const struct flashchip flashchips[] = { {4 * 1024, 2}, {8 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9228,7 +10503,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9239,14 +10514,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9260,7 +10535,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9271,14 +10546,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9292,7 +10567,7 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9303,14 +10578,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9324,7 +10599,7 @@ const struct flashchip flashchips[] = { .page_size = 0, /* unused */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9335,14 +10610,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9356,20 +10631,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -9383,20 +10658,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {128 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9410,7 +10685,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9419,14 +10694,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 63}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9440,20 +10715,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9467,7 +10742,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9476,14 +10751,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 63}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9497,7 +10772,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9506,14 +10781,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9527,20 +10802,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9554,7 +10829,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -9563,14 +10838,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 127}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9584,20 +10859,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -9612,47 +10887,136 @@ const struct flashchip flashchips[] = { /* OTP: 512B total; enter 0xB1, exit 0xC1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, /* TODO: security register and SBLK/SBULK; MX25L12835F: configuration register */ - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Macronix", + .name = "MX66L1G45G", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX66L1G45G, + .total_size = 131072, + .page_size = 256, + /* OTP: 512B total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 32768} }, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 32768} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_5C, + }, { + .eraseblocks = { {32 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { {64 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {128 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {128 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + /* TODO: security register and SBLK/SBULK, configuration register */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Macronix", + .name = "MX77L25650F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, + .model_id = MACRONIX_MX77L25650F, + .total_size = 32768, + .page_size = 256, + /* OTP: 512B total; enter 0xB1, exit 0xC1 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + /* TODO: block WP, security register, configuration register */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, /* The ST M25P05 is a bit of a problem. It has the same ID as the * ST M25P05-A in RES mode, but supports only 128 byte writes instead - * of 256 byte writes. We rely heavily on the fact that probe_spi_res1 + * of 256 byte writes. We rely heavily on the fact that PROBE_SPI_RES1 * only is successful if RDID does not work. */ { @@ -9665,22 +11029,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res1, + .probe = PROBE_SPI_RES1, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_1, /* 128 */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE1, /* 128 */ + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9694,22 +11058,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9724,22 +11088,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res1, + .probe = PROBE_SPI_RES1, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_1, /* 128 */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE1, /* 128 */ + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9753,22 +11117,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9782,22 +11146,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9811,22 +11175,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9840,22 +11204,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -9869,22 +11233,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res1, + .probe = PROBE_SPI_RES1, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -9898,22 +11262,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9927,22 +11291,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -9956,22 +11320,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res1, + .probe = PROBE_SPI_RES1, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, }, { @@ -9984,22 +11348,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10013,22 +11377,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* TODO: check */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10042,25 +11406,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10074,25 +11438,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10106,25 +11470,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10138,25 +11502,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10170,25 +11534,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10203,25 +11567,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 512 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit5: T/B */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit5: T/B */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -10236,25 +11600,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PRE, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 1024 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit5: T/B */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit5: T/B */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10269,25 +11633,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 2048 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit5: T/B */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit5: T/B */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10302,25 +11666,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 4 * 1024, 256 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit5: T/B */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* bit5: T/B */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -10333,22 +11697,22 @@ const struct flashchip flashchips[] = { .total_size = 128, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 512} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, /* Page write (similar to PP but allows 0->1 changes) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, /* Page write (similar to PP but allows 0->1 changes) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -10361,22 +11725,22 @@ const struct flashchip flashchips[] = { .total_size = 2048, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 8192} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, /* Page write (similar to PP but allows 0->1 changes) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, /* Page write (similar to PP but allows 0->1 changes) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -10389,22 +11753,22 @@ const struct flashchip flashchips[] = { .total_size = 256, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 1024} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, /* Page write (similar to PP but allows 0->1 changes) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, /* Page write (similar to PP but allows 0->1 changes) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -10417,22 +11781,22 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 2048} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, /* Page write supported (similar to PP but allows 0->1 changes) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, /* Page write supported (similar to PP but allows 0->1 changes) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -10445,22 +11809,22 @@ const struct flashchip flashchips[] = { .total_size = 1024, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 4096} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, /* Page write (similar to PP but allows 0->1 changes) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, /* Page write (similar to PP but allows 0->1 changes) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -10476,31 +11840,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 4} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -10516,31 +11880,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 4} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -10556,28 +11920,28 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -10593,26 +11957,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, + .reg_bits = + { + /* + * There is also a volatile lock register per 64KiB sector, which is not + * mutually exclusive with BP-based protection. + */ + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -10627,26 +12002,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + /* + * There is also a volatile lock register per 64KiB sector, which is not + * mutually exclusive with BP-based protection. + */ + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -10661,26 +12047,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, + .reg_bits = + { + /* + * There is also a volatile lock register per 64KiB sector, which is not + * mutually exclusive with BP-based protection. + */ + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 6, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -10695,26 +12092,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + /* + * There is also a volatile lock register per 64KiB sector, which is not + * mutually exclusive with BP-based protection. + */ + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 6, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -10729,25 +12137,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -10763,25 +12171,25 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096 } }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -10797,31 +12205,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -10837,31 +12245,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -10877,31 +12285,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 2} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -10917,31 +12325,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 2} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -10957,37 +12365,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4096} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 4096} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 2} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -11003,37 +12411,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 32768} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4096} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 4096} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 2048} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 2} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -11049,37 +12457,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 65536} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 65536} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8192} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 8192} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4096} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 4096} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 4} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -11095,37 +12503,37 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 65536} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 65536} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8192} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 8192} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4096} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 4096} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 4} }, - .block_erase = spi_block_erase_c4, + .block_erase = SPI_BLOCK_ERASE_C4, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -11141,31 +12549,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -11179,33 +12587,33 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 64B total; read 0x4B, write 0x42 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -11220,41 +12628,41 @@ const struct flashchip flashchips[] = { /* supports SFDP */ /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -11269,41 +12677,41 @@ const struct flashchip flashchips[] = { /* supports SFDP */ /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, - .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {32768 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -11319,41 +12727,48 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {65536 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 6, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -11368,40 +12783,40 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_5c, + .block_erase = SPI_BLOCK_ERASE_5C, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {65536 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, { .eraseblocks = { {65536 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, } }, - .printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */ - .unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_N25Q, /* TODO: config, lock, flag regs */ + .unlock = SPI_DISABLE_BLOCKPROTECT_N25Q, /* TODO: per 64kB sector lock registers */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {1700, 2000}, }, @@ -11415,20 +12830,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11442,20 +12857,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11469,20 +12884,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11496,20 +12911,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11523,20 +12938,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11550,20 +12965,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11577,20 +12992,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {512, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -11604,34 +13019,34 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -11645,28 +13060,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -11680,34 +13095,34 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -11721,34 +13136,34 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -11762,31 +13177,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O read (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -11800,31 +13215,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* FIXME: C version supports "Safe Guard" */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* FIXME: C version supports "Safe Guard" */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, /* 2.3-3.6V for Pm25LD010 */ }, @@ -11838,31 +13253,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* FIXME: C version supports "Safe Guard" */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* FIXME: C version supports "Safe Guard" */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, /* 2.3-3.6V for Pm25LD020 */ }, @@ -11876,31 +13291,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, /* 2.3-3.6V for Pm25LD040 */ }, @@ -11914,31 +13329,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 8} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 1} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, }, @@ -11952,31 +13367,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* FIXME: C version supports "Safe Guard" */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* FIXME: C version supports "Safe Guard" */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual I/O supported */ .voltage = {2300, 3600}, }, @@ -11991,31 +13406,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x4B, write 0xB1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -12030,31 +13445,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x4B, write 0xB1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -12069,31 +13484,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0xB1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -12108,31 +13523,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x4B, write 0xB1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -12147,31 +13562,31 @@ const struct flashchip flashchips[] = { /* OTP: 64B total; read 0x4B, write 0xB1 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, /* bit6 is quad enable */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2300, 3600}, }, @@ -12185,25 +13600,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, /* The continuation code is transferred as the 3rd byte m( */ + .probe = PROBE_SPI_RES2, /* The continuation code is transferred as the 3rd byte m( */ .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12217,25 +13632,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12249,31 +13664,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12287,25 +13702,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -12319,25 +13734,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12351,31 +13766,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12389,25 +13804,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, /* The continuation code is transferred as the 3rd byte m( */ + .probe = PROBE_SPI_RES2, /* The continuation code is transferred as the 3rd byte m( */ .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12421,7 +13836,7 @@ const struct flashchip flashchips[] = { .page_size = 8 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -12432,14 +13847,14 @@ const struct flashchip flashchips[] = { {96 * 1024, 1}, {128 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -12453,7 +13868,7 @@ const struct flashchip flashchips[] = { .page_size = 8 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -12464,14 +13879,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -12485,23 +13900,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -12515,23 +13930,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -12545,23 +13960,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -12575,23 +13990,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -12605,24 +14020,24 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, - .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */ + .probe = PROBE_JEDEC, + .probe_timing = TIMING_ZERO, /* routine is wrapper to JEDEC (pm49fl00x.c) */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .unlock = unlock_regspace2_uniform_32k, - .write = write_jedec_1, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_32K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -12636,24 +14051,24 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -12667,25 +14082,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: No BP2 & 3 */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: No BP2 & 3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12699,25 +14114,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, .voltage = {3000, 3600}, }, @@ -12731,25 +14146,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, .voltage = {3000, 3600}, }, @@ -12763,31 +14178,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, /* Supported by SST25VF010A only */ + .block_erase = SPI_BLOCK_ERASE_D8, /* Supported by SST25VF010A only */ }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, /* Supported by SST25VF010A only */ + .block_erase = SPI_BLOCK_ERASE_C7, /* Supported by SST25VF010A only */ }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: No BP2 & 3 */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, /* Fast read (0x0B) supported by SST25VF010A only */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: No BP2 & 3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported by SST25VF010A only */ .voltage = {2700, 3600}, }, @@ -12801,31 +14216,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25vf016, - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF016, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -12839,25 +14254,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_UNTESTED, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: No BP2 & 3 */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, /* only */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: No BP2 & 3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, /* only */ .voltage = {2700, 3600}, }, @@ -12871,31 +14286,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: No BP2 & 3 and 2nd SR */ - .unlock = spi_disable_blockprotect, /* FIXME: 2nd SR */ - .write = spi_aai_write, /* AAI supported (0xAD) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: No BP2 & 3 and 2nd SR */ + .unlock = SPI_DISABLE_BLOCKPROTECT, /* FIXME: 2nd SR */ + .write = SPI_WRITE_AAI, /* AAI supported (0xAD) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -12909,31 +14324,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -12947,25 +14362,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PR, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -12979,31 +14394,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25vf040b, - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, /* AAI supported (0xAD) */ - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF040B, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_WRITE_AAI, /* AAI supported (0xAD) */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -13017,31 +14432,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25vf040b, - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF040B, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -13055,31 +14470,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -13093,31 +14508,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* TODO: check */ - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* TODO: check */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -13131,31 +14546,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EWSR, .tested = TEST_OK_PREW, - .probe = probe_spi_rems, + .probe = PROBE_SPI_REMS, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_d8, /* Supported by SST25VF512A only */ + .block_erase = SPI_BLOCK_ERASE_D8, /* Supported by SST25VF512A only */ }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_c7, /* Supported by SST25VF512A only */ + .block_erase = SPI_BLOCK_ERASE_C7, /* Supported by SST25VF512A only */ }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: No BP2 & 3 */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_1, /* AAI supported, but opcode is 0xAF */ - .read = spi_chip_read, /* Fast read (0x0B) supported by SST25VF512A only */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: No BP2 & 3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE1, /* AAI supported, but opcode is 0xAF */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported by SST25VF512A only */ .voltage = {2700, 3600}, }, @@ -13169,28 +14584,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {1024 * 128, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 128, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: does not have a BP3 */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_aai_write, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: does not have a BP3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13204,31 +14619,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 256, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 256, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: does not have a BP3 */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_aai_write, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: does not have a BP3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13242,28 +14657,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_tb_bpl, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13277,31 +14692,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 512, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 512, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: does not have a BP3 */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_aai_write, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: does not have a BP3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13315,28 +14730,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_tb_bpl, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual O (0x3B), dual I/O read (0xBB) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual O (0x3B), dual I/O read (0xBB) supported */ .voltage = {1650, 1950}, }, @@ -13350,31 +14765,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* *does* have a BP3 but it is useless */ - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_aai_write, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* *does* have a BP3 but it is useless */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13388,28 +14803,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_bp2_tb_bpl, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual O (0x3B), dual I/O read (0xBB) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual O (0x3B), dual I/O read (0xBB) supported */ .voltage = {1650, 1950}, }, @@ -13423,28 +14838,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_EITHER, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {1024 * 64, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 64, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_sst25, /* FIXME: does not have a BP3 */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_aai_write, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_SST25, /* FIXME: does not have a BP3 */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_WRITE_AAI, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {1650, 1950}, }, @@ -13458,13 +14873,13 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {8 * 1024, 4}, @@ -13473,16 +14888,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {8 * 1024, 4}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect_sst26_global_unprotect, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT_SST26_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -13496,13 +14911,13 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {8 * 1024, 4}, @@ -13511,16 +14926,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {8 * 1024, 4}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect_sst26_global_unprotect, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT_SST26_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -13534,13 +14949,13 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {8 * 1024, 4}, @@ -13549,16 +14964,16 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {8 * 1024, 4}, }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, }, }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect_sst26_global_unprotect, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT_SST26_GLOBAL_UNPROTECT, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -13572,21 +14987,21 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = 0, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst28sf040.c) */ .block_erasers = { { .eraseblocks = { {128, 4096} }, - .block_erase = erase_sector_28sf040, + .block_erase = ERASE_SECTOR_28SF040, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_28sf040, + .block_erase = ERASE_CHIP_28SF040, } }, - .unlock = unprotect_28sf040, - .write = write_28sf040, - .read = read_memmapped, + .unlock = UNPROTECT_28SF040, + .write = WRITE_28SF040, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13600,17 +15015,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13624,17 +15039,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13648,17 +15063,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -13672,17 +15087,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -13696,20 +15111,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13723,20 +15138,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13750,20 +15165,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13777,20 +15192,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -13804,20 +15219,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -13831,20 +15246,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -13858,20 +15273,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -13885,23 +15300,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -13915,20 +15330,20 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -13942,25 +15357,25 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = NULL, /* AA 55 80 AA 55 10, only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* AA 55 80 AA 55 10, only in A/A mux mode */ } }, - .printlock = printlock_sst_fwhub, - .unlock = unlock_sst_fwhub, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_SST_FWHUB, + .unlock = UNLOCK_SST_FWHUB, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -13974,25 +15389,25 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 96} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 6} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {384 * 1024, 1} }, - .block_erase = NULL, /* AA 55 80 AA 55 10, only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* AA 55 80 AA 55 10, only in A/A mux mode */ } }, - .printlock = printlock_sst_fwhub, - .unlock = unlock_sst_fwhub, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_SST_FWHUB, + .unlock = UNLOCK_SST_FWHUB, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14009,25 +15424,25 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = NULL, /* AA 55 80 AA 55 10, only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* AA 55 80 AA 55 10, only in A/A mux mode */ }, }, - .printlock = printlock_sst_fwhub, - .unlock = unlock_sst_fwhub, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_SST_FWHUB, + .unlock = UNLOCK_SST_FWHUB, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14041,13 +15456,13 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_49lfxxxc, + .block_erase = ERASE_SECTOR_49LFXXXC, }, { .eraseblocks = { {64 * 1024, 7}, @@ -14055,13 +15470,13 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_1, - .unlock = unlock_regspace2_block_eraser_1, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_1, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_1, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14075,25 +15490,25 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = NULL, /* AA 55 80 AA 55 10, only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* AA 55 80 AA 55 10, only in A/A mux mode */ } }, - .printlock = printlock_sst_fwhub, - .unlock = unlock_sst_fwhub, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_SST_FWHUB, + .unlock = UNLOCK_SST_FWHUB, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14107,13 +15522,13 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */ .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = erase_sector_49lfxxxc, + .block_erase = ERASE_SECTOR_49LFXXXC, }, { .eraseblocks = { {64 * 1024, 15}, @@ -14121,13 +15536,13 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_1, - .unlock = unlock_regspace2_block_eraser_1, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_1, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_1, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14141,13 +15556,13 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */ .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = erase_sector_49lfxxxc, + .block_erase = ERASE_SECTOR_49LFXXXC, }, { .eraseblocks = { {64 * 1024, 31}, @@ -14155,13 +15570,13 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_1, - .unlock = unlock_regspace2_block_eraser_1, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_1, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_1, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14175,23 +15590,23 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = NULL, + .block_erase = NO_BLOCK_ERASE_FUNC, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14205,23 +15620,23 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PRE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = NULL, + .block_erase = NO_BLOCK_ERASE_FUNC, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14235,23 +15650,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150 ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = NULL, + .block_erase = NO_BLOCK_ERASE_FUNC, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14265,24 +15680,24 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET | FEATURE_REGISTERMAP, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 1, /* 150ns */ .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = NULL, + .block_erase = NO_BLOCK_ERASE_FUNC, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14296,23 +15711,23 @@ const struct flashchip flashchips[] = { .page_size = 4096, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_FIXME, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = NULL, + .block_erase = NO_BLOCK_ERASE_FUNC, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14326,13 +15741,13 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */ .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = erase_sector_49lfxxxc, + .block_erase = ERASE_SECTOR_49LFXXXC, }, { .eraseblocks = { {64 * 1024, 31}, @@ -14340,13 +15755,13 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_1, - .unlock = unlock_regspace2_block_eraser_1, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_1, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_1, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -14360,7 +15775,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -14371,14 +15786,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -X, others 4.5-5.5V */ }, @@ -14392,7 +15807,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -14403,14 +15818,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4750, 5250}, /* 4.75-5.25V for type -X, others 4.5-5.5V */ }, @@ -14424,20 +15839,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* datasheet specifies no timing */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -14452,7 +15867,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -14463,14 +15878,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -14485,7 +15900,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, // FIXME: check datasheet. Using the 10 us from probe_m29f400bt .block_erasers = { @@ -14496,14 +15911,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -14517,20 +15932,20 @@ const struct flashchip flashchips[] = { .page_size = 16 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {16 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -14544,20 +15959,20 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -14571,17 +15986,17 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -14595,7 +16010,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -14606,15 +16021,15 @@ const struct flashchip flashchips[] = { {4 * 1024, 16}, /* sector */ {4 * 1024, 16}, /* sector */ }, - .block_erase = erase_sector_stm50, + .block_erase = STM50_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14628,7 +16043,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -14639,15 +16054,15 @@ const struct flashchip flashchips[] = { {64 * 1024, 5}, /* block */ {4 * 1024, 16}, /* sector */ }, - .block_erase = erase_sector_stm50, + .block_erase = STM50_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14661,7 +16076,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -14672,16 +16087,16 @@ const struct flashchip flashchips[] = { {4 * 1024, 16}, /* sector */ {4 * 1024, 16}, /* sector */ }, - .block_erase = erase_sector_stm50, + .block_erase = STM50_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14695,7 +16110,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_FIXME, .block_erasers = { @@ -14706,16 +16121,16 @@ const struct flashchip flashchips[] = { {64 * 1024, 13}, /* block */ {4 * 1024, 16}, /* sector */ }, - .block_erase = erase_sector_stm50, + .block_erase = STM50_SECTOR_ERASE, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14729,7 +16144,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */ .block_erasers = { @@ -14740,16 +16155,16 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = NULL, /* Only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* Only in A/A mux mode */ } }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14763,18 +16178,18 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14788,18 +16203,18 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14813,18 +16228,18 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_OK_PR, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */ .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14838,18 +16253,18 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14863,7 +16278,7 @@ const struct flashchip flashchips[] = { .page_size = 0, .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -14875,13 +16290,13 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, } }, - .printlock = printlock_regspace2_block_eraser_0, - .unlock = unlock_regspace2_block_eraser_0, - .write = write_82802ab, - .read = read_memmapped, + .printlock = PRINTLOCK_REGSPACE2_BLOCK_ERASER_0, + .unlock = UNLOCK_REGSPACE2_BLOCK_ERASER_0, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program & erase */ }, @@ -14895,20 +16310,20 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_NO_ERASE | FEATURE_ERASED_ZERO, .tested = TEST_OK_PREW, - .probe = probe_spi_st95, + .probe = PROBE_SPI_ST95, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_emulation, + .block_erase = SPI_BLOCK_ERASE_EMULATION, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect_bp1_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP1_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2500, 5500}, }, @@ -14922,27 +16337,27 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { /* FIXME: Is this correct? { .eraseblocks = { {2 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, },*/ { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect_bp1_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP1_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -14956,25 +16371,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, - .unlock = spi_disable_blockprotect_bp1_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP1_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -14987,31 +16402,31 @@ const struct flashchip flashchips[] = { .total_size = 256, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -15025,25 +16440,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -15057,31 +16472,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B), dual read (0x3B) and dual I/O (0xBB) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B), dual read (0x3B) and dual I/O (0xBB) supported */ .voltage = {2300, 3600}, }, @@ -15095,25 +16510,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {2 * 1024, 64} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {32 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp1_srwd, /* FIXME: Add ERSER error flag. */ - .unlock = spi_disable_blockprotect_bp1_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, /* FIXME: Add ERSER error flag. */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP1_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15126,25 +16541,25 @@ const struct flashchip flashchips[] = { .total_size = 256, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 1024} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15157,25 +16572,25 @@ const struct flashchip flashchips[] = { .total_size = 512, .page_size = 256, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256, 2 * 1024} }, - .block_erase = spi_block_erase_db, + .block_erase = SPI_BLOCK_ERASE_DB, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_default_welwip, - .unlock = NULL, /* #WP pin write-protects lower 64kB. */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP, + .unlock = NO_BLOCKPROTECT_FUNC, /* #WP pin write-protects lower 64kB. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15189,25 +16604,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15221,25 +16636,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* some quad-read supported ("HD_READ mode") */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* some quad-read supported ("HD_READ mode") */ .voltage = {2700, 3600}, }, @@ -15253,28 +16668,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15288,25 +16703,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_res2, + .probe = PROBE_SPI_RES2, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {8 * 1024, 128} }, - .block_erase = spi_block_erase_d7, + .block_erase = SPI_BLOCK_ERASE_D7, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* some quad-read supported ("HD_READ mode") */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* some quad-read supported ("HD_READ mode") */ .voltage = {2700, 3600}, }, @@ -15319,7 +16734,7 @@ const struct flashchip flashchips[] = { .total_size = 1024, .page_size = 64 * 1024, .tested = TEST_OK_PREW, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -15328,15 +16743,15 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 15} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_sector_49lfxxxc, + .block_erase = ERASE_SECTOR_49LFXXXC, } }, - .unlock = unlock_lh28f008bjt, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_LH28F008BJT, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -15350,7 +16765,7 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET | FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, + .probe = PROBE_AT82802AB, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -15359,17 +16774,17 @@ const struct flashchip flashchips[] = { {64 * 1024, 15}, {8 * 1024, 8} }, - .block_erase = erase_block_82802ab, + .block_erase = ERASE_BLOCK_82802AB, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = NULL, /* 30 D0, only in A/A mux mode */ + .block_erase = NO_BLOCK_ERASE_FUNC, /* 30 D0, only in A/A mux mode */ }, }, - .unlock = unlock_regspace2_uniform_64k, - .write = write_82802ab, - .read = read_memmapped, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_82802AB, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -15383,22 +16798,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15412,22 +16827,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PRE, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15441,22 +16856,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15470,22 +16885,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15499,22 +16914,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -15529,28 +16944,28 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (S25FL116K only) */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 2048 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -15566,25 +16981,25 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15601,7 +17016,7 @@ const struct flashchip flashchips[] = { .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, /* FIXME: we should distinguish the configuration on probing time like we do for AT45DB chips */ - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -15614,27 +17029,84 @@ const struct flashchip flashchips[] = { {4 * 1024, 32}, {64 * 1024, 254} // inaccessible }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { */ .eraseblocks = { { 64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, { .vendor = "Spansion", + .name = "S25FL128L", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL128L, + .total_size = 16384, + .page_size = 256, + /* 4 x 256B Security Region (OTP) */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_WRSR_EXT3 | FEATURE_OTP, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16384 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16384 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ + .voltage = {2700, 3600}, + .reg_bits = + { + /* + * Note: This chip has a read-only Status Register 2 that is not + * counted here. Registers are mapped as follows: + * STATUS1 ... Status Register 1 + * STATUS2 ... Configuration Register 1 + * STATUS3 ... Configuration Register 2 + */ + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Spansion", .name = "S25FL128P......0", /* uniform 64 kB sectors */ .bustype = BUS_SPI, .manufacture_id = SPANSION_ID, @@ -15643,28 +17115,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -15678,22 +17150,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -15709,7 +17181,7 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -15721,22 +17193,22 @@ const struct flashchip flashchips[] = { {4 * 1024, 32}, {64 * 1024, 254} // inaccessible }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { */ .eraseblocks = { { 64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: SR2 and many others */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: various other locks */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: SR2 and many others */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: various other locks */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15752,30 +17224,92 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: SR2 and many others */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: various other locks */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: SR2 and many others */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: various other locks */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, { .vendor = "Spansion", + .name = "S25FL128S_UL Uniform 128 kB Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL128S_UL, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {128 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { + .vendor = "Spansion", + .name = "S25FL128S_US Uniform 64 kB Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL128S_US, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { + .vendor = "Spansion", .name = "S25FL129P......0", /* hybrid: 32 (top or bottom) 4 kB sub-sectors + 64 kB sectors */ .bustype = BUS_SPI, .manufacture_id = SPANSION_ID, @@ -15785,7 +17319,7 @@ const struct flashchip flashchips[] = { /* OTP: 506B total, 16B reserved; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -15797,29 +17331,29 @@ const struct flashchip flashchips[] = { {4 * 1024, 32}, {64 * 1024, 254} // inaccessible }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { */ /* FIXME: Additionally it also supports erase opcode 40h for the respective 2*4 kB pairs .eraseblocks = { {8 * 1024, 16}, {64 * 1024, 254} // inaccessible }, - .block_erase = spi_block_erase_40, + .block_erase = SPI_BLOCK_ERASE_40, }, { */ .eraseblocks = { { 64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: Configuration register */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: Configuration register */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15834,25 +17368,25 @@ const struct flashchip flashchips[] = { /* OTP: 506B total, 16B reserved; read 0x4B; write 0x42 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {256 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 16384 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: Configuration register */ - .unlock = spi_disable_blockprotect_bp2_srwd, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: Configuration register */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15867,28 +17401,28 @@ const struct flashchip flashchips[] = { /* OTP: 768B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 4096 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 4096 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* TODO: improve */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15903,28 +17437,28 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 8192 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 8192 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_srwd, /* TODO: improve */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -15938,28 +17472,28 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PR, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O (0x3B) supported */ .voltage = {2700, 3600}, }, @@ -15973,29 +17507,151 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, /* #WP pin write-protects SRWP bit. */ + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) and dual I/O (0x3B) supported */ + .voltage = {2700, 3600}, + }, + + { + .vendor = "Spansion", + .name = "S25FL256L", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL256L, + .total_size = 32768, + .page_size = 256, + /* 4 x 256B Security Region (OTP) */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_WRSR_EXT3 | FEATURE_OTP | + FEATURE_4BA_ENTER | FEATURE_4BA_NATIVE, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_53, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32768 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32768 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp3_srwd, - .unlock = spi_disable_blockprotect_bp3_srwd, /* #WP pin write-protects SRWP bit. */ - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) and dual I/O (0x3B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP3_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, + .reg_bits = + { + /* + * Note: This chip has a read-only Status Register 2 that is not + * counted here. Registers are mapped as follows: + * STATUS1 ... Status Register 1 + * STATUS2 ... Configuration Register 1 + * STATUS3 ... Configuration Register 2 + */ + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Spansion", + .name = "S25FL256S Large Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL256S_UL, + .total_size = 16384, /* This is just half the size.... */ + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {256 * 1024, 64} }, + .block_erase = S25FL_BLOCK_ERASE, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { + .vendor = "Spansion", + .name = "S25FL256S Small Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FL256S_US, + .total_size = 16384, /* This is just half the size.... */ + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = S25FL_BLOCK_ERASE, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, }, { @@ -16007,9 +17663,10 @@ const struct flashchip flashchips[] = { .total_size = 32768, .page_size = 256, /* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_EAR7, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_4BA_NATIVE | FEATURE_4BA_ENTER_EAR7 | FEATURE_4BA_EAR_1716, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -16021,27 +17678,26 @@ const struct flashchip flashchips[] = { {4 * 1024, 32}, {64 * 1024, 254} // inaccessible }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { */ .eraseblocks = { { 64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { { 64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 32768 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 32768 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: SR2 and many others */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: various other locks */ - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: SR2 and many others */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: various other locks */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, - .wrea_override = 0x17, }, { @@ -16053,31 +17709,97 @@ const struct flashchip flashchips[] = { .total_size = 65536, /* 512 Mb (=> 64 MB)) */ .page_size = 256, /* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_NATIVE, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_4BA_NATIVE | FEATURE_4BA_ENTER_EAR7 | FEATURE_4BA_EAR_1716, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { { 256 * 1024, 256} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { { 256 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { { 65536 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { { 65536 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_bp2_ep_srwd, /* TODO: SR2 and many others */ - .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: various other locks */ - .write = spi_chip_write_256, /* Multi I/O supported, IGNORE for now */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: SR2 and many others */ + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: various other locks */ + .write = SPI_CHIP_WRITE256, /* Multi I/O supported, IGNORE for now */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, { + .vendor = "Spansion", + .name = "S25FS128S Large Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FS128S_L, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = S25FS_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { + .vendor = "Spansion", + .name = "S25FS128S Small Sectors", + .bustype = BUS_SPI, + .manufacture_id = SPANSION_ID, + .model_id = SPANSION_S25FS128S_S, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_BIG_SPANSION, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = S25FS_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + }, + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 2000}, + }, + + { .vendor = "SyncMOS/MoselVitelic", .name = "{F,S,V}29C51001B", .bustype = BUS_PARALLEL, @@ -16087,20 +17809,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {512, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16114,20 +17836,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {512, 256} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16141,20 +17863,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {512, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, }, { @@ -16167,20 +17889,20 @@ const struct flashchip flashchips[] = { .page_size = 512, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {512, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, }, { @@ -16193,20 +17915,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16220,20 +17942,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16247,20 +17969,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -16274,20 +17996,20 @@ const struct flashchip flashchips[] = { .page_size = 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { { .eraseblocks = { {1024, 512} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -16301,7 +18023,7 @@ const struct flashchip flashchips[] = { .page_size = 16384, /* Non-uniform sectors */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -16312,14 +18034,14 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 3}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16333,7 +18055,7 @@ const struct flashchip flashchips[] = { .page_size = 16384, /* Non-uniform sectors */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */ .block_erasers = { @@ -16344,14 +18066,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -16365,22 +18087,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -16394,22 +18116,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4096 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -16423,22 +18145,22 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, /* Fast read (0x0B) supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, /* Fast read (0x0B) supported */ .voltage = {2700, 3600}, }, @@ -16452,34 +18174,46 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16490,34 +18224,44 @@ const struct flashchip flashchips[] = { .model_id = WINBOND_NEX_W25Q128_V_M, .total_size = 16384, .page_size = 256, - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16530,34 +18274,44 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16568,34 +18322,44 @@ const struct flashchip flashchips[] = { .model_id = WINBOND_NEX_W25Q128_DTR, .total_size = 16384, .page_size = 256, - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 4096} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 512} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 256} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16608,34 +18372,44 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16650,31 +18424,31 @@ const struct flashchip flashchips[] = { /* QPI enable 0x38, disable 0xFF */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, @@ -16689,37 +18463,37 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, { .vendor = "Winbond", - .name = "W25Q256.V", + .name = "W25Q256FV", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, .model_id = WINBOND_NEX_W25Q256_V, @@ -16727,36 +18501,100 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - /* FOUR_BYTE_ADDR: supports 4-bytes addressing mode */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_ENTER_WREN - | FEATURE_4BA_EXT_ADDR | FEATURE_4BA_READ | FEATURE_4BA_FAST_READ, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_ENTER_WREN | + FEATURE_4BA_EAR_C5C8 | FEATURE_4BA_READ | FEATURE_4BA_FAST_READ | + FEATURE_WRSR2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q256JV_Q", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q256_V, + .total_size = 32768, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_WRSR2, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16769,46 +18607,54 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - /* FOUR_BYTE_ADDR: supports 4-bytes addressing mode */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_WRSR2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { .vendor = "Winbond", - .name = "W25Q256.W", + .name = "W25Q256JW", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, .model_id = WINBOND_NEX_W25Q256_W, @@ -16816,40 +18662,102 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_ENTER_WREN - | FEATURE_4BA_EXT_ADDR | FEATURE_4BA_READ | FEATURE_4BA_FAST_READ, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 8192} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 1024} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 512} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {32 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, }, { .vendor = "Winbond", - .name = "W25Q32.V", + .name = "W25Q256JW_DTR", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q256_DTR, + .total_size = 32768, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_WRSR2 + | FEATURE_WRSR3, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32BV/W25Q32CV/W25Q32DV", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, .model_id = WINBOND_NEX_W25Q32_V, @@ -16857,74 +18765,354 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR_EXT2, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { .vendor = "Winbond", - .name = "W25Q32.W", + .name = "W25Q32FV", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q32_V, + .total_size = 4096, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32JV", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q32_V, + .total_size = 4096, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32BW/W25Q32CW/W25Q32DW", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, .model_id = WINBOND_NEX_W25Q32_W, .total_size = 4096, .page_size = 256, - /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* OTP: 1024B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ /* QPI enable 0x38, disable 0xFF */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR_EXT2, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32FW", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q32_W, + .total_size = 4096, + .page_size = 256, + /* OTP: 768B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32JW...Q", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q32_W, + .total_size = 4096, + .page_size = 256, + /* OTP: 768B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q32JW...M", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q32JW_M, + .total_size = 4096, + .page_size = 256, + /* OTP: 768B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + /* QPI enable 0x38, disable 0xFF */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_WRSR2 | FEATURE_WRSR3 | FEATURE_WRSR_EXT2, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {4 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1700, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -16939,31 +19127,31 @@ const struct flashchip flashchips[] = { /* OTP: 756B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, /* Multi I/O supported */ - .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, /* Multi I/O supported */ + .read = SPI_CHIP_READ, /* Fast read (0x0B) and multi I/O supported */ .voltage = {2700, 3600}, }, @@ -16978,31 +19166,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, @@ -17017,31 +19205,31 @@ const struct flashchip flashchips[] = { /* OTP: 3*256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, @@ -17055,43 +19243,97 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_21, + .block_erase = SPI_BLOCK_ERASE_21, }, { .eraseblocks = { {4 * 1024, 16384} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2048} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_dc, + .block_erase = SPI_BLOCK_ERASE_DC, }, { .eraseblocks = { {64 * 1024, 1024} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {64 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, { + .vendor = "Winbond", + .name = "W25Q512NW-IM", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q512NW_IM, + .total_size = 64 * 1024, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA | FEATURE_WRSR2 + | FEATURE_WRSR3, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 16384} }, + .block_erase = SPI_BLOCK_ERASE_21, + }, { + .eraseblocks = { {4 * 1024, 16384} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_DC, + }, { + .eraseblocks = { {64 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {64 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {64 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { .vendor = "Winbond", - .name = "W25Q64.V", + .name = "W25Q64BV/W25Q64CV/W25Q64FV", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, .model_id = WINBOND_NEX_W25Q64_V, @@ -17099,33 +19341,135 @@ const struct flashchip flashchips[] = { .page_size = 256, /* supports SFDP */ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q64JV-.Q", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q64_V, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | + FEATURE_WRSR_EXT2 | FEATURE_WRSR2 | FEATURE_WRSR3, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "Winbond", + .name = "W25Q64JV-.M", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25Q64JV, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ + /* QPI enable 0x38 */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17139,74 +19483,95 @@ const struct flashchip flashchips[] = { .page_size = 256, /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ /* QPI enable 0x38, disable 0xFF */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { .vendor = "Winbond", - .name = "W25Q64JW", + .name = "W25Q64JW...M", .bustype = BUS_SPI, .manufacture_id = WINBOND_NEX_ID, - .model_id = WINBOND_NEX_W25Q64JW, + .model_id = WINBOND_NEX_W25Q64JW_M, .total_size = 8192, .page_size = 256, /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ /* QPI enable 0x38, disable 0xFF */ - .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2 | FEATURE_WRSR3, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + .wps = {STATUS3, 2, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -17221,31 +19586,31 @@ const struct flashchip flashchips[] = { /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17260,31 +19625,31 @@ const struct flashchip flashchips[] = { /* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1700, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, @@ -17299,31 +19664,31 @@ const struct flashchip flashchips[] = { /* OTP: 3*256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 32} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {1 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {1650, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, @@ -17337,25 +19702,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 16} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 2} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, } }, - .printlock = spi_prettyprint_status_register_plain, - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2300, 3600}, }, @@ -17369,25 +19734,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 2} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17401,31 +19766,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 512} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 64} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 32} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {2 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17438,27 +19803,34 @@ const struct flashchip flashchips[] = { .total_size = 256, .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, - .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .tested = TEST_OK_PREWB, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}}, + .tb = {STATUS1, 5, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, }, { @@ -17471,31 +19843,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 1024} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 128} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17509,25 +19881,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17541,31 +19913,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 2048} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 256} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17579,25 +19951,25 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_OK_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 256} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -17612,17 +19984,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, /* used datasheet for the W29C011A */ .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, }, { @@ -17635,17 +20007,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_w29ee011, + .probe = PROBE_W29EE011, .probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (w29ee011.c) */ .block_erasers = { { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, }, { @@ -17658,17 +20030,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -17682,17 +20054,17 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -17706,17 +20078,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_LONG_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec, - .read = read_memmapped, + .write = WRITE_JEDEC, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -17730,7 +20102,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -17739,14 +20111,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 63}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17760,20 +20132,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 64} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17787,7 +20159,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -17796,14 +20168,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 63}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {4 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17817,7 +20189,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -17826,14 +20198,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17847,20 +20219,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {64 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17874,7 +20246,7 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { @@ -17883,14 +20255,14 @@ const struct flashchip flashchips[] = { {64 * 1024, 127}, {8 * 1024, 8}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17904,20 +20276,20 @@ const struct flashchip flashchips[] = { .page_size = 128 * 1024, /* actual page size is 16 */ .feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec_29gl, + .probe = PROBE_JEDEC_29GL, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {128 * 1024, 128} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {16 * 1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, }, }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {2700, 3600}, }, @@ -17931,21 +20303,21 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39f010, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39F010, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -17959,21 +20331,21 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {4 * 1024, 32} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {128 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39l010, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39L010, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -17987,24 +20359,24 @@ const struct flashchip flashchips[] = { .page_size = 4 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39l020, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39L020, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18018,24 +20390,24 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PR, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39l040, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39L040, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18049,21 +20421,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040a, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040A, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18077,21 +20449,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040b, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040B, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18105,21 +20477,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040c, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040C, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18133,25 +20505,25 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = erase_block_jedec, + .block_erase = JEDEC_BLOCK_ERASE, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040fa, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040FA, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18165,22 +20537,22 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040fb, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040FB, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program */ }, @@ -18194,21 +20566,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v040fc, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V040FC, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program */ }, @@ -18222,21 +20594,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v080a, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V080A, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18250,22 +20622,22 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 16} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {1024 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v080fa, - .unlock = unlock_regspace2_uniform_64k, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V080FA, + .unlock = UNLOCK_REGSPACE2_UNIFORM_64K, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program */ }, @@ -18279,21 +20651,21 @@ const struct flashchip flashchips[] = { .page_size = 64 * 1024, .feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET, .tested = TEST_UNTESTED, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .printlock = printlock_w39v080fa_dual, - .write = write_jedec_1, - .read = read_memmapped, + .printlock = PRINTLOCK_W39V080FA_DUAL, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, /* Also has 12V fast program */ }, @@ -18307,7 +20679,7 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { @@ -18318,14 +20690,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -18339,17 +20711,17 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PROBE, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {4500, 5500}, }, @@ -18363,7 +20735,7 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { @@ -18374,14 +20746,14 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, @@ -18395,7 +20767,7 @@ const struct flashchip flashchips[] = { .page_size = 128, .feature_bits = FEATURE_EITHER_RESET, .tested = TEST_OK_PREW, - .probe = probe_jedec, + .probe = PROBE_JEDEC, .probe_timing = 10, .block_erasers = { @@ -18406,18 +20778,435 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_sector_jedec, + .block_erase = JEDEC_SECTOR_ERASE, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = erase_chip_block_jedec, + .block_erase = JEDEC_CHIP_BLOCK_ERASE, } }, - .write = write_jedec_1, - .read = read_memmapped, + .write = WRITE_JEDEC1, + .read = READ_MEMMAPPED, .voltage = {3000, 3600}, }, { + .vendor = "XMC", + .name = "XM25QH80B", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = ST_M45PE80, + .total_size = 1024, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 32} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 16} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {1 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {1 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { + .vendor = "XMC", + .name = "XM25QH64C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QH64C, + .total_size = 8192, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { + .vendor = "XMC", + .name = "XM25QU64C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QU64C, + .total_size = 8192, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "XMC", + .name = "XM25QH128A", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QH128A, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "XMC", + .name = "XM25QH128C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QH128C, + .total_size = 16384, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI | FEATURE_WRSR2, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}}, + .tb = {STATUS1, 5, RW}, + .sec = {STATUS1, 6, RW}, + .cmp = {STATUS2, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "XMC", + .name = "XM25QU128C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QU128C, + .total_size = 16384, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 4096} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {16 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "XMC", + .name = "XM25QH256C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QH256C, + .total_size = 32768, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_ENTER_WREN | + FEATURE_4BA_EAR_C5C8 | FEATURE_4BA_READ | FEATURE_4BA_FAST_READ | + FEATURE_4BA_WRITE | FEATURE_WRSR2, + .tested = TEST_OK_PR, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + .reg_bits = + { + .srp = {STATUS1, 7, RW}, + .srl = {STATUS2, 0, RW}, + .bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}, {STATUS1, 5, RW}}, + .tb = {STATUS1, 6, RW}, + }, + .decode_range = DECODE_RANGE_SPI25, + }, + + { + .vendor = "XMC", + .name = "XM25QU256C", + .bustype = BUS_SPI, + .manufacture_id = ST_ID, + .model_id = XMC_XM25QU256C, + .total_size = 32768, + .page_size = 256, + /* supports SFDP */ + /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_ENTER_WREN + | FEATURE_4BA_EAR_C5C8 | FEATURE_4BA_READ | FEATURE_4BA_FAST_READ + | FEATURE_4BA_WRITE, + .tested = TEST_UNTESTED, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 8192} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 1024} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 512} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {32 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {1650, 1950}, + }, + + { + .vendor = "XTX Technology Limited", + .name = "XT25F02E", + .bustype = BUS_SPI, + .manufacture_id = XTX_ID, + .model_id = XTX_XT25F02E, + .total_size = 256, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 64} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .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, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP1_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { + .vendor = "XTX Technology Limited", + .name = "XT25F64B", + .bustype = BUS_SPI, + .manufacture_id = XTX_ID, + .model_id = XTX_XT25F64B, + .total_size = 8 * 1024, + .page_size = 256, + /* Supports SFDP */ + /* OTP: 4 x 256 bytes */ + .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI, + .tested = TEST_OK_PREW, + .probe = PROBE_SPI_RDID, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 2048} }, + .block_erase = SPI_BLOCK_ERASE_20, + }, { + .eraseblocks = { {32 * 1024, 256} }, + .block_erase = SPI_BLOCK_ERASE_52, + }, { + .eraseblocks = { {64 * 1024, 128} }, + .block_erase = SPI_BLOCK_ERASE_D8, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_60, + }, { + .eraseblocks = { {8 * 1024 * 1024, 1} }, + .block_erase = SPI_BLOCK_ERASE_C7, + } + }, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD, + .unlock = SPI_DISABLE_BLOCKPROTECT_BP4_SRWD, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, + .voltage = {2700, 3600}, + }, + + { .vendor = "Zetta Device", .name = "ZD25D20", .bustype = BUS_SPI, @@ -18427,31 +21216,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 64} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 8} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 4} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {256 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -18465,31 +21254,31 @@ const struct flashchip flashchips[] = { .page_size = 256, .feature_bits = FEATURE_WRSR_WREN, .tested = TEST_UNTESTED, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, .block_erasers = { { .eraseblocks = { {4 * 1024, 128} }, - .block_erase = spi_block_erase_20, + .block_erase = SPI_BLOCK_ERASE_20, }, { .eraseblocks = { {32 * 1024, 16} }, - .block_erase = spi_block_erase_52, + .block_erase = SPI_BLOCK_ERASE_52, }, { .eraseblocks = { {64 * 1024, 8} }, - .block_erase = spi_block_erase_d8, + .block_erase = SPI_BLOCK_ERASE_D8, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_60, + .block_erase = SPI_BLOCK_ERASE_60, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = spi_block_erase_c7, + .block_erase = SPI_BLOCK_ERASE_C7, } }, - .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ - .unlock = spi_disable_blockprotect, - .write = spi_chip_write_256, - .read = spi_chip_read, + .printlock = SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN, /* TODO: improve */ + .unlock = SPI_DISABLE_BLOCKPROTECT, + .write = SPI_CHIP_WRITE256, + .read = SPI_CHIP_READ, .voltage = {2700, 3600}, }, @@ -18506,11 +21295,11 @@ const struct flashchip flashchips[] = { /* want the default "This flash part has status UNTESTED..." */ /* text to be printed. */ .tested = TEST_OK_PREW, - .probe = probe_spi_sfdp, + .probe = PROBE_SPI_SFDP, .block_erasers = {}, /* set by probing function */ - .unlock = spi_disable_blockprotect, /* is this safe? */ - .write = NULL, /* set by probing function */ - .read = spi_chip_read, + .unlock = SPI_DISABLE_BLOCKPROTECT, /* is this safe? */ + .write = 0, /* set by probing function */ + .read = SPI_CHIP_READ, /* FIXME: some vendor extensions define this */ .voltage = {0}, }, @@ -18525,16 +21314,16 @@ const struct flashchip flashchips[] = { .page_size = 256, /* probe is assumed to work, rest will be filled in by probe */ .tested = TEST_OK_PROBE, - .probe = probe_opaque, + .probe = PROBE_OPAQUE, /* eraseblock sizes will be set by the probing function */ .block_erasers = { { - .block_erase = erase_opaque, + .block_erase = OPAQUE_ERASE, } }, - .write = write_opaque, - .read = read_opaque, + .write = WRITE_OPAQUE, + .read = READ_OPAQUE, }, { @@ -18546,10 +21335,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid4, + .probe = PROBE_SPI_RDID4, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18561,10 +21350,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18576,10 +21365,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18591,10 +21380,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18606,10 +21395,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18621,10 +21410,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18636,10 +21425,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18651,10 +21440,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18666,10 +21455,10 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, + .probe = PROBE_SPI_RDID, .probe_timing = TIMING_ZERO, - .write = NULL, - .read = NULL, + .write = 0, + .read = 0, }, { @@ -18681,8 +21470,8 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rdid, - .write = NULL, + .probe = PROBE_SPI_RDID, + .write = 0, }, { @@ -18694,8 +21483,8 @@ const struct flashchip flashchips[] = { .total_size = 0, .page_size = 256, .tested = TEST_BAD_PREW, - .probe = probe_spi_rems, - .write = NULL, + .probe = PROBE_SPI_REMS, + .write = 0, }, {0} |