diff --git a/cli_classic.c b/cli_classic.c
index 86d30ff..38fa7a8 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -188,6 +188,49 @@
 	return ret;
 }
 
+/* Returns the number of buses commonly supported by the current programmer and flash chip where the latter
+ * can not be completely accessed due to size/address limits of the programmer. */
+static unsigned int count_max_decode_exceedings(const struct flashctx *flash)
+{
+	unsigned int limitexceeded = 0;
+	uint32_t size = flash->chip->total_size * 1024;
+	enum chipbustype buses = flash->mst->buses_supported & flash->chip->bustype;
+
+	if ((buses & BUS_PARALLEL) && (max_rom_decode.parallel < size)) {
+		limitexceeded++;
+		msg_pdbg("Chip size %u kB is bigger than supported "
+			 "size %u kB of chipset/board/programmer "
+			 "for %s interface, "
+			 "probe/read/erase/write may fail. ", size / 1024,
+			 max_rom_decode.parallel / 1024, "Parallel");
+	}
+	if ((buses & BUS_LPC) && (max_rom_decode.lpc < size)) {
+		limitexceeded++;
+		msg_pdbg("Chip size %u kB is bigger than supported "
+			 "size %u kB of chipset/board/programmer "
+			 "for %s interface, "
+			 "probe/read/erase/write may fail. ", size / 1024,
+			 max_rom_decode.lpc / 1024, "LPC");
+	}
+	if ((buses & BUS_FWH) && (max_rom_decode.fwh < size)) {
+		limitexceeded++;
+		msg_pdbg("Chip size %u kB is bigger than supported "
+			 "size %u kB of chipset/board/programmer "
+			 "for %s interface, "
+			 "probe/read/erase/write may fail. ", size / 1024,
+			 max_rom_decode.fwh / 1024, "FWH");
+	}
+	if ((buses & BUS_SPI) && (max_rom_decode.spi < size)) {
+		limitexceeded++;
+		msg_pdbg("Chip size %u kB is bigger than supported "
+			 "size %u kB of chipset/board/programmer "
+			 "for %s interface, "
+			 "probe/read/erase/write may fail. ", size / 1024,
+			 max_rom_decode.spi / 1024, "SPI");
+	}
+	return limitexceeded;
+}
+
 int main(int argc, char *argv[])
 {
 	const struct flashchip *chip = NULL;
diff --git a/flashrom.c b/flashrom.c
index 8e10f95..820c628 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -576,49 +576,6 @@
 	return first_len;
 }
 
-/* Returns the number of buses commonly supported by the current programmer and flash chip where the latter
- * can not be completely accessed due to size/address limits of the programmer. */
-unsigned int count_max_decode_exceedings(const struct flashctx *flash)
-{
-	unsigned int limitexceeded = 0;
-	uint32_t size = flash->chip->total_size * 1024;
-	enum chipbustype buses = flash->mst->buses_supported & flash->chip->bustype;
-
-	if ((buses & BUS_PARALLEL) && (max_rom_decode.parallel < size)) {
-		limitexceeded++;
-		msg_pdbg("Chip size %u kB is bigger than supported "
-			 "size %u kB of chipset/board/programmer "
-			 "for %s interface, "
-			 "probe/read/erase/write may fail. ", size / 1024,
-			 max_rom_decode.parallel / 1024, "Parallel");
-	}
-	if ((buses & BUS_LPC) && (max_rom_decode.lpc < size)) {
-		limitexceeded++;
-		msg_pdbg("Chip size %u kB is bigger than supported "
-			 "size %u kB of chipset/board/programmer "
-			 "for %s interface, "
-			 "probe/read/erase/write may fail. ", size / 1024,
-			 max_rom_decode.lpc / 1024, "LPC");
-	}
-	if ((buses & BUS_FWH) && (max_rom_decode.fwh < size)) {
-		limitexceeded++;
-		msg_pdbg("Chip size %u kB is bigger than supported "
-			 "size %u kB of chipset/board/programmer "
-			 "for %s interface, "
-			 "probe/read/erase/write may fail. ", size / 1024,
-			 max_rom_decode.fwh / 1024, "FWH");
-	}
-	if ((buses & BUS_SPI) && (max_rom_decode.spi < size)) {
-		limitexceeded++;
-		msg_pdbg("Chip size %u kB is bigger than supported "
-			 "size %u kB of chipset/board/programmer "
-			 "for %s interface, "
-			 "probe/read/erase/write may fail. ", size / 1024,
-			 max_rom_decode.spi / 1024, "SPI");
-	}
-	return limitexceeded;
-}
-
 void unmap_flash(struct flashctx *flash)
 {
 	if (flash->virtual_registers != (chipaddr)ERROR_PTR) {
diff --git a/include/programmer.h b/include/programmer.h
index 537d139..c1bce55 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -283,7 +283,6 @@
 extern struct decode_sizes max_rom_decode;
 extern bool programmer_may_write;
 extern unsigned long flashbase;
-unsigned int count_max_decode_exceedings(const struct flashctx *flash);
 char *extract_programmer_param(const char *param_name);
 
 /* spi.c */
