diff --git a/atahpt.c b/atahpt.c
index 42741a7..5b375a0 100644
--- a/atahpt.c
+++ b/atahpt.c
@@ -53,7 +53,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int atahpt_init(void)
+static int atahpt_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uint32_t reg32;
diff --git a/atapromise.c b/atapromise.c
index 0dcb8c2..dcdf4c2 100644
--- a/atapromise.c
+++ b/atapromise.c
@@ -108,7 +108,7 @@
 	}
 }
 
-static int atapromise_init(void)
+static int atapromise_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 
diff --git a/atavia.c b/atavia.c
index 34d7b73..dc7317c 100644
--- a/atavia.c
+++ b/atavia.c
@@ -121,7 +121,7 @@
 	return (atavia_offset != 0) ? atavia_offset : (void *)phys_addr;
 }
 
-static int atavia_init(void)
+static int atavia_init(struct flashprog_programmer *const prog)
 {
 	char *arg = extract_programmer_param("offset");
 	if (arg) {
diff --git a/buspirate_spi.c b/buspirate_spi.c
index 27bca8a..b2c58c6 100644
--- a/buspirate_spi.c
+++ b/buspirate_spi.c
@@ -221,7 +221,7 @@
  */
 #define BP_DIVISOR(baud) ((4000000/(baud)) - 1)
 
-static int buspirate_spi_init(void)
+static int buspirate_spi_init(struct flashprog_programmer *const prog)
 {
 	char *tmp;
 	char *dev;
diff --git a/ch341a_spi.c b/ch341a_spi.c
index 2b6413b..6a2bdfb 100644
--- a/ch341a_spi.c
+++ b/ch341a_spi.c
@@ -421,7 +421,7 @@
 	return 0;
 }
 
-static int ch341a_spi_init(void)
+static int ch341a_spi_init(struct flashprog_programmer *const prog)
 {
 	if (handle != NULL) {
 		msg_cerr("%s: handle already set! Please report a bug at flashprog@flashprog.org\n",
diff --git a/ch347_spi.c b/ch347_spi.c
index 98ae28e..aa1ee0b 100644
--- a/ch347_spi.c
+++ b/ch347_spi.c
@@ -269,7 +269,7 @@
 }
 
 /* Largely copied from ch341a_spi.c */
-static int ch347_spi_init(void)
+static int ch347_spi_init(struct flashprog_programmer *const prog)
 {
 	struct ch347_spi_data *ch347_data = calloc(1, sizeof(*ch347_data));
 	if (!ch347_data) {
diff --git a/dediprog.c b/dediprog.c
index 64caa8a..60bea4c 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -1098,7 +1098,7 @@
 	return ret;
 }
 
-static int dediprog_init(void)
+static int dediprog_init(struct flashprog_programmer *const prog)
 {
 	char *voltage, *id_str, *device, *spispeed, *target_str;
 	int spispeed_idx = 1;
diff --git a/developerbox_spi.c b/developerbox_spi.c
index ae0961e..3a9059e 100644
--- a/developerbox_spi.c
+++ b/developerbox_spi.c
@@ -134,7 +134,7 @@
 	return 0;
 }
 
-static int developerbox_spi_init(void)
+static int developerbox_spi_init(struct flashprog_programmer *const prog)
 {
 	if (libusb_init(&usb_ctx)) {
 		msg_perr("Could not initialize libusb!\n");
diff --git a/digilent_spi.c b/digilent_spi.c
index f563bdc..afdbcd3 100644
--- a/digilent_spi.c
+++ b/digilent_spi.c
@@ -371,7 +371,7 @@
 	{ NULL,		0 },
 };
 
-static int digilent_spi_init(void)
+static int digilent_spi_init(struct flashprog_programmer *const prog)
 {
 	char *p;
 	uint32_t speed_hz = spispeeds[0].speed;
diff --git a/dirtyjtag_spi.c b/dirtyjtag_spi.c
index adedc0d..06099de 100644
--- a/dirtyjtag_spi.c
+++ b/dirtyjtag_spi.c
@@ -279,7 +279,7 @@
 	.probe_opcode	= default_spi_probe_opcode,
 };
 
-static int dirtyjtag_spi_init(void)
+static int dirtyjtag_spi_init(struct flashprog_programmer *const prog)
 {
 	struct spi_master dirtyjtag_spi = spi_master_dirtyjtag_spi;
 	struct libusb_device_handle *handle = NULL;
diff --git a/drkaiser.c b/drkaiser.c
index 40cd157..0a67f09 100644
--- a/drkaiser.c
+++ b/drkaiser.c
@@ -53,7 +53,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int drkaiser_init(void)
+static int drkaiser_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uint32_t addr;
diff --git a/dummyflasher.c b/dummyflasher.c
index a469d6d..548c16f 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -436,7 +436,7 @@
 	return 0;
 }
 
-static int dummy_init(void)
+static int dummy_init(struct flashprog_programmer *const prog)
 {
 	int ret = 0;
 	struct stat image_stat;
diff --git a/flashprog.c b/flashprog.c
index e8ab305..4e669c7 100644
--- a/flashprog.c
+++ b/flashprog.c
@@ -156,7 +156,7 @@
 	programmer_may_write = true;
 
 	msg_pdbg("Initializing %s programmer\n", programmer->name);
-	ret = programmer->init();
+	ret = programmer->init(prog);
 	if (programmer_param && strlen(programmer_param)) {
 		if (ret != 0) {
 			/* It is quite possible that any unhandled programmer parameter would have been valid,
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 4f9fbeb..020eadc 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -300,7 +300,7 @@
 };
 
 /* Returns 0 upon success, a negative number upon errors. */
-static int ft2232_spi_init(void)
+static int ft2232_spi_init(struct flashprog_programmer *const prog)
 {
 	int ret;
 	unsigned char buf[512];
diff --git a/gfxnvidia.c b/gfxnvidia.c
index 7eb633d..5055b8b 100644
--- a/gfxnvidia.c
+++ b/gfxnvidia.c
@@ -75,7 +75,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int gfxnvidia_init(void)
+static int gfxnvidia_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uint32_t reg32;
diff --git a/include/programmer.h b/include/programmer.h
index f45aab9..2684b08 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -40,6 +40,7 @@
 	const char *device_name;
 };
 
+struct flashprog_programmer;
 struct programmer_entry {
 	const char *name;
 	const enum programmer_type type;
@@ -48,7 +49,7 @@
 		const char *const note;
 	} devs;
 
-	int (*init) (void);
+	int (*init) (struct flashprog_programmer *);
 
 	void (*delay) (unsigned int usecs);
 };
@@ -377,9 +378,9 @@
 
 #if CONFIG_LINUX_MTD == 1 && LINUX_MTD_AS_INTERNAL == 1
 /* trivial wrapper to avoid cluttering internal_init() with #if */
-static inline int try_mtd(void) { return programmer_linux_mtd.init(); };
+static inline int try_mtd(struct flashprog_programmer *prog) { return programmer_linux_mtd.init(prog); };
 #else
-static inline int try_mtd(void) { return 1; };
+static inline int try_mtd(struct flashprog_programmer *prog) { return 1; };
 #endif
 
 /* mcp6x_spi.c */
diff --git a/internal.c b/internal.c
index 5d85758..57064a7 100644
--- a/internal.c
+++ b/internal.c
@@ -162,7 +162,7 @@
 	return 0;
 }
 
-static int internal_init(void)
+static int internal_init(struct flashprog_programmer *const prog)
 {
 	int ret = 0;
 	bool force_laptop;
@@ -189,7 +189,7 @@
 	 */
 	internal_buses_supported = BUS_NONSPI;
 
-	if (try_mtd() == 0) {
+	if (try_mtd(prog) == 0) {
 		ret = 0;
 		goto internal_init_exit;
 	}
diff --git a/it8212.c b/it8212.c
index 5657bca..4cf0e80 100644
--- a/it8212.c
+++ b/it8212.c
@@ -46,7 +46,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int it8212_init(void)
+static int it8212_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = pcidev_init(devs_it8212, PCI_ROM_ADDRESS);
 	if (!dev)
diff --git a/jlink_spi.c b/jlink_spi.c
index beabe63..b234b0e 100644
--- a/jlink_spi.c
+++ b/jlink_spi.c
@@ -195,7 +195,7 @@
 	return 0;
 }
 
-static int jlink_spi_init(void)
+static int jlink_spi_init(struct flashprog_programmer *const prog)
 {
 	char *arg;
 	unsigned long speed = 0;
diff --git a/linux_gpio2_spi.c b/linux_gpio2_spi.c
index fd3cdf1..ef162b8 100644
--- a/linux_gpio2_spi.c
+++ b/linux_gpio2_spi.c
@@ -108,7 +108,7 @@
 	return 0;
 }
 
-static int linux_gpio_spi_init(void)
+static int linux_gpio_spi_init(struct flashprog_programmer *const prog)
 {
 	struct linux_gpio_spi *gpio_spi = NULL;
 	const char *param_str[] = { "cs", "sck", "mosi", "miso", "gpiochip" };
diff --git a/linux_gpio_spi.c b/linux_gpio_spi.c
index 1e95c16..8ce5b07 100644
--- a/linux_gpio_spi.c
+++ b/linux_gpio_spi.c
@@ -83,7 +83,7 @@
 	return 0;
 }
 
-static int linux_gpio_spi_init(void)
+static int linux_gpio_spi_init(struct flashprog_programmer *const prog)
 {
 	struct linux_gpio_spi *data = NULL;
 	struct gpiod_chip *chip = NULL;
diff --git a/linux_mtd.c b/linux_mtd.c
index 0960025..ca05305 100644
--- a/linux_mtd.c
+++ b/linux_mtd.c
@@ -374,7 +374,7 @@
 	return 0;
 }
 
-static int linux_mtd_init(void)
+static int linux_mtd_init(struct flashprog_programmer *const prog)
 {
 	char *param;
 	int dev_num = 0;
diff --git a/linux_spi.c b/linux_spi.c
index e8353d5..aac232a 100644
--- a/linux_spi.c
+++ b/linux_spi.c
@@ -112,7 +112,7 @@
 	return result;
 }
 
-static int linux_spi_init(void)
+static int linux_spi_init(struct flashprog_programmer *const prog)
 {
 	char *p, *endp, *dev;
 	uint32_t speed_hz = 2 * 1000 * 1000;
diff --git a/mstarddc_spi.c b/mstarddc_spi.c
index 911c450..9888d1f 100644
--- a/mstarddc_spi.c
+++ b/mstarddc_spi.c
@@ -66,7 +66,7 @@
 }
 
 /* Returns 0 upon success, a negative number upon errors. */
-static int mstarddc_spi_init(void)
+static int mstarddc_spi_init(struct flashprog_programmer *const prog)
 {
 	int ret = 0;
 
diff --git a/ni845x_spi.c b/ni845x_spi.c
index 0e71e21..beb5ea5 100644
--- a/ni845x_spi.c
+++ b/ni845x_spi.c
@@ -389,7 +389,7 @@
 		ni845x_report_error("ni845xCloseFindDeviceHandle", tmp);
 }
 
-int ni845x_spi_init(void)
+int ni845x_spi_init(struct flashprog_programmer *const prog)
 {
 	char *speed_str = NULL;
 	char *CS_str = NULL;
diff --git a/nic3com.c b/nic3com.c
index a8b612e..64cb259 100644
--- a/nic3com.c
+++ b/nic3com.c
@@ -82,7 +82,7 @@
 	return 0;
 }
 
-static int nic3com_init(void)
+static int nic3com_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 
diff --git a/nicintel.c b/nicintel.c
index f564dc2..1c63081 100644
--- a/nicintel.c
+++ b/nicintel.c
@@ -56,7 +56,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int nicintel_init(void)
+static int nicintel_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uintptr_t addr;
diff --git a/nicintel_eeprom.c b/nicintel_eeprom.c
index 0128d08..ca301e0 100644
--- a/nicintel_eeprom.c
+++ b/nicintel_eeprom.c
@@ -465,7 +465,7 @@
 	return ret;
 }
 
-static int nicintel_ee_init(void)
+static int nicintel_ee_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = pcidev_init(nics_intel_ee, PCI_BASE_ADDRESS_0);
 	if (!dev)
diff --git a/nicintel_spi.c b/nicintel_spi.c
index ed94d93..1de3fd0 100644
--- a/nicintel_spi.c
+++ b/nicintel_spi.c
@@ -265,7 +265,7 @@
 	return 0;
 }
 
-static int nicintel_spi_init(void)
+static int nicintel_spi_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 
diff --git a/nicnatsemi.c b/nicnatsemi.c
index 8b0b68f..65a42fa 100644
--- a/nicnatsemi.c
+++ b/nicnatsemi.c
@@ -48,7 +48,7 @@
 	.chip_writen	= fallback_chip_writen,
 };
 
-static int nicnatsemi_init(void)
+static int nicnatsemi_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 
diff --git a/nicrealtek.c b/nicrealtek.c
index d635705..2f51495 100644
--- a/nicrealtek.c
+++ b/nicrealtek.c
@@ -55,7 +55,7 @@
 	return 0;
 }
 
-static int nicrealtek_init(void)
+static int nicrealtek_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 
diff --git a/ogp_spi.c b/ogp_spi.c
index 5a1b969..5eeda98 100644
--- a/ogp_spi.c
+++ b/ogp_spi.c
@@ -93,7 +93,7 @@
 	.half_period	= 0,
 };
 
-static int ogp_spi_init(void)
+static int ogp_spi_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	char *type;
diff --git a/pickit2_spi.c b/pickit2_spi.c
index 50e6017..13a47f9 100644
--- a/pickit2_spi.c
+++ b/pickit2_spi.c
@@ -389,7 +389,7 @@
 	return ret;
 }
 
-static int pickit2_spi_init(void)
+static int pickit2_spi_init(struct flashprog_programmer *const prog)
 {
 	uint8_t buf[CMD_LENGTH] = {
 		CMD_EXEC_SCRIPT,
diff --git a/pony_spi.c b/pony_spi.c
index 2d423ef..1b1f939 100644
--- a/pony_spi.c
+++ b/pony_spi.c
@@ -110,7 +110,7 @@
 	return ret;
 }
 
-static int pony_spi_init(void)
+static int pony_spi_init(struct flashprog_programmer *const prog)
 {
 	int i, data_out;
 	char *arg = NULL;
diff --git a/rayer_spi.c b/rayer_spi.c
index 009e02f..f8bac35 100644
--- a/rayer_spi.c
+++ b/rayer_spi.c
@@ -163,7 +163,7 @@
 	.half_period	= 0,
 };
 
-static int rayer_spi_init(void)
+static int rayer_spi_init(struct flashprog_programmer *const flashprog)
 {
 	const struct rayer_programmer *prog = rayer_spi_types;
 	char *arg = NULL;
diff --git a/satamv.c b/satamv.c
index 735495c..cefe4c4 100644
--- a/satamv.c
+++ b/satamv.c
@@ -70,7 +70,7 @@
  * 0xc08	PCI BAR2 (Flash/NVRAM) Control
  * 0x1046c	Flash Parameters
  */
-static int satamv_init(void)
+static int satamv_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uintptr_t addr;
diff --git a/satasii.c b/satasii.c
index 21ea879..a638cdb 100644
--- a/satasii.c
+++ b/satasii.c
@@ -65,7 +65,7 @@
 	return ctrl_reg;
 }
 
-static int satasii_init(void)
+static int satasii_init(struct flashprog_programmer *const prog)
 {
 	struct pci_dev *dev = NULL;
 	uint32_t addr;
diff --git a/serprog.c b/serprog.c
index 458fa91..50ec327 100644
--- a/serprog.c
+++ b/serprog.c
@@ -358,7 +358,7 @@
 
 static enum chipbustype serprog_buses_supported = BUS_NONE;
 
-static int serprog_init(void)
+static int serprog_init(struct flashprog_programmer *const prog)
 {
 	uint16_t iface;
 	unsigned char pgmname[17];
diff --git a/stlinkv3_spi.c b/stlinkv3_spi.c
index a1d062b..b15c703 100644
--- a/stlinkv3_spi.c
+++ b/stlinkv3_spi.c
@@ -448,7 +448,7 @@
 	.probe_opcode	= default_spi_probe_opcode,
 };
 
-static int stlinkv3_spi_init(void)
+static int stlinkv3_spi_init(struct flashprog_programmer *const prog)
 {
 	uint16_t sck_freq_kHz = 1000;	// selecting 1 MHz SCK is a good bet
 	char *speed_str = NULL;
diff --git a/usbblaster_spi.c b/usbblaster_spi.c
index 954967e..5be423b 100644
--- a/usbblaster_spi.c
+++ b/usbblaster_spi.c
@@ -72,7 +72,7 @@
 
 
 /* Returns 0 upon success, a negative number upon errors. */
-static int usbblaster_spi_init(void)
+static int usbblaster_spi_init(struct flashprog_programmer *const prog)
 {
 	uint8_t buf[BUF_SIZE + 1] = { 0 };
 
