From c9d8b278256a18230582d4478c863ea9e5d61766 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Sun, 1 Jun 2014 13:22:35 +0000 Subject: Add support for Atmel (now Adesto) AT25DL081 and AT25DL161 Corresponding to flashrom svn r1810. Signed-off-by: Stefan Tauner Acked-by: Stefan Tauner --- flashchips.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ flashchips.h | 2 +- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/flashchips.c b/flashchips.c index 353575df..1bb6f279 100644 --- a/flashchips.c +++ b/flashchips.c @@ -1707,6 +1707,84 @@ const struct flashchip flashchips[] = { .voltage = {2700, 3600}, }, + { + .vendor = "Atmel", + .name = "AT25DL081", + .bustype = BUS_SPI, + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT25DF081, + .total_size = 1024, + .page_size = 256, + /* 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_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_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 */ + .voltage = {1650, 1950}, + }, + + { + .vendor = "Atmel", + .name = "AT25DL161", + .bustype = BUS_SPI, + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT25DL161, + .total_size = 2048, + .page_size = 256, + /* 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_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_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 */ + .voltage = {1650, 1950}, + }, + { .vendor = "Atmel", .name = "AT25DQ161", diff --git a/flashchips.h b/flashchips.h index 5fce532f..eef681b3 100644 --- a/flashchips.h +++ b/flashchips.h @@ -129,7 +129,7 @@ #define AMIC_A29L040 0x92 #define AMIC_A49LF040A 0x9d -#define ATMEL_ID 0x1F /* Atmel */ +#define ATMEL_ID 0x1F /* Atmel (now used by Adesto) */ #define ATMEL_AT25DF021 0x4300 #define ATMEL_AT25DF041A 0x4401 #define ATMEL_AT25DF081 0x4502 /* EDI 0x00. AT25DL081 has same ID + EDI 0x0100 */ -- cgit v1.2.3