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>
diff --git a/spi.c b/spi.c
index 036c836..0a7fd2e 100644
--- a/spi.c
+++ b/spi.c
@@ -275,6 +275,15 @@
 	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 @@
 		"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 @@
 		"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 @@
 		case 0x258d:
 			spi_prettyprint_status_register_sst25vf040b(status);
 			break;
+		case 0x258e:
+			spi_prettyprint_status_register_sst25(status);
+			break;
 		}
 		break;
 	}