diff --git a/82802ab.c b/82802ab.c
index 8aa189d..d7194c1 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -47,14 +47,11 @@
 	chipaddr bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
-#if 0
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0x90, bios + 0x5555);
-#endif
-
-	chip_writeb(0xff, bios);
+	/* Reset to get a clean state */
+	chip_writeb(0xFF, bios);
 	programmer_delay(10);
+
+	/* Enter ID mode */
 	chip_writeb(0x90, bios);
 	programmer_delay(10);
 
@@ -62,9 +59,7 @@
 	id2 = chip_readb(bios + 0x01);
 
 	/* Leave ID mode */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xF0, bios + 0x5555);
+	chip_writeb(0xFF, bios);
 
 	programmer_delay(10);
 
@@ -81,7 +76,6 @@
 uint8_t wait_82802ab(chipaddr bios)
 {
 	uint8_t status;
-	uint8_t id1, id2;
 
 	chip_writeb(0x70, bios);
 	if ((chip_readb(bios) & 0x80) == 0) {	// it's busy
@@ -90,18 +84,8 @@
 
 	status = chip_readb(bios);
 
-	// put another command to get out of status register mode
-
-	chip_writeb(0x90, bios);
-	programmer_delay(10);
-
-	id1 = chip_readb(bios);
-	id2 = chip_readb(bios + 0x01);
-
-	// this is needed to jam it out of "read id" mode
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xF0, bios + 0x5555);
+	/* Reset to get a clean state */
+	chip_writeb(0xFF, bios);
 
 	return status;
 }
diff --git a/stm50flw0x0x.c b/stm50flw0x0x.c
index 3a90d6b..8cbafe2 100644
--- a/stm50flw0x0x.c
+++ b/stm50flw0x0x.c
@@ -42,49 +42,10 @@
 
 int probe_stm50flw0x0x(struct flashchip *flash)
 {
-	chipaddr bios = flash->virtual_memory;
-	uint8_t id1, id2;
-	uint32_t largeid1, largeid2;
+	int result = probe_jedec(flash);
 
-	/* Issue JEDEC Product ID Entry command */
-	chip_writeb(0xAA, bios + 0x5555);
-	programmer_delay(10);
-	chip_writeb(0x55, bios + 0x2AAA);
-	programmer_delay(10);
-	chip_writeb(0x90, bios + 0x5555);
-	programmer_delay(40);
-
-	/* Read product ID */
-	id1 = chip_readb(bios);
-	id2 = chip_readb(bios + 0x01);
-	largeid1 = id1;
-	largeid2 = id2;
-
-	/* Check if it is a continuation ID, this should be a while loop. */
-	if (id1 == 0x7F) {
-		largeid1 <<= 8;
-		id1 = chip_readb(bios + 0x100);
-		largeid1 |= id1;
-	}
-	if (id2 == 0x7F) {
-		largeid2 <<= 8;
-		id2 = chip_readb(bios + 0x101);
-		largeid2 |= id2;
-	}
-
-	/* Issue JEDEC Product ID Exit command */
-	chip_writeb(0xAA, bios + 0x5555);
-	programmer_delay(10);
-	chip_writeb(0x55, bios + 0x2AAA);
-	programmer_delay(10);
-	chip_writeb(0xF0, bios + 0x5555);
-	programmer_delay(40);
-
-	printf_debug("%s: id1 0x%02x, id2 0x%02x\n", __func__, largeid1,
-		     largeid2);
-
-	if (largeid1 != flash->manufacture_id || largeid2 != flash->model_id)
-		return 0;
+	if (!result)
+		return result;
 
 	map_flash_registers(flash);
 
diff --git a/w39v040c.c b/w39v040c.c
index 7fccd53..bfa9853 100644
--- a/w39v040c.c
+++ b/w39v040c.c
@@ -23,7 +23,11 @@
 int probe_w39v040c(struct flashchip *flash)
 {
 	chipaddr bios = flash->virtual_memory;
-	uint8_t id1, id2, lock;
+	int result = probe_jedec(flash);
+	uint8_t lock;
+
+	if (!result)
+		return result;
 
 	chip_writeb(0xAA, bios + 0x5555);
 	programmer_delay(10);
@@ -32,8 +36,6 @@
 	chip_writeb(0x90, bios + 0x5555);
 	programmer_delay(10);
 
-	id1 = chip_readb(bios);
-	id2 = chip_readb(bios + 1);
 	lock = chip_readb(bios + 0xfff2);
 
 	chip_writeb(0xAA, bios + 0x5555);
@@ -43,17 +45,9 @@
 	chip_writeb(0xF0, bios + 0x5555);
 	programmer_delay(40);
 
-	printf_debug("%s: id1 0x%02x, id2 0x%02x", __func__, id1, id2);
-	if (!oddparity(id1))
-		printf_debug(", id1 parity violation");
-	printf_debug("\n");
-	if (flash->manufacture_id == id1 && flash->model_id == id2) {
-		printf("%s: Boot block #TBL is %slocked, rest of chip #WP is %slocked.\n",
-			__func__, lock & 0x4 ? "" : "un", lock & 0x8 ? "" : "un");
-		return 1;
-	}
-
-	return 0;
+	printf("%s: Boot block #TBL is %slocked, rest of chip #WP is %slocked.\n",
+		__func__, lock & 0x4 ? "" : "un", lock & 0x8 ? "" : "un");
+	return 1;
 }
 
 int erase_w39v040c(struct flashchip *flash)
diff --git a/w39v080fa.c b/w39v080fa.c
index 96e83a8..580657f 100644
--- a/w39v080fa.c
+++ b/w39v080fa.c
@@ -22,29 +22,10 @@
 
 int probe_winbond_fwhub(struct flashchip *flash)
 {
-	chipaddr bios = flash->virtual_memory;
-	uint8_t id1, id2;
+	int result = probe_jedec(flash);
 
-	/* Product Identification Entry */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0x90, bios + 0x5555);
-	programmer_delay(10);
-
-	/* Read product ID */
-	id1 = chip_readb(bios);
-	id2 = chip_readb(bios + 0x01);
-
-	/* Product Identifixation Exit */
-	chip_writeb(0xAA, bios + 0x5555);
-	chip_writeb(0x55, bios + 0x2AAA);
-	chip_writeb(0xF0, bios + 0x5555);
-	programmer_delay(10);
-
-	printf_debug("%s: id1 0x%x, id2 0x%x\n", __func__, id1, id2);
-
-	if (id1 != flash->manufacture_id || id2 != flash->model_id)
-		return 0;
+	if (!result)
+		return result;
 
 	map_flash_registers(flash);
 
