diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2008-01-04 16:22:09 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2008-01-04 16:22:09 +0000 |
commit | b5f9bd6ac974003df255358ef89d8bcb2b496789 (patch) | |
tree | 1f7130fa75659fbf10a6f84e35a3635a6b4dd8ca | |
parent | 717f66d1ebc4e6ae6e590ec081ae7a8ba698b37f (diff) | |
download | coreboot-b5f9bd6ac974003df255358ef89d8bcb2b496789.tar.xz |
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>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3032 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r-- | util/flashrom/flash.h | 5 | ||||
-rw-r--r-- | util/flashrom/flashchips.c | 8 | ||||
-rw-r--r-- | util/flashrom/spi.c | 9 |
3 files changed, 19 insertions, 3 deletions
diff --git a/util/flashrom/flash.h b/util/flashrom/flash.h index e1e5934692..4b571625ff 100644 --- a/util/flashrom/flash.h +++ b/util/flashrom/flash.h @@ -59,10 +59,13 @@ extern struct flashchip flashchips[]; * 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 */ diff --git a/util/flashrom/flashchips.c b/util/flashrom/flashchips.c index 53deb499f9..0430ca7da6 100644 --- a/util/flashrom/flashchips.c +++ b/util/flashrom/flashchips.c @@ -185,5 +185,13 @@ struct flashchip flashchips[] = { 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,} }; diff --git a/util/flashrom/spi.c b/util/flashrom/spi.c index 5f9290a536..1040b01e06 100644 --- a/util/flashrom/spi.c +++ b/util/flashrom/spi.c @@ -262,14 +262,19 @@ int probe_spi(struct flashchip *flash) manuf_id = readarr[0]; 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 + if (manuf_id == flash->manufacture_id && + model_id == flash->model_id) { + /* 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; |