diff options
author | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2014-08-03 13:05:45 +0000 |
---|---|---|
committer | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2014-08-03 13:05:45 +0000 |
commit | 7de939325b1c984eefdc65d079b6fe4416c86a12 (patch) | |
tree | 7e5bf19e1e0ccf8cd5c8802692ce85e68f074c9e | |
parent | ef3ac8ac17eac9d2041ea9c9e711a9b059412b59 (diff) | |
download | flashrom-7de939325b1c984eefdc65d079b6fe4416c86a12.tar.gz flashrom-7de939325b1c984eefdc65d079b6fe4416c86a12.tar.bz2 flashrom-7de939325b1c984eefdc65d079b6fe4416c86a12.zip |
Add support for Atmel AT49LH004 and AT49LH00B4
Also, slightly refine the definition of AT49LH002.
Corresponding to flashrom svn r1834.
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
-rw-r--r-- | flashchips.c | 84 | ||||
-rw-r--r-- | flashchips.h | 2 |
2 files changed, 80 insertions, 6 deletions
diff --git a/flashchips.c b/flashchips.c index 489f7c3be..e8ac78930 100644 --- a/flashchips.c +++ b/flashchips.c @@ -3049,10 +3049,10 @@ const struct flashchip flashchips[] = { .model_id = ATMEL_AT49LH002, .total_size = 256, .page_size = 0, /* unused */ - .feature_bits = FEATURE_REGISTERMAP, /* TODO: LPC OK too? */ + .feature_bits = FEATURE_REGISTERMAP, .tested = TEST_UNTESTED, - .probe = probe_82802ab, /* TODO: 0xff cmd not documented? */ - .probe_timing = TIMING_FIXME, + .probe = probe_82802ab, + .probe_timing = TIMING_ZERO, .block_erasers = { { @@ -3062,16 +3062,88 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = erase_block_82802ab, + .block_erase = NULL, /* TODO: Implement. */ }, { .eraseblocks = { {64 * 1024, 4}, }, + .block_erase = erase_block_82802ab, + }, + }, + .printlock = printlock_regspace2_block_eraser_0, + .unlock = unlock_regspace2_block_eraser_0, + .write = write_82802ab, + .read = read_memmapped, + .voltage = {3000, 3600}, + }, + + { + .vendor = "Atmel", + .name = "AT49LH00B4", + .bustype = BUS_LPC | BUS_FWH, /* A/A Mux */ + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT49LH00B4, + .total_size = 512, + .page_size = 0, /* unused */ + .feature_bits = FEATURE_REGISTERMAP, + .tested = TEST_UNTESTED, + .probe = probe_82802ab, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { + {8 * 1024, 2}, + {16 * 1024, 1}, + {32 * 1024, 1}, + {64 * 1024, 7}, + }, + .block_erase = NULL, /* TODO: Implement. */ + }, { + .eraseblocks = { + {64 * 1024, 8}, + }, + .block_erase = erase_block_82802ab, + }, + }, + .printlock = printlock_regspace2_block_eraser_0, + .unlock = unlock_regspace2_block_eraser_0, + .write = write_82802ab, + .read = read_memmapped, + .voltage = {3000, 3600}, + }, + + { + .vendor = "Atmel", + .name = "AT49LH004", + .bustype = BUS_LPC | BUS_FWH, /* A/A Mux */ + .manufacture_id = ATMEL_ID, + .model_id = ATMEL_AT49LH004, + .total_size = 512, + .page_size = 0, /* unused */ + .feature_bits = FEATURE_REGISTERMAP, + .tested = TEST_UNTESTED, + .probe = probe_82802ab, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { + {64 * 1024, 7}, + {32 * 1024, 1}, + {8 * 1024, 2}, + {16 * 1024, 1}, + }, + .block_erase = erase_block_82802ab, + }, { + .eraseblocks = { + {64 * 1024, 8}, + }, .block_erase = NULL, /* TODO: Implement. */ }, }, - .printlock = NULL, /* TODO */ - .unlock = NULL, /* unlock_82802ab() not correct(?) */ + .printlock = printlock_regspace2_block_eraser_0, + .unlock = unlock_regspace2_block_eraser_0, .write = write_82802ab, .read = read_memmapped, .voltage = {3000, 3600}, diff --git a/flashchips.h b/flashchips.h index 174ab3bad..558971401 100644 --- a/flashchips.h +++ b/flashchips.h @@ -190,6 +190,8 @@ #define ATMEL_AT49BV512 0x03 #define ATMEL_AT49F002N 0x07 /* for AT49F002(N) */ #define ATMEL_AT49LH002 0xE9 +#define ATMEL_AT49LH00B4 0xED +#define ATMEL_AT49LH004 0xEE #define ATMEL_AT49F002NT 0x08 /* for AT49F002(N)T */ #define ATMEL_AT49F010 0x17 /* Same as AT49HF010 */ #define ATMEL_AT49F020 0x0B |