On 06.02.2008 14:18, Chris Lingard wrote:
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.
Thanks for testing. The output should be mostly identical on the first look, but not exactly identical. If it is exactly identical, the executed binary didn't contain the patch. I'm looking for the following output changes:
probe_spi: id1 0x7f, id2 0x9d7e
should become
probe_spi: id1 0x7f9d, id2 0x7e
and there should be three additional lines near the end:
Probing for PMC unknown SPI chip, 0 KB WARNING: size: 0 -> 4096 (page size) RDID returned 7f 9d 7d.
Regards, Carl-Daniel