summaryrefslogtreecommitdiff
path: root/spi25.c
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2012-12-29 15:04:20 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2012-12-29 15:04:20 +0000
commit7c5bdc6239a0756380589bdabfc0ffd2d20493b4 (patch)
tree4212a02023a6a8c6dd0b03d234e66471ddb5d634 /spi25.c
parentbaf53a1e3972310eab38b0062a192f2e4c076227 (diff)
downloadflashrom-7c5bdc6239a0756380589bdabfc0ffd2d20493b4.tar.gz
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*) Signed-off-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1637 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'spi25.c')
-rw-r--r--spi25.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/spi25.c b/spi25.c
index c9a4664..911dc4e 100644
--- a/spi25.c
+++ b/spi25.c
@@ -279,6 +279,28 @@ int probe_spi_res2(struct flashctx *flash)
return 1;
}
+/* Only used for some Atmel chips. */
+int probe_spi_at25f(struct flashctx *flash)
+{
+ static const unsigned char cmd[AT25F_RDID_OUTSIZE] = { AT25F_RDID };
+ unsigned char readarr[AT25F_RDID_INSIZE];
+ uint32_t id1;
+ uint32_t id2;
+
+ if (spi_send_command(flash, sizeof(cmd), sizeof(readarr), cmd, readarr))
+ return 0;
+
+ id1 = readarr[0];
+ id2 = readarr[1];
+
+ msg_cdbg("%s: id1 0x%02x, id2 0x%02x\n", __func__, id1, id2);
+
+ if (id1 == flash->chip->manufacture_id && id2 == flash->chip->model_id)
+ return 1;
+
+ return 0;
+}
+
int spi_chip_erase_60(struct flashctx *flash)
{
int result;