summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--82802ab.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/82802ab.c b/82802ab.c
index 191114b..b6bd689 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -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;
OpenPOWER on IntegriCloud