diff --git a/board_enable.c b/board_enable.c
index 4cad857..305a8df 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -894,7 +894,7 @@
 	uint16_t smbba;
 	uint8_t b;
 
-	dev = pci_dev_find(0x8086, 0x7113); /* Intel PIIX4, PM/SMBus function. */
+	dev = pcidev_find(0x8086, 0x7113); /* Intel PIIX4, PM/SMBus function. */
 	if (!dev) {
 		msg_perr("\nERROR: Intel PIIX4 PM not found.\n");
 		return -1;
@@ -1046,7 +1046,7 @@
 	struct pci_dev *dev;
 	uint32_t tmp;
 
-	dev = pci_dev_find(0x10DE, 0x03EB);     /* NVIDIA MCP61 SMBus. */
+	dev = pcidev_find(0x10DE, 0x03EB);     /* NVIDIA MCP61 SMBus. */
 	if (!dev) {
 		msg_perr("\nERROR: NVIDIA MCP61 SMBus not found.\n");
 		return -1;
@@ -1282,7 +1282,7 @@
 	if (ret)
 		return ret;
 
-	dev = pci_dev_find(0x10de, 0x0364); /* NVIDIA MCP55 LPC bridge */
+	dev = pcidev_find(0x10de, 0x0364); /* NVIDIA MCP55 LPC bridge */
 	if (!dev) {
 		msg_perr("\nERROR: NVIDIA MCP55 LPC bridge not found.\n");
 		return -1;
@@ -1352,7 +1352,7 @@
 	struct pci_dev *dev;
 	uint32_t reg;
 
-	dev = pci_dev_find(0x1002, 0x4372); /* AMD SMBus controller */
+	dev = pcidev_find(0x1002, 0x4372); /* AMD SMBus controller */
 	if (!dev) {
 		msg_perr("\nERROR: AMD SMBus Controller (0x4372) not found.\n");
 		return -1;
@@ -1416,7 +1416,7 @@
 		{0}
 	};
 
-	dev = pci_dev_find(0x8086, 0x7110);	/* Intel PIIX4 ISA bridge */
+	dev = pcidev_find(0x8086, 0x7110);	/* Intel PIIX4 ISA bridge */
 	if (!dev) {
 		msg_perr("\nERROR: Intel PIIX4 ISA bridge not found.\n");
 		return -1;
@@ -1435,7 +1435,7 @@
 		return -1;
 	}
 
-	dev = pci_dev_find(0x8086, 0x7113);	/* Intel PIIX4 PM */
+	dev = pcidev_find(0x8086, 0x7113);	/* Intel PIIX4 PM */
 	if (!dev) {
 		msg_perr("\nERROR: Intel PIIX4 PM not found.\n");
 		return -1;
@@ -1952,7 +1952,7 @@
 	uint32_t base, tmp;
 
 	/* VT82C686 power management */
-	dev = pci_dev_find(0x1106, 0x3057);
+	dev = pcidev_find(0x1106, 0x3057);
 	if (!dev) {
 		msg_perr("\nERROR: VT82C686 PM device not found.\n");
 		return -1;
@@ -2025,7 +2025,7 @@
 	struct pci_dev *dev;
 	uint16_t base, temp;
 
-	dev = pci_dev_find(0x1039, 0x0962);
+	dev = pcidev_find(0x1039, 0x0962);
 	if (!dev) {
 		msg_perr("Expected south bridge not found\n");
 		return 1;
@@ -2089,7 +2089,7 @@
 	uint16_t rt_port;
 	uint8_t val;
 
-	dev = pci_dev_find(0x8086, 0x2410);	/* Intel 82801AA ISA bridge */
+	dev = pcidev_find(0x8086, 0x2410);	/* Intel 82801AA ISA bridge */
 	if (!dev) {
 		msg_perr("\nERROR: Intel 82801AA ISA bridge not found.\n");
 		return -1;
@@ -2616,13 +2616,13 @@
 		if (!cur_model || strcasecmp(cur_model, model))
 			continue;
 
-		if (!pci_dev_find(board->first_vendor, board->first_device)) {
+		if (!pcidev_find(board->first_vendor, board->first_device)) {
 			msg_pdbg("Odd. Board name \"%s\":\"%s\" matches, but first PCI device %04x:%04x "
 				 "doesn't.\n", vendor, model, board->first_vendor, board->first_device);
 			continue;
 		}
 
-		if (!pci_dev_find(board->second_vendor, board->second_device)) {
+		if (!pcidev_find(board->second_vendor, board->second_device)) {
 			msg_pdbg("Odd. Board name \"%s\":\"%s\" matches, but second PCI device %04x:%04x "
 				 "doesn't.\n", vendor, model, board->second_vendor, board->second_device);
 			continue;
@@ -2671,7 +2671,7 @@
 							board->second_card_device))
 					continue;
 			} else {
-				if (!pci_dev_find(board->second_vendor,
+				if (!pcidev_find(board->second_vendor,
 						  board->second_device))
 					continue;
 			}
diff --git a/chipset_enable.c b/chipset_enable.c
index c9b668c..ec2009f 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -1102,7 +1102,7 @@
 
 static int enable_flash_vt_vx(struct pci_dev *dev, const char *name)
 {
-	struct pci_dev *south_north = pci_dev_find(0x1106, 0xa353);
+	struct pci_dev *south_north = pcidev_find(0x1106, 0xa353);
 	if (south_north == NULL) {
 		msg_perr("Could not find South-North Module Interface Control device!\n");
 		return ERROR_FATAL;
@@ -1542,7 +1542,7 @@
 	struct pci_dev *smbusdev;
 
 	/* Look for the SMBus device. */
-	smbusdev = pci_dev_find(0x1002, 0x4372);
+	smbusdev = pcidev_find(0x1002, 0x4372);
 
 	if (!smbusdev) {
 		msg_perr("ERROR: SMBus device not found. Aborting.\n");
@@ -2150,7 +2150,7 @@
 
 	/* Now let's try to find the chipset we have... */
 	for (i = 0; chipset_enables[i].vendor_name != NULL; i++) {
-		dev = pci_dev_find(chipset_enables[i].vendor_id,
+		dev = pcidev_find(chipset_enables[i].vendor_id,
 				   chipset_enables[i].device_id);
 		if (!dev)
 			continue;
diff --git a/internal.c b/internal.c
index f412dd6..59719d2 100644
--- a/internal.c
+++ b/internal.c
@@ -26,17 +26,6 @@
 #include "hwaccess_x86_io.h"
 #endif
 
-struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device)
-{
-	struct pci_filter filter;
-
-	pci_filter_init(NULL, &filter);
-	filter.vendor = vendor;
-	filter.device = device;
-
-	return pcidev_scandev(&filter, NULL);
-}
-
 int force_boardenable = 0;
 int force_boardmismatch = 0;
 
diff --git a/pcidev.c b/pcidev.c
index 02b39b3..4425c80 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -179,6 +179,17 @@
 	return NULL;
 }
 
+struct pci_dev *pcidev_find(uint16_t vendor, uint16_t device)
+{
+	struct pci_filter filter;
+
+	pci_filter_init(NULL, &filter);
+	filter.vendor = vendor;
+	filter.device = device;
+
+	return pcidev_scandev(&filter, NULL);
+}
+
 struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass)
 {
 	struct pci_dev *temp = NULL;
diff --git a/programmer.h b/programmer.h
index 43d967c..9351d85 100644
--- a/programmer.h
+++ b/programmer.h
@@ -125,6 +125,7 @@
 struct pci_dev *pcidev_scandev(struct pci_filter *filter, struct pci_dev *start);
 struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass);
 struct pci_dev *pcidev_card_find(uint16_t vendor, uint16_t device, uint16_t card_vendor, uint16_t card_device);
+struct pci_dev *pcidev_find(uint16_t vendor, uint16_t device);
 /* rpci_write_* are reversible writes. The original PCI config space register
  * contents will be restored on shutdown.
  * To clone the pci_dev instances internally, the `pacc` global
@@ -257,9 +258,7 @@
 #define SUPERIO_VENDOR_ITE	0x1
 #define SUPERIO_VENDOR_WINBOND	0x2
 #endif
-#if NEED_PCI == 1
-struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device);
-#endif
+
 #if CONFIG_INTERNAL == 1
 extern int is_laptop;
 extern bool laptop_ok;
diff --git a/sb600spi.c b/sb600spi.c
index 705a72b..4e954a9 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -83,7 +83,7 @@
 
 static int find_smbus_dev_rev(uint16_t vendor, uint16_t device)
 {
-	struct pci_dev *smbus_dev = pci_dev_find(vendor, device);
+	struct pci_dev *smbus_dev = pcidev_find(vendor, device);
 	if (!smbus_dev) {
 		msg_pdbg("No SMBus device with ID %04X:%04X found.\n", vendor, device);
 		msg_perr("ERROR: SMBus device not found. Not enabling SPI.\n");
@@ -653,11 +653,11 @@
 	}
 
 	/* Look for the SMBus device. */
-	smbus_dev = pci_dev_find(0x1002, 0x4385);
+	smbus_dev = pcidev_find(0x1002, 0x4385);
 	if (!smbus_dev)
-		smbus_dev = pci_dev_find(0x1022, 0x780b); /* AMD FCH */
+		smbus_dev = pcidev_find(0x1022, 0x780b); /* AMD FCH */
 	if (!smbus_dev)
-		smbus_dev = pci_dev_find(0x1022, 0x790b); /* AMD FP4 */
+		smbus_dev = pcidev_find(0x1022, 0x790b); /* AMD FP4 */
 	if (!smbus_dev) {
 		msg_perr("ERROR: SMBus device not found. Not enabling SPI.\n");
 		return ERROR_NONFATAL;
