aboutsummaryrefslogtreecommitdiffstats
path: root/printlock.c
diff options
context:
space:
mode:
Diffstat (limited to 'printlock.c')
-rw-r--r--printlock.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/printlock.c b/printlock.c
index d05251e9..f6eea7f4 100644
--- a/printlock.c
+++ b/printlock.c
@@ -186,17 +186,17 @@ static int unlock_regspace2_uniform(struct flashctx *flash, unsigned long block_
return regspace2_walk_unlockblocks(flash, blocks, &unlock_regspace2_block_generic);
}
-int unlock_regspace2_uniform_64k(struct flashctx *flash)
+static int unlock_regspace2_uniform_64k(struct flashctx *flash)
{
return unlock_regspace2_uniform(flash, 64 * 1024);
}
-int unlock_regspace2_uniform_32k(struct flashctx *flash)
+static int unlock_regspace2_uniform_32k(struct flashctx *flash)
{
return unlock_regspace2_uniform(flash, 32 * 1024);
}
-int unlock_regspace2_block_eraser_0(struct flashctx *flash)
+static int unlock_regspace2_block_eraser_0(struct flashctx *flash)
{
// FIXME: this depends on the eraseblocks not to be filled up completely (i.e. to be null-terminated).
const struct unlockblock *unlockblocks =
@@ -204,10 +204,21 @@ int unlock_regspace2_block_eraser_0(struct flashctx *flash)
return regspace2_walk_unlockblocks(flash, unlockblocks, &unlock_regspace2_block_generic);
}
-int unlock_regspace2_block_eraser_1(struct flashctx *flash)
+static int unlock_regspace2_block_eraser_1(struct flashctx *flash)
{
// FIXME: this depends on the eraseblocks not to be filled up completely (i.e. to be null-terminated).
const struct unlockblock *unlockblocks =
(const struct unlockblock *)flash->chip->block_erasers[1].eraseblocks;
return regspace2_walk_unlockblocks(flash, unlockblocks, &unlock_regspace2_block_generic);
}
+
+blockprotect_func_t *lookup_jedec_blockprotect_func_ptr(const struct flashchip *const chip)
+{
+ switch (chip->unlock) {
+ case UNLOCK_REGSPACE2_BLOCK_ERASER_0: return unlock_regspace2_block_eraser_0;
+ case UNLOCK_REGSPACE2_BLOCK_ERASER_1: return unlock_regspace2_block_eraser_1;
+ case UNLOCK_REGSPACE2_UNIFORM_32K: return unlock_regspace2_uniform_32k;
+ case UNLOCK_REGSPACE2_UNIFORM_64K: return unlock_regspace2_uniform_64k;
+ default: return NULL; /* fallthough */
+ };
+}