[flashrom] [PATCH] Get rid of .probe_timing.

Stefan Tauner stefan.tauner at alumni.tuwien.ac.at
Fri May 30 03:07:04 CEST 2014


Use dedicated jede_probe_* functions where needed. The count of
functions could be reduced in the future by using the slowest one
instead(?).

To mimic previous delay behavior in the jedec_erase_* functions a
new feature flag was introduced: FEATURE_SLOW_ERASE_CMDS
Also, the feature_bits field was changed from int to uint16_t.

Default make size counterintuitively increases slightly with gcc but
shrinks with clang (about 4 kB or 0.75%).

Signed-off-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>
---
 chipdrivers.h |   6 +-
 flash.h       |  26 +--
 flashchips.c  | 658 +++++++++++-----------------------------------------------
 jedec.c       |  51 ++---
 4 files changed, 162 insertions(+), 579 deletions(-)

diff --git a/chipdrivers.h b/chipdrivers.h
index 7fe3202..65f9772 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -138,7 +138,11 @@ int unlock_lh28f008bjt(struct flashctx *flash);
 uint8_t oddparity(uint8_t val);
 void toggle_ready_jedec(const struct flashctx *flash, chipaddr dst);
 void data_polling_jedec(const struct flashctx *flash, chipaddr dst, uint8_t data);
