1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-01 14:11:15 +02:00

Add support for for the Atmel AT49F040 chip

Chip features an optional permanent boot block write protection.

Corresponding to flashrom svn r1522.

Signed-off-by: David Borg <borg.db@gmail.com>
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
This commit is contained in:
David Borg
2012-04-15 13:16:32 +00:00
committed by Uwe Hermann
parent 47eff6b5b4
commit f5a30f65ad
4 changed files with 74 additions and 26 deletions

View File

@ -149,6 +149,7 @@ int printlock_w39v080fa(struct flashctx *flash);
int printlock_w39v080fa_dual(struct flashctx *flash);
int unlock_w39v040fb(struct flashctx *flash);
int unlock_w39v080fa(struct flashctx *flash);
int printlock_at49f(struct flashctx *flash);
/* w29ee011.c */
int probe_w29ee011(struct flashctx *flash);

View File

@ -2224,30 +2224,6 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600},
},
{
.vendor = "Atmel",
.name = "AT49F020",
.bustype = BUS_PARALLEL,
.manufacture_id = ATMEL_ID,
.model_id = ATMEL_AT49F020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
.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,
}
},
.write = write_jedec_1,
.read = read_memmapped,
.voltage = {4500, 5500},
},
{
.vendor = "Atmel",
.name = "AT49F002(N)",
@ -2312,6 +2288,68 @@ const struct flashchip flashchips[] = {
.voltage = {4500, 5500},
},
{
.vendor = "Atmel",
.name = "AT49F020",
.bustype = BUS_PARALLEL,
.manufacture_id = ATMEL_ID,
.model_id = ATMEL_AT49F020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
.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,
}
/* Chip features an optional permanent write protection
* of the first 8 kB. The erase function is the same as
* above, but 00000H to 01FFFH will not be erased.
* FIXME: add another eraser when partial erasers are
* supported.
*/
},
.printlock = printlock_at49f,
.write = write_jedec_1,
.read = read_memmapped,
.voltage = {4500, 5500},
},
{
.vendor = "Atmel",
.name = "AT49F040",
.bustype = BUS_PARALLEL,
.manufacture_id = ATMEL_ID,
.model_id = ATMEL_AT49F040,
.total_size = 512,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
.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,
}
/* Chip features an optional permanent write protection
* of the first 16 kB. The erase function is the same as
* above, but 00000H to 03FFFH will not be erased.
* FIXME: add another eraser when partial erasers are
* supported.
*/
},
.printlock = printlock_at49f,
.write = write_jedec_1,
.read = read_memmapped,
.voltage = {4500, 5500},
},
{
.vendor = "Atmel",
.name = "AT49LH002",

View File

@ -184,10 +184,11 @@
#define ATMEL_AT45DB642 /* No ID available */
#define ATMEL_AT45DB642D 0x2800
#define ATMEL_AT49BV512 0x03
#define ATMEL_AT49F020 0x0B
#define ATMEL_AT49F002N 0x07 /* for AT49F002(N) */
#define ATMEL_AT49F002NT 0x08 /* for AT49F002(N)T */
#define ATMEL_AT49LH002 0xE9
#define ATMEL_AT49F002NT 0x08 /* for AT49F002(N)T */
#define ATMEL_AT49F020 0x0B
#define ATMEL_AT49F040 0x13
/* Bright Microelectronics has the same manufacturer ID as Hyundai... */
#define BRIGHT_ID 0xAD /* Bright Microelectronics */

8
w39.c
View File

@ -278,3 +278,11 @@ int unlock_w39v080fa(struct flashctx *flash)
return 0;
}
int printlock_at49f(struct flashctx *flash)
{
uint8_t lock = w39_idmode_readb(flash, 0x00002);
msg_cdbg("Hardware bootblock lockout is %sactive.\n",
(lock & 0x01) ? "" : "not ");
return 0;
}