diff --git a/cli_classic.c b/cli_classic.c
index 2ba971f..916845a 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -598,8 +598,6 @@
 	free(flash_args.prog_name);
 	free(flash_args.chip);
 	free(log_args.logfile);
-	/* clean up global variables */
-	chip_to_probe = NULL;
 	ret |= close_logfile();
 	return ret;
 }
diff --git a/flashprog.c b/flashprog.c
index f1bad69..113b3f6 100644
--- a/flashprog.c
+++ b/flashprog.c
@@ -36,7 +36,6 @@
 #include "version.h"
 
 const char flashprog_version[] = FLASHPROG_VERSION;
-const char *chip_to_probe = NULL;
 
 static const struct programmer_entry *programmer = NULL;
 static char *programmer_param = NULL;
@@ -646,56 +645,6 @@
 	mst->probed = true;
 }
 
-bool flashprog_chip_match(struct registered_master *const mst, const struct flashchip *const chip)
-{
-	static const char *const id_names[] = {
-		[ID_82802AB]	= "82802AB",
-		[ID_JEDEC]	= "JEDEC",
-		[ID_JEDEC_29GL]	= "JEDEC_29GL",
-		[ID_OPAQUE]	= "OPAQUE",
-		[ID_SPI_AT25F]	= "SPI_AT25F",
-		[ID_SPI_RDID]	= "SPI_RDID",
-		[ID_SPI_REMS]	= "SPI_REMS",
-		[ID_SPI_RES1]	= "SPI_RES1",
-		[ID_SPI_RES2]	= "SPI_RES2",
-		[ID_SPI_RES3]	= "SPI_RES3",
-		[ID_SPI_SFDP]	= "SPI_SFDP",
-		[ID_SPI_ST95]	= "SPI_ST95",
-		[ID_W29EE011]	= "W29EE011",
-		[ID_EDI]	= "EDI",
-	};
-
-	msg_gdbg("Probing for %s %s, %d kB: ", chip->vendor, chip->name, chip->total_size);
-
-	if (chip_to_probe) {
-		/* We are looking for a particular chip.
-		   If it can't be probed, assume it's there... */
-		if (chip->id.type == ID_NONE)
-			return true;
-		/* ...otherwise, limit the probing sequences by its properties. */
-		flashprog_bus_probe(mst, chip);
-	} else {
-		flashprog_bus_probe(mst, NULL);
-	}
-
-	struct found_id *found_id;
-	for (found_id = mst->found_ids; found_id; found_id = found_id->next) {
-		if (found_id->info.id.type != chip->id.type)
-			continue;
-
-		if (found_id->info.id.type < ARRAY_SIZE(id_names))
-			msg_cdbg("%s: id1 0x%02x, id2 0x%02x ",
-				 id_names[found_id->info.id.type],
-				 found_id->info.id.id1, found_id->info.id.id2);
-
-		if (mst->probing.match(chip, &found_id->info))
-			break;
-	}
-
-	msg_cdbg("\n");
-	return !!found_id;
-}
-
 /* Even if an error is found, the function will keep going and check the rest. */
 static int selfcheck_eraseblocks(const struct flashchip *chip, const char *label)
 {
diff --git a/include/chipdrivers/probing.h b/include/chipdrivers/probing.h
index 7bca406..5e07983 100644
--- a/include/chipdrivers/probing.h
+++ b/include/chipdrivers/probing.h
@@ -86,7 +86,6 @@
 
 struct registered_master;
 void flashprog_bus_probe(struct registered_master *, const struct flashchip *);
-bool flashprog_chip_match(struct registered_master *, const struct flashchip *);
 
 struct flashprog_chips;
 struct flashprog_flashctx;
diff --git a/include/flash.h b/include/flash.h
index e494a8c..32824a7 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -548,7 +548,6 @@
 
 /* flashprog.c */
 extern const char flashprog_version[];
-extern const char *chip_to_probe;
 char *flashbuses_to_text(enum chipbustype bustype);
 int map_flash(struct flashctx *flash);
 void unmap_flash(struct flashctx *flash);
diff --git a/libflashprog/chips.c b/libflashprog/chips.c
index ac5cdc2..12b4197 100644
--- a/libflashprog/chips.c
+++ b/libflashprog/chips.c
@@ -58,6 +58,19 @@
 	return 0;
 }
 
+static bool flashprog_bus_match_chip(struct registered_master *bus, const struct flashprog_chip *chip)
+{
+	struct found_id *found_id;
+	for (found_id = bus->found_ids; found_id; found_id = found_id->next) {
+		if (found_id->info.id.type != chip->id.type)
+			continue;
+
+		if (bus->probing.match(chip, &found_id->info))
+			break;
+	}
+	return !!found_id;
+}
+
 static int flashprog_chips_probe_bus(struct flashprog_chips *chips,
 				     struct registered_master *bus)
 {
@@ -71,7 +84,7 @@
 		     (flashchips[chip].id.model == GENERIC_DEVICE_ID)))
 			continue;
 
-		if (!flashprog_chip_match(bus, &flashchips[chip]))
+		if (!flashprog_bus_match_chip(bus, &flashchips[chip]))
 			continue;
 
 		struct chip_entry *const entry = malloc(sizeof(*entry));
@@ -116,7 +129,7 @@
 			return NULL;
 
 		flashprog_bus_probe(bus, chip);
-		if (flashprog_chip_match(bus, chip))
+		if (flashprog_bus_match_chip(bus, chip))
 			return &bus->common;
 	}
 