-int probe_jedec(struct flashctx *flash);
+int probe_jedec_default(struct flashctx *flash);
+int probe_jedec_0(struct flashctx *flash);
+int probe_jedec_1(struct flashctx *flash);
+int probe_jedec_10(struct flashctx *flash);
+int probe_jedec_10000(struct flashctx *flash);
 int write_jedec(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
 int write_jedec_1(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
 int erase_sector_jedec(struct flashctx *flash, unsigned int page, unsigned int pagesize);
diff --git a/flash.h b/flash.h
index cf496b6..7f40704 100644
--- a/flash.h
+++ b/flash.h
@@ -113,12 +113,13 @@ enum write_granularity {
 #define FEATURE_ADDR_2AA	(1 << 2)
 #define FEATURE_ADDR_AAA	(2 << 2)
 #define FEATURE_ADDR_SHIFTED	(1 << 5)
+#define FEATURE_SLOW_ERASE_CMDS	(1 << 6)
 /* Feature bits used for SPI only */
-#define FEATURE_WRSR_EWSR	(1 << 6)
-#define FEATURE_WRSR_WREN	(1 << 7)
+#define FEATURE_WRSR_EWSR	(1 << 8)
+#define FEATURE_WRSR_WREN	(1 << 9)
 #define FEATURE_WRSR_EITHER	(FEATURE_WRSR_EWSR | FEATURE_WRSR_WREN)
-#define FEATURE_OTP		(1 << 8)
-#define FEATURE_QPI		(1 << 9)
+#define FEATURE_OTP		(1 << 10)
+#define FEATURE_QPI		(1 << 11)
 
 enum test_state {
 	OK = 0,
@@ -161,7 +162,7 @@ struct flashchip {
 	unsigned int total_size;
 	/* Chip page size in bytes */
 	unsigned int page_size;
-	int feature_bits;
+	uint16_t feature_bits;
 
 	/* Indicate how well flashrom supports different operations of this flash chip. */
 	struct tested {
@@ -173,11 +174,6 @@ struct flashchip {
 
 	int (*probe) (struct flashctx *flash);
 
-	/* Delay after "enter/exit ID mode" commands in microseconds.
-	 * NB: negative values have special meanings, see TIMING_* below.
-	 */
-	signed int probe_timing;
-
 	/*
 	 * Erase blocks and associated erase function. Any chip erase function
 	 * is stored as chip-sized virtual block together with said function.
@@ -214,16 +210,6 @@ struct flashctx {
 	struct registered_programmer *pgm;
 };
 
-/* Timing used in probe routines. ZERO is -2 to differentiate between an unset
- * field and zero delay.
- * 
- * SPI devices will always have zero delay and ignore this field.
- */
-#define TIMING_FIXME	-1
-/* this is intentionally same value as fixme */
-#define TIMING_IGNORED	-1
-#define TIMING_ZERO	-2
-
 extern const struct flashchip flashchips[];
 extern const unsigned int flashchips_size;
 
diff --git a/flashchips.c b/flashchips.c
index 78c18ca..4580f96 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -67,8 +67,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -94,8 +93,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_SHORT_RESET | FEATURE_ADDR_2AA,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -126,8 +124,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_EITHER_RESET | FEATURE_ADDR_2AA,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -158,8 +155,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -185,8 +181,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -212,8 +207,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -239,8 +233,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -270,8 +263,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -301,8 +293,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -333,8 +324,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -365,8 +355,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -397,8 +386,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -429,8 +417,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -461,8 +448,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024, /* unused */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -493,8 +479,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -520,8 +505,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, /* datasheet specifies address as don't care */
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -548,7 +532,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -582,7 +565,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -616,7 +598,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -651,7 +632,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -686,7 +666,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -721,7 +700,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -761,7 +739,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -796,7 +773,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -831,7 +807,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -866,7 +841,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -904,7 +878,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -942,7 +915,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -974,7 +946,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1006,7 +977,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1038,7 +1008,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1070,7 +1039,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1102,7 +1070,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1135,7 +1102,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1175,7 +1141,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { { 4 * 1024, 512 } },
@@ -1214,7 +1179,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1255,7 +1219,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1292,8 +1255,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -1324,8 +1286,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -1356,8 +1317,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -1383,8 +1343,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* routine is wrapper to probe_jedec (pm49fl00x.c) */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -1413,7 +1372,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1451,7 +1409,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1489,7 +1446,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1527,7 +1483,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1565,7 +1520,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PROBE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1603,7 +1557,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1642,7 +1595,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1680,7 +1632,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1719,7 +1670,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1757,7 +1707,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_at25f,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1786,7 +1735,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_at25f,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1817,7 +1765,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1860,7 +1807,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_at25f,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1889,7 +1835,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at25f,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1918,7 +1863,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at25f,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1948,7 +1892,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -1989,7 +1932,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2027,7 +1969,6 @@ const struct flashchip flashchips[] = {
 		/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2059,7 +2000,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2097,7 +2037,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2135,7 +2074,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2174,7 +2112,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.printlock	= spi_prettyprint_status_register_at26df081a,
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
@@ -2192,7 +2129,6 @@ const struct flashchip flashchips[] = {
 		.tested		= {.probe = NT, .read = NT, .erase = NT, .write = BAD },
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2228,8 +2164,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10000, /* 10mS, Enter=Exec */
+		.probe		= probe_jedec_10000, /* 10 ms, Enter=Exec */
 		.block_erasers	=
 		{
 			{
@@ -2252,8 +2187,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= 10000, /* 10mS, Enter=Exec */
+		.probe		= probe_jedec_10000, /* 10 ms, Enter=Exec */
 		.block_erasers	=
 		{
 			{
@@ -2276,8 +2210,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10000,			/* 10ms */
+		.probe		= probe_jedec_10000,			/* 10ms */
 		.block_erasers	=
 		{
 			{
@@ -2300,8 +2233,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10000,			/* 10 ms */
+		.probe		= probe_jedec_10000,			/* 10 ms */
 		.block_erasers	=
 		{
 			{
@@ -2327,7 +2259,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2359,7 +2290,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2401,7 +2331,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2443,7 +2372,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2485,7 +2413,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2527,7 +2454,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2569,7 +2495,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2612,7 +2537,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2654,7 +2578,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2696,7 +2619,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_at45db,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -2735,8 +2657,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2759,8 +2680,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2791,8 +2711,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2823,8 +2742,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2848,8 +2766,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2879,8 +2796,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,  /* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2910,8 +2826,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,  /* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2942,8 +2857,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,  /* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -2974,7 +2888,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP, /* TODO: LPC OK too? */
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab, /* TODO: 0xff cmd not documented? */
-		.probe_timing	= TIMING_FIXME,
 		.block_erasers	=
 		{
 			{
@@ -3009,8 +2922,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 0, /* unused */
 		.feature_bits	= 0,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec, /* FIXME! */
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0, /* FIXME! */
 		.block_erasers	=
 		{
 			{
@@ -3033,8 +2945,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -3060,8 +2971,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -3093,7 +3003,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3128,7 +3037,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3163,7 +3071,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3197,7 +3104,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3231,7 +3137,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3265,7 +3170,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3299,7 +3203,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3334,7 +3237,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3369,7 +3271,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3404,7 +3305,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3439,7 +3339,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3474,7 +3373,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3509,7 +3407,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3544,7 +3441,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3579,7 +3475,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3614,7 +3509,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3649,7 +3543,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3684,7 +3577,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3719,7 +3611,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3757,7 +3648,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3795,7 +3685,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3833,7 +3722,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PROBE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3868,7 +3756,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3903,7 +3790,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3938,7 +3824,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -3973,7 +3858,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4009,7 +3893,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4045,7 +3928,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4083,7 +3965,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4123,7 +4004,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4159,7 +4039,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4195,7 +4074,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4232,7 +4110,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4270,7 +4147,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4308,7 +4184,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 2048} },
@@ -4345,7 +4220,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 4096} },
@@ -4380,7 +4254,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 32} },
@@ -4415,7 +4288,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 64} },
@@ -4450,7 +4322,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 128} },
@@ -4485,7 +4356,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 256} },
@@ -4520,7 +4390,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 512} },
@@ -4558,7 +4427,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 1024} },
@@ -4596,7 +4464,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 2048} },
@@ -4629,8 +4496,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -4657,8 +4523,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -4689,8 +4554,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -4722,7 +4586,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= 0,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_en29lv640b,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -4751,8 +4614,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -4783,8 +4645,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -4817,7 +4678,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
 		.block_erasers	=
 		{
 			{
@@ -4849,7 +4709,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
 		.block_erasers	=
 		{
 			{
@@ -4881,7 +4740,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED,
 		.block_erasers	=
 		{
 			{
@@ -4913,7 +4771,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED,
 		.block_erasers	=
 		{
 			{
@@ -4946,7 +4803,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -4984,7 +4840,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 16} },
@@ -5018,7 +4873,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 32} },
@@ -5055,7 +4909,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5093,7 +4946,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5132,7 +4984,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5171,7 +5022,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5210,7 +5060,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5249,7 +5098,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5288,7 +5136,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5327,7 +5174,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 256} },
@@ -5363,8 +5209,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO, /* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -5395,8 +5240,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO, /* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -5427,8 +5271,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -5456,7 +5299,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5495,7 +5337,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5534,7 +5375,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5573,7 +5413,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5612,7 +5451,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5651,7 +5489,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -5687,8 +5524,7 @@ const struct flashchip flashchips[] = {
 		.total_size	= 128,
 		.page_size	= 128 * 1024, /* 8k + 2x4k + 112k */
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -5714,8 +5550,7 @@ const struct flashchip flashchips[] = {
 		.total_size	= 128,
 		.page_size	= 128 * 1024, /* 112k + 2x4k + 8k */
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -5742,7 +5577,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256 * 1024,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO, /* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5769,7 +5603,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5792,7 +5625,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128 * 1024, /* maximal block size */
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5819,7 +5651,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128 * 1024, /* maximal block size */
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5847,7 +5678,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5875,7 +5705,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -5903,7 +5732,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
 		.block_erasers	=
 		{
 			{
@@ -5928,7 +5756,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
 		.block_erasers	=
 		{
 			{
@@ -5952,7 +5779,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= {.probe = OK, .read = OK, .erase = NA, .write = NA},
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL, /* MX23L3254 is a mask ROM, so it is read-only */
 		.read		= spi_chip_read, /* Fast read (0x0B) supported */
 		.voltage	= {3000, 3600},
@@ -5970,7 +5796,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6009,7 +5834,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6044,7 +5868,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6082,7 +5905,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6120,7 +5942,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6158,7 +5979,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6194,7 +6014,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6232,7 +6051,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6268,7 +6086,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6304,7 +6121,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6339,7 +6155,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6375,7 +6190,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6411,7 +6225,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6450,7 +6263,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6489,7 +6301,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6525,7 +6336,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6561,7 +6371,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6598,7 +6407,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6637,7 +6445,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6674,7 +6481,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6716,7 +6522,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6758,7 +6563,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6796,8 +6600,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 32 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6829,8 +6632,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 32 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6862,8 +6664,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6894,8 +6695,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6926,8 +6726,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6953,8 +6752,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -6981,7 +6779,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7015,7 +6812,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res1,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7044,7 +6840,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7074,7 +6869,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res1,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7103,7 +6897,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7132,7 +6925,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_res1,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7161,7 +6953,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7190,7 +6981,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res1,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7218,7 +7008,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7247,7 +7036,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7276,7 +7064,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7305,7 +7092,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7334,7 +7120,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7363,7 +7148,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7395,7 +7179,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7427,7 +7210,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7459,7 +7241,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7491,7 +7272,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7524,7 +7304,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { { 4 * 1024, 256 } },
@@ -7556,7 +7335,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7589,7 +7367,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7622,7 +7399,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7653,7 +7429,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 512} },
@@ -7680,7 +7455,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 1024} },
@@ -7707,7 +7481,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 2048} },
@@ -7734,7 +7507,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 4096} },
@@ -7761,7 +7533,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 8192} },
@@ -7791,7 +7562,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7828,7 +7598,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7862,7 +7631,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7896,7 +7664,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7930,7 +7697,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -7964,7 +7730,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 4096 } },
@@ -7997,7 +7762,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 4096 } },
@@ -8027,8 +7791,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8054,8 +7817,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8081,8 +7843,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8108,8 +7869,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8135,8 +7895,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8162,8 +7921,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8189,8 +7947,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8217,7 +7974,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8258,7 +8014,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8299,7 +8054,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8340,7 +8094,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8378,7 +8131,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8413,7 +8165,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8450,7 +8201,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8488,7 +8238,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8526,7 +8275,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8564,7 +8312,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8602,7 +8349,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res3,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8634,7 +8380,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res3,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8666,7 +8411,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8698,7 +8442,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8730,7 +8473,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8762,7 +8504,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8800,7 +8541,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -8837,8 +8577,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 8 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_FIXME,
+		.probe		= probe_jedec_default,
 		.block_erasers	=
 		{
 			{
@@ -8869,8 +8608,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 8 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_FIXME,
+		.probe		= probe_jedec_default,
 		.block_erasers	=
 		{
 			{
@@ -8901,8 +8639,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -8931,8 +8668,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers =
 		{
 			{
@@ -8961,8 +8697,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers =
 		{
 			{
@@ -8991,8 +8726,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -9021,8 +8755,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* routine is wrapper to probe_jedec (pm49fl00x.c) */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -9052,8 +8785,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* routine is wrapper to probe_jedec (pm49fl00x.c) */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -9084,7 +8816,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 128} },
@@ -9115,7 +8846,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 128} },
@@ -9145,7 +8875,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9176,7 +8905,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {256, 2 * 1024} },
@@ -9207,7 +8935,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 128} },
@@ -9238,7 +8965,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 256} },
@@ -9272,7 +8998,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {8 * 1024, 128} },
@@ -9302,7 +9027,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9333,7 +9057,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_EITHER_RESET | FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9366,7 +9089,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9395,7 +9117,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9424,7 +9145,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9453,7 +9173,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9482,7 +9201,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9511,7 +9229,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 128} },
@@ -9545,7 +9262,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 256} },
@@ -9580,7 +9296,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 512} },
@@ -9615,7 +9330,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 1024} },
@@ -9650,7 +9364,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 2048} },
@@ -9686,7 +9399,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	= {
 			{
 				.eraseblocks = { {4 * 1024, 4096} },
@@ -9720,7 +9432,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9752,7 +9463,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9784,7 +9494,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_res2,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9816,7 +9525,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9854,7 +9562,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9892,7 +9599,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9924,7 +9630,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9962,7 +9667,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -9994,7 +9698,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10032,7 +9735,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rems,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10070,7 +9772,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10108,7 +9809,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10146,7 +9846,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10184,7 +9883,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EWSR,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10222,7 +9920,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10257,7 +9954,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10292,7 +9988,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10330,7 +10025,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10368,7 +10062,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_EITHER,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -10406,7 +10099,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= 0,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst28sf040.c) */
 		.block_erasers	=
 		{
 			{
@@ -10433,8 +10125,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -10457,8 +10148,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -10481,8 +10171,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -10505,8 +10194,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -10529,8 +10217,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1, /* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10556,8 +10243,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10583,8 +10269,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10610,8 +10295,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10637,8 +10321,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10664,8 +10347,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10691,8 +10373,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10718,8 +10399,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10745,8 +10425,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10775,8 +10454,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,		/* 150 ns */
+		.probe		= probe_jedec_1,		/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10807,8 +10485,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,		/* 150 ns */
+		.probe		= probe_jedec_1,		/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10842,8 +10519,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,		/* 150 ns */
+		.probe		= probe_jedec_1,		/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10875,7 +10551,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
 		.block_erasers	=
 		{
 			{
@@ -10907,8 +10582,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,		/* 150 ns */
+		.probe		= probe_jedec_1,		/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -10940,7 +10614,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
 		.block_erasers	=
 		{
 			{
@@ -10973,7 +10646,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
 		.block_erasers	=
 		{
 			{
@@ -11005,8 +10677,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -11035,8 +10706,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PRE,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -11065,8 +10735,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,			/* 150 ns */
+		.probe		= probe_jedec_1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -11095,8 +10764,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET | FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 1,		/* 150ns */
+		.probe		= probe_jedec_1,		/* 150ns */
 		.block_erasers	=
 		{
 			{
@@ -11126,8 +10794,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_FIXME,
+		.probe		= probe_jedec_default,
 		.block_erasers	=
 		{
 			{
@@ -11157,7 +10824,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
 		.block_erasers	=
 		{
 			{
@@ -11189,8 +10855,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11221,8 +10886,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11253,8 +10917,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO, /* datasheet specifies no timing */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11282,7 +10945,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
 		.block_erasers	=
 		{
 			{
@@ -11314,7 +10976,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_m29f400bt,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
 		.block_erasers	=
 		{
 			{
@@ -11345,8 +11006,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11372,8 +11032,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11399,8 +11058,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11424,7 +11082,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_FIXME,
 		.block_erasers	=
 		{
 			{
@@ -11457,7 +11114,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_FIXME,
 		.block_erasers	=
 		{
 			{
@@ -11490,7 +11146,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_FIXME,
 		.block_erasers	=
 		{
 			{
@@ -11523,7 +11178,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_FIXME,
 		.block_erasers	=
 		{
 			{
@@ -11556,7 +11210,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
 		.block_erasers	=
 		{
 			{
@@ -11586,7 +11239,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
 		.block_erasers	=
 		{
 			{
@@ -11611,7 +11263,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
 		.block_erasers	=
 		{
 			{
@@ -11636,7 +11287,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
 		.block_erasers	=
 		{
 			{
@@ -11661,7 +11311,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -11686,7 +11335,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_REGISTERMAP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_82802ab,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
 		.block_erasers	=
 		{
 			{
@@ -11716,8 +11364,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11743,8 +11390,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11770,8 +11416,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11796,8 +11441,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 512,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11822,8 +11466,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11849,8 +11492,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11876,8 +11518,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11903,8 +11544,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11930,8 +11570,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16384, /* Non-uniform sectors */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11962,8 +11601,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 16384, /* Non-uniform sectors */
 		.feature_bits	= FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= TIMING_ZERO,	/* Datasheet has no timing info specified */
+		.probe		= probe_jedec_0,
 		.block_erasers	=
 		{
 			{
@@ -11997,7 +11635,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12037,7 +11674,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12077,7 +11713,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12117,7 +11752,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12157,7 +11791,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12196,7 +11829,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12235,7 +11867,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12274,7 +11905,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12314,7 +11944,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12354,7 +11983,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12394,7 +12022,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12432,7 +12059,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12464,7 +12090,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12496,7 +12121,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12528,7 +12152,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12560,7 +12183,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12598,7 +12220,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12636,7 +12257,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_WRSR_WREN,
 		.tested		= TEST_OK_PROBE,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -12674,7 +12294,6 @@ const struct flashchip flashchips[] = {
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_w29ee011,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (w29ee011.c) */
 		.block_erasers	=
 		{
 			{
@@ -12696,8 +12315,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,		/* used datasheet for the W29C011A */
+		.probe		= probe_jedec_10,		/* used datasheet for the W29C011A */
 		.block_erasers	=
 		{
 			{
@@ -12719,8 +12337,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12743,8 +12360,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.feature_bits	= FEATURE_LONG_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12767,8 +12383,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12795,8 +12410,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12823,8 +12437,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 4 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12854,8 +12467,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PR,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12885,8 +12497,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12913,8 +12524,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12941,8 +12551,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -12969,8 +12578,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13001,8 +12609,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13030,8 +12637,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13058,8 +12664,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13086,8 +12691,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13118,8 +12722,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PROBE,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13142,8 +12745,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13174,8 +12776,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 128,
 		.feature_bits	= FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13206,8 +12807,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13235,8 +12835,7 @@ const struct flashchip flashchips[] = {
 		.page_size	= 64 * 1024,
 		.feature_bits	= FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
 		.tested		= TEST_UNTESTED,
-		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe		= probe_jedec_10,
 		.block_erasers	=
 		{
 			{
@@ -13308,7 +12907,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid4,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13323,7 +12921,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13338,7 +12935,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13353,7 +12949,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13368,7 +12963,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13383,7 +12977,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13398,7 +12991,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13413,7 +13005,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
@@ -13428,7 +13019,6 @@ const struct flashchip flashchips[] = {
 		.page_size	= 256,
 		.tested		= TEST_BAD_PREW,
 		.probe		= probe_spi_rdid,
-		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
 	},
diff --git a/jedec.c b/jedec.c
index 08cc88b..a9ace95 100644
--- a/jedec.c
+++ b/jedec.c
@@ -120,29 +120,14 @@ static void start_program_jedec_common(const struct flashctx *flash, unsigned in
 	chip_writeb(flash, 0xA0, bios + (0x5555 & mask));
 }
 
-static int probe_jedec_common(struct flashctx *flash, unsigned int mask)
+static int probe_jedec_common(struct flashctx *flash, unsigned int probe_timing_enter, unsigned int probe_timing_exit)
 {
 	chipaddr bios = flash->virtual_memory;
 	const struct flashchip *chip = flash->chip;
+	const unsigned int mask = getaddrmask(flash->chip);
 	uint8_t id1, id2;
 	uint32_t largeid1, largeid2;
 	uint32_t flashcontent1, flashcontent2;
-	unsigned int probe_timing_enter, probe_timing_exit;
-
-	if (chip->probe_timing > 0)
-		probe_timing_enter = probe_timing_exit = chip->probe_timing;
-	else if (chip->probe_timing == TIMING_ZERO) { /* No delay. */
-		probe_timing_enter = probe_timing_exit = 0;
-	} else if (chip->probe_timing == TIMING_FIXME) { /* == _IGNORED */
-		msg_cdbg("Chip lacks correct probe timing information, "
-			     "using default 10mS/40uS. ");
-		probe_timing_enter = 10000;
-		probe_timing_exit = 40;
-	} else {
-		msg_cerr("Chip has negative value in probe_timing, failing "
-		       "without chip access\n");
-		return 0;
-	}
 
 	/* Earlier probes might have been too fast for the chip to enter ID
 	 * mode completely. Allow the chip to finish this before seeing a
@@ -245,7 +230,7 @@ static int erase_sector_jedec_common(struct flashctx *flash, unsigned int page,
 {
 	chipaddr bios = flash->virtual_memory;
 	unsigned int delay_us = 0;
-	if(flash->chip->probe_timing != TIMING_ZERO)
+	if (flash->chip->feature_bits & FEATURE_SLOW_ERASE_CMDS)
 		delay_us = 10;
 
 	/*  Issue the Sector Erase command   */
@@ -275,7 +260,7 @@ static int erase_block_jedec_common(struct flashctx *flash, unsigned int block,
 {
 	chipaddr bios = flash->virtual_memory;
 	unsigned int delay_us = 0;
-	if(flash->chip->probe_timing != TIMING_ZERO)
+	if (flash->chip->feature_bits & FEATURE_SLOW_ERASE_CMDS)
 		delay_us = 10;
 
 	/*  Issue the Sector Erase command   */
@@ -304,7 +289,7 @@ static int erase_chip_jedec_common(struct flashctx *flash, unsigned int mask)
 {
 	chipaddr bios = flash->virtual_memory;
 	unsigned int delay_us = 0;
-	if(flash->chip->probe_timing != TIMING_ZERO)
+	if (flash->chip->feature_bits & FEATURE_SLOW_ERASE_CMDS)
 		delay_us = 10;
 
 	/*  Issue the JEDEC Chip Erase command   */
@@ -477,12 +462,30 @@ int erase_chip_block_jedec(struct flashctx *flash, unsigned int addr,
 	return erase_chip_jedec_common(flash, mask);
 }
 
-int probe_jedec(struct flashctx *flash)
+int probe_jedec_default(struct flashctx *flash)
 {
-	unsigned int mask;
+	msg_cdbg("Chip lacks exact probe timing information, using default 10 ms/40 us. ");
+	return probe_jedec_common(flash, 10000, 40);
+}
 
-	mask = getaddrmask(flash->chip);
-	return probe_jedec_common(flash, mask);
+int probe_jedec_0(struct flashctx *flash)
+{
+	return probe_jedec_common(flash, 0, 0);
+}
+
+int probe_jedec_1(struct flashctx *flash)
+{
+	return probe_jedec_common(flash, 1, 1);
+}
+
+int probe_jedec_10(struct flashctx *flash)
+{
+	return probe_jedec_common(flash, 10, 10);
+}
+
+int probe_jedec_10000(struct flashctx *flash)
+{
+	return probe_jedec_common(flash, 10000, 10000);
 }
 
 int erase_sector_jedec(struct flashctx *flash, unsigned int page,
-- 
Kind regards, Stefan Tauner





More information about the flashrom mailing list