diff --git a/edi.c b/edi.c
index 8adba16..8d0819a 100644
--- a/edi.c
+++ b/edi.c
@@ -24,11 +24,6 @@
 
 static unsigned int edi_read_buffer_length = EDI_READ_BUFFER_LENGTH_DEFAULT;
 
-static const struct ene_chip ene_kb9012 = {
-	.hwversion = ENE_KB9012_HWVERSION,
-	.ediid = ENE_KB9012_EDIID,
-};
-
 static void edi_write_cmd(unsigned char *cmd, unsigned short address, unsigned char data)
 {
 	cmd[0] = EDI_WRITE; /* EDI write command. */
@@ -146,7 +141,7 @@
 	return 0;
 }
 
-static int edi_chip_probe(const struct spi_master *spi, const struct ene_chip *chip)
+static struct found_id *edi_chip_probe(const struct spi_master *spi)
 {
 	unsigned char hwversion;
 	unsigned char ediid;
@@ -155,21 +150,30 @@
 	rc = edi_read(spi, ENE_EC_HWVERSION, &hwversion);
 	if (rc < 0) {
 		msg_cdbg("%s: reading hwversion failed\n", __func__);
-		return 0;
+		return NULL;
 	}
 
 	rc = edi_read(spi, ENE_EC_EDIID, &ediid);
 	if (rc < 0) {
 		msg_cdbg("%s: reading ediid failed\n", __func__);
-		return 0;
+		return NULL;
 	}
 
+	struct found_id *const found = calloc(1, sizeof(*found));
+	if (!found) {
+		msg_cerr("Out of memory!\n");
+		return NULL;
+	}
+
+	struct id_info *const id = &found->info.id;
+
+	id->hwversion	= hwversion;
+	id->model	= ediid;
+	id->type	= ID_EDI;
+
 	msg_cdbg("%s: hwversion 0x%02x, ediid 0x%02x\n", __func__, hwversion, ediid);
 
-	if (chip->hwversion == hwversion && chip->ediid == ediid)
-		return 1;
-
-	return 0;
+	return found;
 }
 
 static int edi_spi_enable(const struct spi_master *spi)
@@ -477,9 +481,9 @@
 		msg_perr("%s: Unable to disable EDI!\n", __func__);
 }
 
-int edi_probe_kb9012(struct flashctx *flash)
+struct found_id *probe_edi(const struct bus_probe *probe, const struct master_common *mst)
 {
-	const struct spi_master *const spi = flash->mst.spi;
+	const struct spi_master *const spi = (const struct spi_master *)mst;
 	unsigned char hwversion;
 
 	/*
@@ -493,7 +497,7 @@
 	 */
 	edi_read(spi, ENE_EC_HWVERSION, &hwversion);
 
-	return edi_chip_probe(spi, &ene_kb9012);
+	return edi_chip_probe(spi);
 }
 
 int edi_prepare(struct flashctx *flash, enum preparation_steps step)
diff --git a/flashchips.c b/flashchips.c
index 02aaf88..bd07239 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -18,6 +18,7 @@
  * GNU General Public License for more details.
  */
 
+#include "ene.h"
 #include "flash.h"
 #include "flashchips.h"
 #include "chipdrivers.h"
@@ -4187,12 +4188,14 @@
 		.name		= "KB9012 (EDI)",
 		.bustype	= BUS_SPI,
 		.id.type	= ID_EDI,
+		.id.hwversion	= ENE_KB9012_HWVERSION,
+		.id.model	= ENE_KB9012_EDIID,
 		.total_size	= 128,
 		.page_size	= 128,
 		.feature_bits	= FEATURE_ERASED_ZERO,
 		.tested		= TEST_OK_PREW,
 		.spi_cmd_set	= SPI_EDI,
-		.probe		= edi_probe_kb9012,
+		.probe		= probe_buses,
 		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
diff --git a/include/chipdrivers/edi.h b/include/chipdrivers/edi.h
index 48f24be..3a1d768 100644
--- a/include/chipdrivers/edi.h
+++ b/include/chipdrivers/edi.h
@@ -20,11 +20,14 @@
 #include <stdint.h>
 
 struct flashprog_flashctx;
+struct master_common;
+struct bus_probe;
+
+struct found_id *probe_edi(const struct bus_probe *, const struct master_common *);
 
 int edi_chip_block_erase(struct flashprog_flashctx *, unsigned int page, unsigned int size);
 int edi_chip_write(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
 int edi_chip_read(struct flashprog_flashctx *, uint8_t *buf, unsigned int start, unsigned int len);
-int edi_probe_kb9012(struct flashprog_flashctx *);
 int edi_prepare(struct flashprog_flashctx *, enum preparation_steps);
 
 #endif /* !__CHIPDRIVERS_EDI_H__ */
diff --git a/include/chipdrivers/probing.h b/include/chipdrivers/probing.h
index 561d6ef..18eb347 100644
--- a/include/chipdrivers/probing.h
+++ b/include/chipdrivers/probing.h
@@ -49,6 +49,7 @@
 struct id_info {
 	union {
 		uint32_t manufacture;
+		uint32_t hwversion;
 		uint32_t id1;
 	};
 	union {
diff --git a/include/ene.h b/include/ene.h
index e03e49b..14ca0bb 100644
--- a/include/ene.h
+++ b/include/ene.h
@@ -43,9 +43,4 @@
 #define ENE_KB9012_HWVERSION		0xc3
 #define ENE_KB9012_EDIID		0x04
 
-struct ene_chip {
-	unsigned char hwversion;
-	unsigned char ediid;
-};
-
 #endif
diff --git a/spi.c b/spi.c
index 7cacca3..15809c6 100644
--- a/spi.c
+++ b/spi.c
@@ -22,6 +22,7 @@
 #include <string.h>
 #include "flash.h"
 #include "flashchips.h"
+#include "chipdrivers/edi.h"
 #include "chipdrivers/spi.h"
 #include "chipdrivers/probing.h"
 #include "programmer.h"
@@ -173,6 +174,7 @@
 	{ 0, ID_SPI_SFDP,	probe_spi_sfdp,		NULL },
 	{ 1, ID_SPI_ST95,	probe_spi_st95,		(void *)(uintptr_t)3 },
 	{ 1, ID_SPI_ST95,	probe_spi_st95,		(void *)(uintptr_t)2 },
+	{ 2, ID_EDI,		probe_edi,		NULL },
 };
 
 static bool spi_probe_match(const struct flashchip *chip, const struct id_info_ext *found)
