mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-01 22:21:16 +02:00
Add support for Atmel's AT25F series of SPI flash chips
This adds support for the following chips: - AT25F512, AT25F512A, AT25F512B - AT25F1024, AT25F1024A - AT25F2048 - AT25F4096 Besides the definitions of the the chips in flashchips.c this includes - a dedicated probing method (probe_spi_at25f) - pretty printing methods (spi_prettyprint_status_register_at25f*), and - unlocking methods (spi_disable_blockprotect_at25f*) Corresponding to flashrom svn r1637. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
@ -378,6 +378,40 @@ int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash)
|
||||
return spi_prettyprint_status_register_at25df(flash);
|
||||
}
|
||||
|
||||
/* used for AT25F512, AT25F1024(A), AT25F2048 */
|
||||
int spi_prettyprint_status_register_at25f(struct flashctx *flash)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
status = spi_read_status_register(flash);
|
||||
spi_prettyprint_status_register_hex(status);
|
||||
|
||||
spi_prettyprint_status_register_atmel_at25_wpen(status);
|
||||
spi_prettyprint_status_register_bit(status, 6);
|
||||
spi_prettyprint_status_register_bit(status, 5);
|
||||
spi_prettyprint_status_register_bit(status, 4);
|
||||
spi_prettyprint_status_register_bp(status, 1);
|
||||
spi_prettyprint_status_register_welwip(status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spi_prettyprint_status_register_at25f512a(struct flashctx *flash)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
status = spi_read_status_register(flash);
|
||||
spi_prettyprint_status_register_hex(status);
|
||||
|
||||
spi_prettyprint_status_register_atmel_at25_wpen(status);
|
||||
spi_prettyprint_status_register_bit(status, 6);
|
||||
spi_prettyprint_status_register_bit(status, 5);
|
||||
spi_prettyprint_status_register_bit(status, 4);
|
||||
spi_prettyprint_status_register_bit(status, 3);
|
||||
spi_prettyprint_status_register_bp(status, 0);
|
||||
spi_prettyprint_status_register_welwip(status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spi_prettyprint_status_register_at25f512b(struct flashctx *flash)
|
||||
{
|
||||
uint8_t status = spi_read_status_register(flash);
|
||||
@ -392,6 +426,21 @@ int spi_prettyprint_status_register_at25f512b(struct flashctx *flash)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spi_prettyprint_status_register_at25f4096(struct flashctx *flash)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
status = spi_read_status_register(flash);
|
||||
spi_prettyprint_status_register_hex(status);
|
||||
|
||||
spi_prettyprint_status_register_atmel_at25_wpen(status);
|
||||
spi_prettyprint_status_register_bit(status, 6);
|
||||
spi_prettyprint_status_register_bit(status, 5);
|
||||
spi_prettyprint_status_register_bp(status, 2);
|
||||
spi_prettyprint_status_register_welwip(status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int spi_prettyprint_status_register_at25fs010(struct flashctx *flash)
|
||||
{
|
||||
uint8_t status = spi_read_status_register(flash);
|
||||
@ -450,6 +499,16 @@ int spi_disable_blockprotect_at25df_sec(struct flashctx *flash)
|
||||
return spi_disable_blockprotect_at25df(flash);
|
||||
}
|
||||
|
||||
int spi_disable_blockprotect_at25f(struct flashctx *flash)
|
||||
{
|
||||
return spi_disable_blockprotect_generic(flash, 0x0C, 1 << 7, 0);
|
||||
}
|
||||
|
||||
int spi_disable_blockprotect_at25f512a(struct flashctx *flash)
|
||||
{
|
||||
return spi_disable_blockprotect_generic(flash, 0x04, 1 << 7, 0);
|
||||
}
|
||||
|
||||
int spi_disable_blockprotect_at25f512b(struct flashctx *flash)
|
||||
{
|
||||
/* spi_disable_blockprotect_at25df is not really the right way to do
|
||||
@ -458,6 +517,11 @@ int spi_disable_blockprotect_at25f512b(struct flashctx *flash)
|
||||
return spi_disable_blockprotect_at25df(flash);
|
||||
}
|
||||
|
||||
int spi_disable_blockprotect_at25f4096(struct flashctx *flash)
|
||||
{
|
||||
return spi_disable_blockprotect_generic(flash, 0x1C, 1 << 7, 0);
|
||||
}
|
||||
|
||||
int spi_disable_blockprotect_at25fs010(struct flashctx *flash)
|
||||
{
|
||||
return spi_disable_blockprotect_generic(flash, 0x6C, 1 << 7, 0);
|
||||
|
Reference in New Issue
Block a user