[flashrom] [commit] r1391 - trunk

repository service svn at flashrom.org
Tue Jul 26 16:18:53 CEST 2011


Author: hailfinger
Date: Tue Jul 26 16:18:52 2011
New Revision: 1391
URL: http://flashrom.org/trac/flashrom/changeset/1391

Log:
Fix Winbond W29EE011, W29EE012, W29C010M, W29C011A probing.
According to the datasheets probe_w29ee011 is the only valid probe
function for those chips, but we have reports where those chips
were only detected with probe_jedec, and thus we assume that our
datasheets only cover an earlier stepping.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>

Modified:
   trunk/flashchips.c
   trunk/w29ee011.c

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c	Tue Jul 26 02:54:42 2011	(r1390)
+++ trunk/flashchips.c	Tue Jul 26 16:18:52 2011	(r1391)
@@ -8252,6 +8252,29 @@
 
 	{
 		.vendor		= "Winbond",
+		.name		= "W29C010(M)/W29C011A/W29EE011/W29EE012-old",
+		.bustype	= CHIP_BUSTYPE_PARALLEL,
+		.manufacture_id	= WINBOND_ID,
+		.model_id	= WINBOND_W29C010,
+		.total_size	= 128,
+		.page_size	= 128,
+		.feature_bits	= FEATURE_LONG_RESET,
+		.tested		= TEST_OK_PRE,
+		.probe		= probe_w29ee011,
+		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (w29ee011.c) */
+		.block_erasers	=
+		{
+			{
+				.eraseblocks = { {128 * 1024, 1} },
+				.block_erase = erase_chip_block_jedec,
+			}
+		},
+		.write		= write_jedec,
+		.read		= read_memmapped,
+	},
+
+	{/* W29EE011, W29EE012, W29C010M, W29C011A do not support probe_jedec according to the datasheet, but it works for newer(?) steppings. */
+		.vendor		= "Winbond",
 		.name		= "W29C010(M)/W29C011A/W29EE011/W29EE012",
 		.bustype	= CHIP_BUSTYPE_PARALLEL,
 		.manufacture_id	= WINBOND_ID,
@@ -8322,29 +8345,6 @@
 	},
 
 	{
-		.vendor		= "Winbond",
-		.name		= "W29C010(M)/W29C011A/W29EE011/W29EE012",
-		.bustype	= CHIP_BUSTYPE_PARALLEL,
-		.manufacture_id	= WINBOND_ID,
-		.model_id	= WINBOND_W29C010,
-		.total_size	= 128,
-		.page_size	= 128,
-		.feature_bits	= FEATURE_LONG_RESET,
-		.tested		= TEST_OK_PRE,
-		.probe		= probe_w29ee011,
-		.probe_timing	= TIMING_IGNORED, /* routine doesn't use probe_timing (w29ee011.c) */
-		.block_erasers	=
-		{
-			{
-				.eraseblocks = { {128 * 1024, 1} },
-				.block_erase = erase_chip_block_jedec,
-			}
-		},
-		.write		= write_jedec,
-		.read		= read_memmapped,
-	},
-
-	{
 		.vendor		= "Winbond",
 		.name		= "W39L040",
 		.bustype	= CHIP_BUSTYPE_PARALLEL,

Modified: trunk/w29ee011.c
==============================================================================
--- trunk/w29ee011.c	Tue Jul 26 02:54:42 2011	(r1390)
+++ trunk/w29ee011.c	Tue Jul 26 16:18:52 2011	(r1391)
@@ -22,16 +22,19 @@
 #include "flash.h"
 #include "chipdrivers.h"
 
+/* According to the Winbond W29EE011, W29EE012, W29C010M, W29C011A
+ * datasheets this is the only valid probe function for those chips.
+ */
 int probe_w29ee011(struct flashchip *flash)
 {
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
-	if (!chip_to_probe || strcmp(chip_to_probe, "W29EE011")) {
-		msg_cdbg("Probing disabled for Winbond W29EE011 because "
-			     "the probing sequence puts the AMIC A49LF040A in "
-			     "a funky state. Use 'flashrom -c W29EE011' if you "
-			     "have a board with this chip.\n");
+	if (!chip_to_probe || strcmp(chip_to_probe, flash->name)) {
+		msg_cdbg("Old Winbond W29* probe method disabled because "
+			 "the probing sequence puts the AMIC A49LF040A in "
+			 "a funky state. Use 'flashrom -c %s' if you "
+			 "have a board with such a chip.\n", flash->name);
 		return 0;
 	}
 




More information about the flashrom mailing list