diff options
-rw-r--r-- | 82802ab.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -47,6 +47,7 @@ int probe_82802ab(struct flashchip *flash) { chipaddr bios = flash->virtual_memory; uint8_t id1, id2; + uint8_t flashcontent1, flashcontent2; /* Reset to get a clean state */ chip_writeb(0xFF, bios); @@ -64,8 +65,21 @@ int probe_82802ab(struct flashchip *flash) programmer_delay(10); - printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __func__, id1, id2); + printf_debug("%s: id1 0x%02x, id2 0x%02x", __func__, id1, id2); + if (!oddparity(id1)) + printf_debug(", id1 parity violation"); + + /* Read the product ID location again. We should now see normal flash contents. */ + flashcontent1 = chip_readb(bios); + flashcontent2 = chip_readb(bios + 0x01); + + if (id1 == flashcontent1) + printf_debug(", id1 is normal flash content"); + if (id2 == flashcontent2) + printf_debug(", id2 is normal flash content"); + + printf_debug("\n"); if (id1 != flash->manufacture_id || id2 != flash->model_id) return 0; |