aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flashrom.c8
-rw-r--r--include/chipdrivers.h24
-rw-r--r--include/flash.h92
-rw-r--r--spi25_statusreg.c108
4 files changed, 135 insertions, 97 deletions
diff --git a/flashrom.c b/flashrom.c
index c5b795c1..b135e580 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1179,9 +1179,11 @@ notfound:
/* Flash registers may more likely not be mapped if the chip was forced.
* Lock info may be stored in registers, so avoid lock info printing. */
- if (!force)
- if (flash->chip->printlock)
- flash->chip->printlock(flash);
+ if (!force) {
+ printlockfunc_t *printlock = lookup_printlock_func_ptr(flash);
+ if (printlock)
+ printlock(flash);
+ }
/* Get out of the way for later runs. */
unmap_flash(flash);
diff --git a/include/chipdrivers.h b/include/chipdrivers.h
index bac77850..a2e75d1a 100644
--- a/include/chipdrivers.h
+++ b/include/chipdrivers.h
@@ -68,30 +68,6 @@ int spi_set_extended_address(struct flashctx *, uint8_t addr_high);
int spi_read_register(const struct flashctx *flash, enum flash_reg reg, uint8_t *value);
int spi_write_register(const struct flashctx *flash, enum flash_reg reg, uint8_t value);
void spi_prettyprint_status_register_bit(uint8_t status, int bit);
-int spi_prettyprint_status_register_plain(struct flashctx *flash);
-int spi_prettyprint_status_register_default_welwip(struct flashctx *flash);
-int spi_prettyprint_status_register_bp1_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp3_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp4_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_bpl(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_tb_bpl(struct flashctx *flash);
-int spi_prettyprint_status_register_amic_a25l032(struct flashctx *flash);
-int spi_prettyprint_status_register_at25df(struct flashctx *flash);
-int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f512a(struct flashctx *flash);
-int spi_prettyprint_status_register_at25f512b(struct flashctx *flash);
-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_prettyprint_status_register_en25s_wp(struct flashctx *flash);
-int spi_prettyprint_status_register_n25q(struct flashctx *flash);
-int spi_prettyprint_status_register_bp2_ep_srwd(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash);
-int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash);
/* sfdp.c */
int probe_spi_sfdp(struct flashctx *flash);
diff --git a/include/flash.h b/include/flash.h
index 10c29753..f0357cba 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -351,49 +351,53 @@ enum blockprotect_func {
TEST_UNLOCK_INJECTOR, /* special case must come last. */
};
-#define NO_PRINTLOCK_FUNC NULL
-#define PRINTLOCK_AT49F printlock_at49f
-#define PRINTLOCK_REGSPACE2_BLOCK_ERASER_0 printlock_regspace2_block_eraser_0
-#define PRINTLOCK_REGSPACE2_BLOCK_ERASER_1 printlock_regspace2_block_eraser_1
-#define PRINTLOCK_SST_FWHUB printlock_sst_fwhub
-#define PRINTLOCK_W39F010 printlock_w39f010
-#define PRINTLOCK_W39L010 printlock_w39l010
-#define PRINTLOCK_W39L020 printlock_w39l020
-#define PRINTLOCK_W39L040 printlock_w39l040
-#define PRINTLOCK_W39V040A printlock_w39v040a
-#define PRINTLOCK_W39V040B printlock_w39v040b
-#define PRINTLOCK_W39V040C printlock_w39v040c
-#define PRINTLOCK_W39V040FA printlock_w39v040fa
-#define PRINTLOCK_W39V040FB printlock_w39v040fb
-#define PRINTLOCK_W39V040FC printlock_w39v040fc
-#define PRINTLOCK_W39V080A printlock_w39v080a
-#define PRINTLOCK_W39V080FA printlock_w39v080fa
-#define PRINTLOCK_W39V080FA_DUAL printlock_w39v080fa_dual
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032 spi_prettyprint_status_register_amic_a25l032
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF spi_prettyprint_status_register_at25df
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC spi_prettyprint_status_register_at25df_sec
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25F spi_prettyprint_status_register_at25f
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25F4096 spi_prettyprint_status_register_at25f4096
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512A spi_prettyprint_status_register_at25f512a
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512B spi_prettyprint_status_register_at25f512b
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS010 spi_prettyprint_status_register_at25fs010
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS040 spi_prettyprint_status_register_at25fs040
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT26DF081A spi_prettyprint_status_register_at26df081a
-#define SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB spi_prettyprint_status_register_at45db
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD spi_prettyprint_status_register_bp1_srwd
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP2_BPL spi_prettyprint_status_register_bp2_bpl
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD spi_prettyprint_status_register_bp2_ep_srwd
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD spi_prettyprint_status_register_bp2_srwd
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL spi_prettyprint_status_register_bp2_tb_bpl
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD spi_prettyprint_status_register_bp3_srwd
-#define SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD spi_prettyprint_status_register_bp4_srwd
-#define SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP spi_prettyprint_status_register_default_welwip
-#define SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP spi_prettyprint_status_register_en25s_wp
-#define SPI_PRETTYPRINT_STATUS_REGISTER_N25Q spi_prettyprint_status_register_n25q
-#define SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN spi_prettyprint_status_register_plain
-#define SPI_PRETTYPRINT_STATUS_REGISTER_SST25 spi_prettyprint_status_register_sst25
-#define SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF016 spi_prettyprint_status_register_sst25vf016
-#define SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF040B spi_prettyprint_status_register_sst25vf040b
+enum printlock_func {
+ NO_PRINTLOCK_FUNC,
+ PRINTLOCK_AT49F,
+ PRINTLOCK_REGSPACE2_BLOCK_ERASER_0,
+ PRINTLOCK_REGSPACE2_BLOCK_ERASER_1,
+ PRINTLOCK_SST_FWHUB,
+ PRINTLOCK_W39F010,
+ PRINTLOCK_W39L010,
+ PRINTLOCK_W39L020,
+ PRINTLOCK_W39L040,
+ PRINTLOCK_W39V040A,
+ PRINTLOCK_W39V040B,
+ PRINTLOCK_W39V040C,
+ PRINTLOCK_W39V040FA,
+ PRINTLOCK_W39V040FB,
+ PRINTLOCK_W39V040FC,
+ PRINTLOCK_W39V080A,
+ PRINTLOCK_W39V080FA,
+ PRINTLOCK_W39V080FA_DUAL,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25F,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25F4096,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512A,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512B,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS010,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS040,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT26DF081A,
+ SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP2_BPL,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD,
+ SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD,
+ SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP,
+ SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP,
+ SPI_PRETTYPRINT_STATUS_REGISTER_N25Q,
+ SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN,
+ SPI_PRETTYPRINT_STATUS_REGISTER_SST25,
+ SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF016,
+ SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF040B,
+};
+typedef int (printlockfunc_t)(struct flashctx *flash);
+printlockfunc_t *lookup_printlock_func_ptr(struct flashctx *flash);
struct flashchip {
const char *vendor;
@@ -460,7 +464,7 @@ struct flashchip {
enum block_erase_func block_erase;
} block_erasers[NUM_ERASEFUNCTIONS];
- int (*printlock) (struct flashctx *flash);
+ enum printlock_func printlock;
enum blockprotect_func unlock;
enum write_func write;
enum read_func read;
diff --git a/spi25_statusreg.c b/spi25_statusreg.c
index 21a1a151..60e0b46b 100644
--- a/spi25_statusreg.c
+++ b/spi25_statusreg.c
@@ -354,8 +354,9 @@ static int spi_disable_blockprotect_generic(struct flashctx *flash, uint8_t bp_m
if ((status & bp_mask) != 0) {
msg_cerr("Block protection could not be disabled!\n");
- if (flash->chip->printlock)
- flash->chip->printlock(flash);
+ printlockfunc_t *printlock = lookup_printlock_func_ptr(flash);
+ if (printlock)
+ printlock(flash);
return 1;
}
msg_cdbg("disabled.\n");
@@ -470,7 +471,7 @@ void spi_prettyprint_status_register_bit(uint8_t status, int bit)
msg_cdbg("Chip status register: Bit %i is %sset\n", bit, (status & (1 << bit)) ? "" : "not ");
}
-int spi_prettyprint_status_register_plain(struct flashctx *flash)
+static int spi_prettyprint_status_register_plain(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -481,7 +482,7 @@ int spi_prettyprint_status_register_plain(struct flashctx *flash)
}
/* Print the plain hex value and the welwip bits only. */
-int spi_prettyprint_status_register_default_welwip(struct flashctx *flash)
+static int spi_prettyprint_status_register_default_welwip(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -497,7 +498,7 @@ int spi_prettyprint_status_register_default_welwip(struct flashctx *flash)
* AMIC A25L series
* and MX MX25L512
*/
-int spi_prettyprint_status_register_bp1_srwd(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp1_srwd(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -518,7 +519,7 @@ int spi_prettyprint_status_register_bp1_srwd(struct flashctx *flash)
* AMIC A25L series
* PMC Pm25LD series
*/
-int spi_prettyprint_status_register_bp2_srwd(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp2_srwd(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -538,7 +539,7 @@ int spi_prettyprint_status_register_bp2_srwd(struct flashctx *flash)
* ST M25P series
* MX MX25L series
*/
-int spi_prettyprint_status_register_bp3_srwd(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp3_srwd(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -553,7 +554,7 @@ int spi_prettyprint_status_register_bp3_srwd(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_bp4_srwd(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp4_srwd(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -567,7 +568,7 @@ int spi_prettyprint_status_register_bp4_srwd(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_bp2_bpl(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp2_bpl(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -583,7 +584,7 @@ int spi_prettyprint_status_register_bp2_bpl(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_bp2_tb_bpl(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp2_tb_bpl(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -608,7 +609,7 @@ int spi_prettyprint_status_register_bp2_tb_bpl(struct flashctx *flash)
* by the second status register.
*/
-int spi_prettyprint_status_register_amic_a25l032(struct flashctx *flash)
+static int spi_prettyprint_status_register_amic_a25l032(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -667,7 +668,7 @@ static void spi_prettyprint_status_register_atmel_at25_swp(uint8_t status)
}
}
-int spi_prettyprint_status_register_at25df(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25df(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -684,7 +685,7 @@ int spi_prettyprint_status_register_at25df(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash)
{
/* FIXME: We should check the security lockdown. */
msg_cdbg("Ignoring security lockdown (if present)\n");
@@ -693,7 +694,7 @@ int spi_prettyprint_status_register_at25df_sec(struct flashctx *flash)
}
/* used for AT25F512, AT25F1024(A), AT25F2048 */
-int spi_prettyprint_status_register_at25f(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25f(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -711,7 +712,7 @@ int spi_prettyprint_status_register_at25f(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25f512a(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25f512a(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -730,7 +731,7 @@ int spi_prettyprint_status_register_at25f512a(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25f512b(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25f512b(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -747,7 +748,7 @@ int spi_prettyprint_status_register_at25f512b(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25f4096(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25f4096(struct flashctx *flash)
{
uint8_t status;
@@ -765,7 +766,7 @@ int spi_prettyprint_status_register_at25f4096(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25fs010(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25fs010(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -788,7 +789,7 @@ int spi_prettyprint_status_register_at25fs010(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at25fs040(struct flashctx *flash)
+static int spi_prettyprint_status_register_at25fs040(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -803,7 +804,7 @@ int spi_prettyprint_status_register_at25fs040(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_at26df081a(struct flashctx *flash)
+static int spi_prettyprint_status_register_at26df081a(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -864,7 +865,7 @@ static int spi_disable_blockprotect_at25fs040(struct flashctx *flash)
/* === Eon === */
-int spi_prettyprint_status_register_en25s_wp(struct flashctx *flash)
+static int spi_prettyprint_status_register_en25s_wp(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -886,7 +887,7 @@ static int spi_disable_blockprotect_n25q(struct flashctx *flash)
return spi_disable_blockprotect_generic(flash, 0x5C, 1 << 7, 0, 0xFF);
}
-int spi_prettyprint_status_register_n25q(struct flashctx *flash)
+static int spi_prettyprint_status_register_n25q(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -959,7 +960,7 @@ blockprotect_func_t *lookup_blockprotect_func_ptr(const struct flashchip *const
}
/* Used by Intel/Numonyx S33 and Spansion S25FL-S chips */
-int spi_prettyprint_status_register_bp2_ep_srwd(struct flashctx *flash)
+static int spi_prettyprint_status_register_bp2_ep_srwd(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -990,7 +991,7 @@ static void spi_prettyprint_status_register_sst25_common(uint8_t status)
spi_prettyprint_status_register_welwip(status);
}
-int spi_prettyprint_status_register_sst25(struct flashctx *flash)
+static int spi_prettyprint_status_register_sst25(struct flashctx *flash)
{
uint8_t status;
int ret = spi_read_register(flash, STATUS1, &status);
@@ -1000,7 +1001,7 @@ int spi_prettyprint_status_register_sst25(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash)
+static int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash)
{
static const char *const bpt[] = {
"none",
@@ -1020,7 +1021,7 @@ int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash)
return 0;
}
-int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash)
+static int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash)
{
static const char *const bpt[] = {
"none",
@@ -1037,3 +1038,58 @@ int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash)
msg_cdbg("Resulting block protection : %s\n", bpt[(status & 0x1c) >> 2]);
return 0;
}
+
+printlockfunc_t *lookup_printlock_func_ptr(struct flashctx *flash)
+{
+ switch (flash->chip->printlock) {
+ case PRINTLOCK_AT49F: return &printlock_at49f;
+ case PRINTLOCK_REGSPACE2_BLOCK_ERASER_0: return &printlock_regspace2_block_eraser_0;
+ case PRINTLOCK_REGSPACE2_BLOCK_ERASER_1: return &printlock_regspace2_block_eraser_1;
+ case PRINTLOCK_SST_FWHUB: return &printlock_sst_fwhub;
+ case PRINTLOCK_W39F010: return &printlock_w39f010;
+ case PRINTLOCK_W39L010: return &printlock_w39l010;
+ case PRINTLOCK_W39L020: return &printlock_w39l020;
+ case PRINTLOCK_W39L040: return &printlock_w39l040;
+ case PRINTLOCK_W39V040A: return &printlock_w39v040a;
+ case PRINTLOCK_W39V040B: return &printlock_w39v040b;
+ case PRINTLOCK_W39V040C: return &printlock_w39v040c;
+ case PRINTLOCK_W39V040FA: return &printlock_w39v040fa;
+ case PRINTLOCK_W39V040FB: return &printlock_w39v040fb;
+ case PRINTLOCK_W39V040FC: return &printlock_w39v040fc;
+ case PRINTLOCK_W39V080A: return &printlock_w39v080a;
+ case PRINTLOCK_W39V080FA: return &printlock_w39v080fa;
+ case PRINTLOCK_W39V080FA_DUAL: return &printlock_w39v080fa_dual;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AMIC_A25L032: return &spi_prettyprint_status_register_amic_a25l032;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF: return &spi_prettyprint_status_register_at25df;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25DF_SEC: return &spi_prettyprint_status_register_at25df_sec;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25F: return &spi_prettyprint_status_register_at25f;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25F4096: return &spi_prettyprint_status_register_at25f4096;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512A: return &spi_prettyprint_status_register_at25f512a;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25F512B: return &spi_prettyprint_status_register_at25f512b;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS010: return &spi_prettyprint_status_register_at25fs010;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT25FS040: return &spi_prettyprint_status_register_at25fs040;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT26DF081A: return &spi_prettyprint_status_register_at26df081a;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_AT45DB: return &spi_prettyprint_status_register_at45db;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP1_SRWD: return &spi_prettyprint_status_register_bp1_srwd;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP2_BPL: return &spi_prettyprint_status_register_bp2_bpl;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD: return &spi_prettyprint_status_register_bp2_ep_srwd;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP2_SRWD: return &spi_prettyprint_status_register_bp2_srwd;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP2_TB_BPL: return &spi_prettyprint_status_register_bp2_tb_bpl;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP3_SRWD: return &spi_prettyprint_status_register_bp3_srwd;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_BP4_SRWD: return &spi_prettyprint_status_register_bp4_srwd;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_DEFAULT_WELWIP: return &spi_prettyprint_status_register_default_welwip;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_EN25S_WP: return &spi_prettyprint_status_register_en25s_wp;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_N25Q: return &spi_prettyprint_status_register_n25q;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_PLAIN: return &spi_prettyprint_status_register_plain;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_SST25: return &spi_prettyprint_status_register_sst25;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF016: return &spi_prettyprint_status_register_sst25vf016;
+ case SPI_PRETTYPRINT_STATUS_REGISTER_SST25VF040B: return &spi_prettyprint_status_register_sst25vf040b;
+ /* default: non-total function, 0 indicates no unlock function set.
+ * We explicitly do not want a default catch-all case in the switch
+ * to ensure unhandled enum's are compiler warnings.
+ */
+ case NO_PRINTLOCK_FUNC: return NULL;
+ };
+
+ return NULL;
+}