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@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;