[LinuxBIOS] [PATCH] flashrom: add generic vendor ID printing for SPI chips

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Jan 4 14:24:25 CET 2008


Print at least the vendor for SPI flash chips if the exact chip ID is unknown.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: flashrom-generic/flash.h
===================================================================
--- flashrom-generic/flash.h	(Revision 3031)
+++ flashrom-generic/flash.h	(Arbeitskopie)
@@ -59,10 +59,13 @@
  * entry of each section should be the manufacturer ID, followed by the
  * list of devices from that manufacturer (sorted by device IDs).
  *
- * All LPC/FWH parts (parallel flash) have 8-bit device IDs.
+ * All LPC/FWH parts (parallel flash) have 8-bit device IDs if there is no
+ * continuation code.
  * All SPI parts have 16-bit device IDs.
  */
 
+#define GENERIC_DEVICE_ID	0xffff	/* Only match the vendor ID */
+
 #define ALLIANCE_ID		0x52	/* Alliance Semiconductor */
 
 #define AMD_ID			0x01	/* AMD */
Index: flashrom-generic/flashchips.c
===================================================================
--- flashrom-generic/flashchips.c	(Revision 3031)
+++ flashrom-generic/flashchips.c	(Arbeitskopie)
@@ -185,5 +185,13 @@
 	 probe_jedec,	erase_chip_jedec, write_49f002},
 	{"S29C31004T", 	SYNCMOS_ID, 	S29C31004T,	512, 128,
 	 probe_jedec,	erase_chip_jedec, write_49f002},
+	{"EON unknown SPI chip", EON_ID_NOPREFIX, GENERIC_DEVICE_ID,	0, 0,
+	 probe_spi,	NULL,	NULL},
+	{"MX unknown SPI chip",	MX_ID,	GENERIC_DEVICE_ID,	0, 0,
+	 probe_spi,	NULL,	NULL},
+	{"SST unknown SPI chip",	SST_ID,	GENERIC_DEVICE_ID,	0, 0,
+	 probe_spi,	NULL,	NULL},
+	{"ST unknown SPI chip",	ST_ID,	GENERIC_DEVICE_ID,	0, 0,
+	 probe_spi,	NULL,	NULL},
 	{NULL,}
 };
Index: flashrom-generic/spi.c
===================================================================
--- flashrom-generic/spi.c	(Revision 3031)
+++ flashrom-generic/spi.c	(Arbeitskopie)
@@ -263,13 +263,16 @@
 		model_id = (readarr[1] << 8) | readarr[2];
 		printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, manuf_id, model_id);
 		if (manuf_id == flash->manufacture_id && model_id == flash->model_id) {
-			/* Print the status register before erase to tell the
+			/* Print the status register to tell the
 			 * user about possible write protection.
 			 */
 			generic_spi_prettyprint_status_register(flash);
 
 			return 1;
 		}
+		/* Test if this is a pure vendor match. */
+		if (manuf_id == flash->manufacture_id && GENERIC_DEVICE_ID == flash->model_id)
+			return 1;
 	}
 
 	return 0;






More information about the coreboot mailing list