summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-05-06 13:59:44 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-05-06 13:59:44 +0000
commit1bfd6c9524e630337ea2770b78be409b0338b6be (patch)
treeeb3fdc3ebc52614bcaf043e349ff7f78a1043cc8
parent9bb88acc5ed11dba09848198f0a884320bf1b0b0 (diff)
downloadast2050-flashrom-1bfd6c9524e630337ea2770b78be409b0338b6be.zip
ast2050-flashrom-1bfd6c9524e630337ea2770b78be409b0338b6be.tar.gz
Improve SST25 status register routines
- Using a 4-bit index into an array with 8 elements leads to out-of-bounds accesses. Use proper bit masking to fix this. - Factor out common SST25 status register printing. - Use the common SST25 status register printing for SST25VF080B. Corresponding to flashrom svn r468. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Peter Stuge <peter@stuge.se>
-rw-r--r--spi.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/spi.c b/spi.c
index 036c836..0a7fd2e 100644
--- a/spi.c
+++ b/spi.c
@@ -275,6 +275,15 @@ void spi_prettyprint_status_register_st_m25p(uint8_t status)
spi_prettyprint_status_register_common(status);
}
+void spi_prettyprint_status_register_sst25(uint8_t status)
+{
+ printf_debug("Chip status register: Block Protect Write Disable "
+ "(BPL) is %sset\n", (status & (1 << 7)) ? "" : "not ");
+ printf_debug("Chip status register: Auto Address Increment Programming "
+ "(AAI) is %sset\n", (status & (1 << 6)) ? "" : "not ");
+ spi_prettyprint_status_register_common(status);
+}
+
/* Prettyprint the status register. Works for
* SST 25VF016
*/
@@ -289,11 +298,7 @@ void spi_prettyprint_status_register_sst25vf016(uint8_t status)
"100000H-1FFFFFH",
"all", "all"
};
- printf_debug("Chip status register: Block Protect Write Disable "
- "(BPL) is %sset\n", (status & (1 << 7)) ? "" : "not ");
- printf_debug("Chip status register: Auto Address Increment Programming "
- "(AAI) is %sset\n", (status & (1 << 6)) ? "" : "not ");
- spi_prettyprint_status_register_common(status);
+ spi_prettyprint_status_register_sst25(status);
printf_debug("Resulting block protection : %s\n",
bpt[(status & 0x1c) >> 2]);
}
@@ -307,13 +312,9 @@ void spi_prettyprint_status_register_sst25vf040b(uint8_t status)
"0x40000-0x7ffff",
"all blocks", "all blocks", "all blocks", "all blocks"
};
- printf_debug("Chip status register: Block Protect Write Disable "
- "(BPL) is %sset\n", (status & (1 << 7)) ? "" : "not ");
- printf_debug("Chip status register: Auto Address Increment Programming "
- "(AAI) is %sset\n", (status & (1 << 6)) ? "" : "not ");
- spi_prettyprint_status_register_common(status);
+ spi_prettyprint_status_register_sst25(status);
printf_debug("Resulting block protection : %s\n",
- bpt[(status & 0x3c) >> 2]);
+ bpt[(status & 0x1c) >> 2]);
}
void spi_prettyprint_status_register(struct flashchip *flash)
@@ -341,6 +342,9 @@ void spi_prettyprint_status_register(struct flashchip *flash)
case 0x258d:
spi_prettyprint_status_register_sst25vf040b(status);
break;
+ case 0x258e:
+ spi_prettyprint_status_register_sst25(status);
+ break;
}
break;
}
OpenPOWER on IntegriCloud