mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
Add support for generic RDID and REMS matching of unknown chips
If a chip is not on the RDID generic vendor list nor on the REMS specific ID list, flashrom will claim that no chip is there. Handle these cases gracefully. flashrom will ignore generic matches if a specific chip was found, so this will have no impact on supported chips, but help a lot for a first quick analysis by the user or developer. The only drawback is that unknown chips may be recognized multiple times until they are added to flashchips.[ch]. Corresponding to flashrom svn r767. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Marc Jones <marcj303@gmail.com>
This commit is contained in:
parent
f52920581d
commit
01d49ed39d
27
flashchips.c
27
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 }
|
||||
};
|
||||
|
@ -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 */
|
||||
|
10
spi.c
10
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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user