Carl-Daniel Hailfinger wrote:
Can you try the patch below? We need full output from flashrom -V.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-spi_pm25/flash.h
--- flashrom-spi_pm25/flash.h (Revision 3086) +++ flashrom-spi_pm25/flash.h (Arbeitskopie) @@ -158,7 +158,8 @@ /* Programmable Micro Corp is listed in JEP106W in bank 2, so it should have
- a 0x7F continuation code prefix.
*/ -#define PMC_ID 0x9D /* PMC */ +#define PMC_ID 0x7F9D /* PMC */ +#define PMC_ID_NOPREFIX 0x9D /* PMC, missing 0x7F prefix */ #define PMC_49FL002 0x6D #define PMC_49FL004 0x6E
Index: flashrom-spi_pm25/flashchips.c
--- flashrom-spi_pm25/flashchips.c (Revision 3086) +++ flashrom-spi_pm25/flashchips.c (Arbeitskopie) @@ -100,9 +100,9 @@ probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc}, {"SST49LF160C", SST_ID, SST_49LF160C, 2048, 4 * 1024 , probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
- {"Pm49FL002", PMC_ID, PMC_49FL002, 256, 16 * 1024,
- {"Pm49FL002", PMC_ID_NOPREFIX, PMC_49FL002, 256, 16 * 1024, probe_jedec, erase_chip_jedec, write_49fl004},
- {"Pm49FL004", PMC_ID, PMC_49FL004, 512, 64 * 1024,
- {"Pm49FL004", PMC_ID_NOPREFIX, PMC_49FL004, 512, 64 * 1024, probe_jedec, erase_chip_jedec, write_49fl004}, {"W29C011", WINBOND_ID, W_29C011, 128, 128, probe_jedec, erase_chip_jedec, write_jedec},
@@ -205,6 +205,8 @@ probe_spi, NULL, NULL}, {"MX unknown SPI chip", MX_ID, GENERIC_DEVICE_ID, 0, 0, probe_spi, NULL, NULL},
- {"PMC unknown SPI chip", PMC_ID, GENERIC_DEVICE_ID, 0, 0,
{"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},
Index: flashrom-spi_pm25/spi.c
--- flashrom-spi_pm25/spi.c (Revision 3086) +++ flashrom-spi_pm25/spi.c (Arbeitskopie) @@ -281,8 +281,14 @@ uint8_t manuf_id; uint16_t model_id; if (!generic_spi_rdid(readarr)) {
manuf_id = readarr[0];
model_id = (readarr[1] << 8) | readarr[2];
/* Check if this is a continuation vendor ID */
if (readarr[0] == 0x7f) {
manuf_id = (readarr[0] << 8) | readarr[1];
model_id = readarr[2];
} else {
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) {}
I got version 3086, applied your patch, and the output is identical to that already posted.