summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flashchips.c27
-rw-r--r--flashchips.h1
-rw-r--r--spi.c10
3 files changed, 38 insertions, 0 deletions
diff --git a/flashchips.c b/flashchips.c
index 65eb7f0..e97786f 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -3340,5 +3340,32 @@ struct flashchip flashchips[] = {
.read = NULL,
},
+ {
+ .vendor = "Generic",
+ .name = "unknown SPI chip (RDID)",
+ .bustype = CHIP_BUSTYPE_SPI,
+ .manufacture_id = GENERIC_MANUF_ID,
+ .model_id = GENERIC_DEVICE_ID,
+ .total_size = 0,
+ .page_size = 256,
+ .tested = TEST_BAD_PREW,
+ .probe = probe_spi_rdid,
+ .erase = NULL,
+ .write = NULL,
+ },
+ {
+ .vendor = "Generic",
+ .name = "unknown SPI chip (REMS)",
+ .bustype = CHIP_BUSTYPE_SPI,
+ .manufacture_id = GENERIC_MANUF_ID,
+ .model_id = GENERIC_DEVICE_ID,
+ .total_size = 0,
+ .page_size = 256,
+ .tested = TEST_BAD_PREW,
+ .probe = probe_spi_rems,
+ .erase = NULL,
+ .write = NULL,
+ },
+
{ NULL }
};
diff --git a/flashchips.h b/flashchips.h
index 81ce250..95277e6 100644
--- a/flashchips.h
+++ b/flashchips.h
@@ -34,6 +34,7 @@
* SPI parts have 16-bit device IDs if they support RDID.
*/
+#define GENERIC_MANUF_ID 0xffff /* Check if there is a vendor ID */
#define GENERIC_DEVICE_ID 0xffff /* Only match the vendor ID */
#define ALLIANCE_ID 0x52 /* Alliance Semiconductor */
diff --git a/spi.c b/spi.c
index 48be29a..29c202c 100644
--- a/spi.c
+++ b/spi.c
@@ -281,6 +281,11 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes)
GENERIC_DEVICE_ID == flash->model_id)
return 1;
+ /* Test if there is any vendor ID. */
+ if (GENERIC_MANUF_ID == flash->manufacture_id &&
+ id1 != 0xff)
+ return 1;
+
return 0;
}
@@ -340,6 +345,11 @@ int probe_spi_rems(struct flashchip *flash)
GENERIC_DEVICE_ID == flash->model_id)
return 1;
+ /* Test if there is any vendor ID. */
+ if (GENERIC_MANUF_ID == flash->manufacture_id &&
+ id1 != 0xff)
+ return 1;
+
return 0;
}
OpenPOWER on IntegriCloud