Switch SST49LF004A/B to block erase, remove the hack which simulated (unsupported) chip erase

Annotate SST49LF004B quirks for TBL#.

Add TEST_OK_PRW which is useful when a PREW chip gets a new erase
routine.

Change a few erase function prototypes to use unsigned int instead of
int.

Corresponding to flashrom svn r731.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Luc Verhaegen <libv@skynet.be>
diff --git a/flashchips.c b/flashchips.c
index 83f6e96..1292d3e 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -2141,6 +2141,9 @@
 	},
 
 	{
+		/* Contrary to the data sheet, TBL# on the SST49LF004B affects the top 128kB (instead of 64kB)
+		 * and is only honored for 64k block erase, but not 4k sector erase.
+		 */
 		.vendor		= "SST",
 		.name		= "SST49LF004A/B",
 		.bustype	= CHIP_BUSTYPE_FWH, /* A/A Mux */
@@ -2151,7 +2154,20 @@
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_sst_fwhub,
 		.probe_timing	= 1,		/* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
-		.erase		= erase_sst_fwhub,
+		.erase		= NULL,
+		.block_erasers	=
+		{
+			{
+				.eraseblocks = { {4 * 1024, 128} },
+				.block_erase = erase_sector_jedec, /* missing unlock */
+			}, {
+				.eraseblocks = { {64 * 1024, 8} },
+				.block_erase = erase_sst_fwhub_block, /* same as erase_sector_block, but with unlock */
+			}, {
+				.eraseblocks = { {512 * 1024, 1} },
+				.block_erase = NULL, /* AA 55 80 AA 55 10, only in PP mode */
+			},
+		},
 		.write		= write_sst_fwhub,
 		.read		= read_memmapped,
 	},