Signed-off-by: Maciej Pijanka <maciej.pijanka@gmail.com>
Index: flash.h
===================================================================
--- flash.h	(revision 566)
+++ flash.h	(working copy)
@@ -155,6 +155,7 @@
 	uint32_t tested;
 
 	int (*probe) (struct flashchip *flash);
+	int probe_timing;
 	int (*erase) (struct flashchip *flash);
 	int (*write) (struct flashchip *flash, uint8_t *buf);
 	int (*read) (struct flashchip *flash, uint8_t *buf);
Index: jedec.c
===================================================================
--- jedec.c	(revision 566)
+++ jedec.c	(working copy)
@@ -91,7 +91,16 @@
 	uint8_t id1, id2;
 	uint32_t largeid1, largeid2;
 	uint32_t flashcontent1, flashcontent2;
+	int probe_timing_enter, probe_timing_exit;
 
+	if (flash->probe_timing == -1) {
+		printf_debug("Chip lacks correc probe timing information, using default 10mS/40uS\n");
+		probe_timing_enter = 10000;
+		probe_timing_exit = 40;
+	} else {
+		probe_timing_enter = probe_timing_exit = flash->probe_timing;
+	}
+
 	/* Issue JEDEC Product ID Entry command */
 	chip_writeb(0xAA, bios + 0x5555);
 	myusec_delay(10);
@@ -101,7 +110,7 @@
 	/* Older chips may need up to 100 us to respond. The ATMEL 29C020
 	 * needs 10 ms according to the data sheet.
 	 */
-	myusec_delay(10000);
+	myusec_delay(probe_timing_enter);
 
 	/* Read product ID */
 	id1 = chip_readb(bios);
@@ -127,7 +136,7 @@
 	chip_writeb(0x55, bios + 0x2AAA);
 	myusec_delay(10);
 	chip_writeb(0xF0, bios + 0x5555);
-	myusec_delay(40);
+	myusec_delay(probe_timing_exit);
 
 	printf_debug("%s: id1 0x%02x, id2 0x%02x", __FUNCTION__, largeid1, largeid2);
 	if (!oddparity(id1))
Index: flashchips.c
===================================================================
--- flashchips.c	(revision 566)
+++ flashchips.c	(working copy)
@@ -34,7 +34,7 @@
 	/* Vendor, Chip, Vendor ID, Chip ID,
 	 * Total size (kB), Page size (B),
 	 * Test status,
-	 * Probe function, Erase function, Write function, Read function
+	 * Probe function, Probe function timing argument, Erase function, Write function, Read function
 	 */
 
 	{
@@ -47,6 +47,7 @@
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_en29f002a,
 		.read		= read_memmapped,
@@ -62,6 +63,7 @@
 		.page_size	= 256,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_en29f002a,
 		.read		= read_memmapped,
@@ -107,6 +109,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_29f040b,
 		.write		= write_29f040b,
 		.read		= read_memmapped,
@@ -152,6 +155,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -407,7 +411,8 @@
 		.total_size	= 64,
 		.page_size	= 128,
 		.tested		= TEST_OK_PREW,
-		.probe		= probe_jedec,
+		.probe		= probe_jedec, 
+		.probe_timing	= 10000, /* 10mS, Enter=Exec */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -424,6 +429,7 @@
 		.page_size	= 128,
 		.tested		= TEST_OK_PRE,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,	/* FIXME */
 		.read		= read_memmapped,
@@ -439,6 +445,7 @@
 		.page_size	= 256,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -454,6 +461,7 @@
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -604,6 +612,7 @@
 		.page_size	= 64,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -619,6 +628,7 @@
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -634,6 +644,7 @@
 		.page_size	= 256,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -724,6 +735,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -739,6 +751,7 @@
 		.page_size	= 256,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_en29f002a,
 		.read		= read_memmapped,
@@ -754,6 +767,7 @@
 		.page_size	= 256,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_en29f002a,
 		.read		= read_memmapped,
@@ -769,6 +783,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= NULL,
 		.write		= NULL,
 		.read		= read_memmapped,
@@ -784,6 +799,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= NULL,
 		.write		= NULL,
 		.read		= read_memmapped,
@@ -829,6 +845,7 @@
 		.page_size	= 128 * 1024, /* 8k + 2x4k + 112k */
 		.tested		= TEST_BAD_ERASE|TEST_BAD_WRITE,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= NULL,
 		.write		= NULL,
 		.read		= read_memmapped,
@@ -844,6 +861,7 @@
 		.page_size	= 128 * 1024, /* 112k + 2x4k + 8k */
 		.tested		= TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= NULL,
 		.write		= NULL,
 		.read		= read_memmapped,
@@ -1264,6 +1282,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1459,6 +1478,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -1474,6 +1494,7 @@
 		.page_size	= 128,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -1489,6 +1510,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -1504,6 +1526,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1519,6 +1542,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1534,6 +1558,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1549,6 +1574,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1564,6 +1590,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1579,6 +1606,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1594,6 +1622,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PROBE,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1609,6 +1638,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -1729,6 +1759,7 @@
 		.page_size	= 16 * 1024,
 		.tested		= TEST_OK_PR,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_49lf040,
 		.write		= write_49lf040,
 		.read		= read_memmapped,
@@ -1744,6 +1775,7 @@
 		.page_size	= 16 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_49lf040,
 		.write		= write_49lf040,
 		.read		= read_memmapped,
@@ -1759,6 +1791,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_49lf040,
 		.write		= write_49lf040,
 		.read		= read_memmapped,
@@ -1789,6 +1822,7 @@
 		.page_size	= 4096,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_49lf040,
 		.write		= write_49lf040,
 		.read		= read_memmapped,
@@ -1969,6 +2003,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_m29f002,
 		.write		= write_m29f002b,
 		.read		= read_memmapped,
@@ -1984,6 +2019,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_m29f002,
 		.write		= write_m29f002t,
 		.read		= read_memmapped,
@@ -2029,6 +2065,7 @@
 		.page_size	= 16 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -2044,6 +2081,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -2179,6 +2217,7 @@
 		.page_size	= 64 * 1024,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_jedec,
 		.read		= read_memmapped,
@@ -2194,6 +2233,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -2209,6 +2249,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -2224,6 +2265,7 @@
 		.page_size	= 128,
 		.tested		= TEST_OK_PREW,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
@@ -2239,6 +2281,7 @@
 		.page_size	= 128,
 		.tested		= TEST_UNTESTED,
 		.probe		= probe_jedec,
+		.probe_timing	= -1, /* FIXME */
 		.erase		= erase_chip_jedec,
 		.write		= write_49f002,
 		.read		= read_memmapped,
