summaryrefslogtreecommitdiffstats
path: root/chipdrivers.h
diff options
context:
space:
mode:
authorStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2013-06-20 22:55:41 +0000
committerStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2013-06-20 22:55:41 +0000
commitc0ef0744e9ae7ca8500bcccae4cf5e2d577db9b9 (patch)
tree81788790601ca10fea904cef17f4694134ecbc3d /chipdrivers.h
parentbc068e92dc04d1a27624fca05fad03a6ae435fa5 (diff)
downloadflashrom-c0ef0744e9ae7ca8500bcccae4cf5e2d577db9b9.zip
flashrom-c0ef0744e9ae7ca8500bcccae4cf5e2d577db9b9.tar.gz
Fix unlocking function for most Atmel AT2[56]D* chips
I broke unlocking them correctly in r1635 while refactoring (NB: the commit log including the overly selfconfident statement about the "bug in spi_disable_blockprotect_at25df()"). Affected chips have per sector protection bits and the write protection bits in the status register do indicate if none, some or all sectors are protected. It is possible to globally (un)lock all sectors at once but in a way that was not anticipated when refactoring the spi25 unlocking functions into spi_disable_blockprotect_generic(). To globally unprotect not only the protection bits (2 and 3) have 0 to be written to them but also bits 4 and 5 which normally would not be touched by spi_disable_blockprotect_generic(). Some of the chips also support a permanent lockdown with fuses which we do not handle yet. To fix this without copying the whole method I introduce another mask parameter to spi_disable_blockprotect_generic() namely unprotect_mask. See verbose comments inline for details. Also, prettyprint the status register after trying to disable the block protection fails. Tested-by: Chi Zhang <zhangchi866@gmail.com> Corresponding to flashrom svn r1679. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Diffstat (limited to 'chipdrivers.h')
-rw-r--r--chipdrivers.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/chipdrivers.h b/chipdrivers.h
index dd20631..fd522a6 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -77,8 +77,8 @@ int spi_prettyprint_status_register_at25f4096(struct flashctx *flash);
int spi_prettyprint_status_register_at25fs010(struct flashctx *flash);
int spi_prettyprint_status_register_at25fs040(struct flashctx *flash);
int spi_prettyprint_status_register_at26df081a(struct flashctx *flash);
-int spi_disable_blockprotect_at25df(struct flashctx *flash);
-int spi_disable_blockprotect_at25df_sec(struct flashctx *flash);
+int spi_disable_blockprotect_at2x_global_unprotect(struct flashctx *flash);
+int spi_disable_blockprotect_at2x_global_unprotect_sec(struct flashctx *flash);
int spi_disable_blockprotect_at25f(struct flashctx *flash);
int spi_disable_blockprotect_at25f512a(struct flashctx *flash);
int spi_disable_blockprotect_at25f512b(struct flashctx *flash);
OpenPOWER on IntegriCloud