diff --git a/atahpt.c b/atahpt.c
index 05b11e9..d0ef23b 100644
--- a/atahpt.c
+++ b/atahpt.c
@@ -16,7 +16,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "platform/pci.h"
@@ -38,10 +37,8 @@
 	{0},
 };
 
-static void atahpt_chip_writeb(const struct flashctx *flash, uint8_t val,
-			       chipaddr addr);
-static uint8_t atahpt_chip_readb(const struct flashctx *flash,
-				 const chipaddr addr);
+static void atahpt_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t atahpt_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_atahpt = {
 	.chip_readb	= atahpt_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -77,15 +74,13 @@
 	return register_par_master(&par_master_atahpt, BUS_PARALLEL, 0, 0, NULL);
 }
 
-static void atahpt_chip_writeb(const struct flashctx *flash, uint8_t val,
-			       chipaddr addr)
+static void atahpt_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR);
 	OUTB(val, io_base_addr + BIOS_ROM_DATA);
 }
 
-static uint8_t atahpt_chip_readb(const struct flashctx *flash,
-				 const chipaddr addr)
+static uint8_t atahpt_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR);
 	return INB(io_base_addr + BIOS_ROM_DATA);
diff --git a/atapromise.c b/atapromise.c
index 3d50e54..4b019a2 100644
--- a/atapromise.c
+++ b/atapromise.c
@@ -16,7 +16,6 @@
 
 #include <string.h>
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "hwaccess_physmap.h"
@@ -53,8 +52,8 @@
 	{0},
 };
 
-static void atapromise_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static uint8_t atapromise_chip_readb(const struct flashctx *flash, const chipaddr addr);
+static void atapromise_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t atapromise_chip_readb(const struct par_master *, chipaddr);
 static void *atapromise_map(const char *descr, uintptr_t phys_addr, size_t len);
 
 static const struct par_master par_master_atapromise = {
@@ -116,7 +115,7 @@
 	return register_par_master(&par_master_atapromise, BUS_PARALLEL, 0, rom_size, NULL);
 }
 
-static void atapromise_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
+static void atapromise_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	uint32_t data;
 
@@ -124,7 +123,7 @@
 	OUTL(data, io_base_addr + 0x14);
 }
 
-static uint8_t atapromise_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t atapromise_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return pci_mmio_readb(atapromise_bar + (addr & ADDR_MASK));
 }
diff --git a/atavia.c b/atavia.c
index bc70268..9182af5 100644
--- a/atavia.c
+++ b/atavia.c
@@ -18,7 +18,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include "flash.h"
 #include "programmer.h"
 #include "platform/pci.h"
 
@@ -54,8 +53,8 @@
 	{0},
 };
 
-static void atavia_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static uint8_t atavia_chip_readb(const struct flashctx *flash, const chipaddr addr);
+static void atavia_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t atavia_chip_readb(const struct par_master *, chipaddr);
 static void *atavia_map(const char *descr, uintptr_t phys_addr, size_t len);
 static const struct par_master lpc_master_atavia = {
 	.chip_readb	= atavia_chip_readb,
@@ -162,7 +161,7 @@
 	return register_par_master(&lpc_master_atavia, BUS_LPC, 0, 0, NULL);
 }
 
-static void atavia_chip_writeb(const struct flashctx *flash, uint8_t val, const chipaddr addr)
+static void atavia_chip_writeb(const struct par_master *par, uint8_t val, const chipaddr addr)
 {
 	msg_pspew("%s: 0x%02x to 0x%*" PRIxPTR ".\n", __func__, val, PRIxPTR_WIDTH, addr);
 	pci_write_long(dev, BROM_ADDR, (addr & ~3));
@@ -174,7 +173,7 @@
 	}
 }
 
-static uint8_t atavia_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t atavia_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	pci_write_long(dev, BROM_ADDR, (addr & ~3));
 	pci_write_byte(dev, BROM_ACCESS, BROM_TRIGGER | ENABLE_BYTE(addr));
diff --git a/drkaiser.c b/drkaiser.c
index 5634b3a..a7fc84b 100644
--- a/drkaiser.c
+++ b/drkaiser.c
@@ -15,7 +15,6 @@
  */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_physmap.h"
 #include "platform/pci.h"
@@ -38,10 +37,8 @@
 
 static uint8_t *drkaiser_bar;
 
-static void drkaiser_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr);
-static uint8_t drkaiser_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr);
+static void drkaiser_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t drkaiser_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_drkaiser = {
 	.chip_readb	= drkaiser_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -77,14 +74,12 @@
 	return register_par_master(&par_master_drkaiser, BUS_PARALLEL, 0, 128*KiB, NULL);
 }
 
-static void drkaiser_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr)
+static void drkaiser_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	pci_mmio_writeb(val, drkaiser_bar + (addr & DRKAISER_MEMMAP_MASK));
 }
 
-static uint8_t drkaiser_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr)
+static uint8_t drkaiser_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return pci_mmio_readb(drkaiser_bar + (addr & DRKAISER_MEMMAP_MASK));
 }
diff --git a/dummyflasher.c b/dummyflasher.c
index 9f27d91..b9357ea 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -106,14 +106,14 @@
 				  const unsigned char *writearr, unsigned char *readarr);
 static int dummy_spi_write_256(struct flashctx *flash, const uint8_t *buf,
 			       unsigned int start, unsigned int len);
-static void dummy_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static void dummy_chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr);
-static void dummy_chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr);
-static void dummy_chip_writen(const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len);
-static uint8_t dummy_chip_readb(const struct flashctx *flash, const chipaddr addr);
-static uint16_t dummy_chip_readw(const struct flashctx *flash, const chipaddr addr);
-static uint32_t dummy_chip_readl(const struct flashctx *flash, const chipaddr addr);
-static void dummy_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len);
+static void dummy_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static void dummy_chip_writew(const struct par_master *, uint16_t val, chipaddr);
+static void dummy_chip_writel(const struct par_master *, uint32_t val, chipaddr);
+static void dummy_chip_writen(const struct par_master *, const uint8_t *buf, chipaddr, size_t len);
+static uint8_t dummy_chip_readb(const struct par_master *, chipaddr);
+static uint16_t dummy_chip_readw(const struct par_master *, chipaddr);
+static uint32_t dummy_chip_readl(const struct par_master *, chipaddr);
+static void dummy_chip_readn(const struct par_master *, uint8_t *buf, chipaddr, size_t len);
 static bool dummy_spi_probe_opcode(const struct flashctx *flash, uint8_t opcode);
 static void *dummy_map(const char *descr, uintptr_t phys_addr, size_t len);
 static void dummy_unmap(void *virt_addr, size_t len);
@@ -538,22 +538,22 @@
 	msg_pspew("%s: Unmapping 0x%zx bytes at %p\n", __func__, len, virt_addr);
 }
 
-static void dummy_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
+static void dummy_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	msg_pspew("%s: addr=0x%" PRIxPTR ", val=0x%02x\n", __func__, addr, val);
 }
 
-static void dummy_chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr)
+static void dummy_chip_writew(const struct par_master *par, uint16_t val, chipaddr addr)
 {
 	msg_pspew("%s: addr=0x%" PRIxPTR ", val=0x%04x\n", __func__, addr, val);
 }
 
-static void dummy_chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr)
+static void dummy_chip_writel(const struct par_master *par, uint32_t val, chipaddr addr)
 {
 	msg_pspew("%s: addr=0x%" PRIxPTR ", val=0x%08x\n", __func__, addr, val);
 }
 
-static void dummy_chip_writen(const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len)
+static void dummy_chip_writen(const struct par_master *par, const uint8_t *buf, chipaddr addr, size_t len)
 {
 	size_t i;
 	msg_pspew("%s: addr=0x%" PRIxPTR ", len=0x%zx, writing data (hex):", __func__, addr, len);
@@ -564,25 +564,25 @@
 	}
 }
 
-static uint8_t dummy_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t dummy_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	msg_pspew("%s:  addr=0x%" PRIxPTR ", returning 0xff\n", __func__, addr);
 	return 0xff;
 }
 
-static uint16_t dummy_chip_readw(const struct flashctx *flash, const chipaddr addr)
+static uint16_t dummy_chip_readw(const struct par_master *par, const chipaddr addr)
 {
 	msg_pspew("%s:  addr=0x%" PRIxPTR ", returning 0xffff\n", __func__, addr);
 	return 0xffff;
 }
 
-static uint32_t dummy_chip_readl(const struct flashctx *flash, const chipaddr addr)
+static uint32_t dummy_chip_readl(const struct par_master *par, const chipaddr addr)
 {
 	msg_pspew("%s:  addr=0x%" PRIxPTR ", returning 0xffffffff\n", __func__, addr);
 	return 0xffffffff;
 }
 
-static void dummy_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len)
+static void dummy_chip_readn(const struct par_master *par, uint8_t *buf, const chipaddr addr, size_t len)
 {
 	msg_pspew("%s:  addr=0x%" PRIxPTR ", len=0x%zx, returning array of 0xff\n", __func__, addr, len);
 	memset(buf, 0xff, len);
diff --git a/gfxnvidia.c b/gfxnvidia.c
index c3e08d8..1fba838 100644
--- a/gfxnvidia.c
+++ b/gfxnvidia.c
@@ -17,7 +17,6 @@
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_physmap.h"
 #include "platform/pci.h"
@@ -60,10 +59,8 @@
 	{0},
 };
 
-static void gfxnvidia_chip_writeb(const struct flashctx *flash, uint8_t val,
-				  chipaddr addr);
-static uint8_t gfxnvidia_chip_readb(const struct flashctx *flash,
-				    const chipaddr addr);
+static void gfxnvidia_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t gfxnvidia_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_gfxnvidia = {
 	.chip_readb	= gfxnvidia_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -105,14 +102,12 @@
 	return register_par_master(&par_master_gfxnvidia, BUS_PARALLEL, 0, 0, NULL);
 }
 
-static void gfxnvidia_chip_writeb(const struct flashctx *flash, uint8_t val,
-				  chipaddr addr)
+static void gfxnvidia_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	pci_mmio_writeb(val, nvidia_bar + (addr & GFXNVIDIA_MEMMAP_MASK));
 }
 
-static uint8_t gfxnvidia_chip_readb(const struct flashctx *flash,
-				    const chipaddr addr)
+static uint8_t gfxnvidia_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return pci_mmio_readb(nvidia_bar + (addr & GFXNVIDIA_MEMMAP_MASK));
 }
diff --git a/include/programmer.h b/include/programmer.h
index 9249f5c..589765b 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -447,14 +447,14 @@
 
 	uintptr_t rom_base;
 
-	void (*chip_writeb) (const struct flashctx *flash, uint8_t val, chipaddr addr);
-	void (*chip_writew) (const struct flashctx *flash, uint16_t val, chipaddr addr);
-	void (*chip_writel) (const struct flashctx *flash, uint32_t val, chipaddr addr);
-	void (*chip_writen) (const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len);
-	uint8_t (*chip_readb) (const struct flashctx *flash, const chipaddr addr);
-	uint16_t (*chip_readw) (const struct flashctx *flash, const chipaddr addr);
-	uint32_t (*chip_readl) (const struct flashctx *flash, const chipaddr addr);
-	void (*chip_readn) (const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len);
+	void (*chip_writeb) (const struct par_master *, uint8_t val, chipaddr addr);
+	void (*chip_writew) (const struct par_master *, uint16_t val, chipaddr addr);
+	void (*chip_writel) (const struct par_master *, uint32_t val, chipaddr addr);
+	void (*chip_writen) (const struct par_master *, const uint8_t *buf, chipaddr addr, size_t len);
+	uint8_t (*chip_readb) (const struct par_master *, const chipaddr addr);
+	uint16_t (*chip_readw) (const struct par_master *, const chipaddr addr);
+	uint32_t (*chip_readl) (const struct par_master *, const chipaddr addr);
+	void (*chip_readn) (const struct par_master *, uint8_t *buf, const chipaddr addr, size_t len);
 
 	void *(*map_flash) (const char *descr, uintptr_t phys_addr, size_t len);
 	void (*unmap_flash) (void *virt_addr, size_t len);
@@ -467,12 +467,12 @@
 /* programmer.c */
 void *fallback_map(const char *descr, uintptr_t phys_addr, size_t len);
 void fallback_unmap(void *virt_addr, size_t len);
-void fallback_chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr);
-void fallback_chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr);
-void fallback_chip_writen(const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len);
-uint16_t fallback_chip_readw(const struct flashctx *flash, const chipaddr addr);
-uint32_t fallback_chip_readl(const struct flashctx *flash, const chipaddr addr);
-void fallback_chip_readn(const struct flashctx *flash, uint8_t *buf, const chipaddr addr, size_t len);
+void fallback_chip_writew(const struct par_master *, uint16_t val, chipaddr);
+void fallback_chip_writel(const struct par_master *, uint32_t val, chipaddr);
+void fallback_chip_writen(const struct par_master *, const uint8_t *buf, chipaddr, size_t len);
+uint16_t fallback_chip_readw(const struct par_master *, chipaddr);
+uint32_t fallback_chip_readl(const struct par_master *, chipaddr);
+void fallback_chip_readn(const struct par_master *, uint8_t *buf, chipaddr, size_t len);
 #define DEFAULT_MAX_DECODE_PARALLEL (16*MiB)
 #define MAX_ROM_DECODE_UNLIMITED UINT32_MAX
 struct registered_master {
diff --git a/internal.c b/internal.c
index e383809..21066e4 100644
--- a/internal.c
+++ b/internal.c
@@ -18,7 +18,6 @@
 #include <string.h>
 #include <stdbool.h>
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_physmap.h"
 #include "platform/pci.h"
@@ -61,20 +60,13 @@
 int is_laptop = 0;
 bool laptop_ok = false;
 
-static void internal_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr);
-static void internal_chip_writew(const struct flashctx *flash, uint16_t val,
-				 chipaddr addr);
-static void internal_chip_writel(const struct flashctx *flash, uint32_t val,
-				 chipaddr addr);
-static uint8_t internal_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr);
-static uint16_t internal_chip_readw(const struct flashctx *flash,
-				    const chipaddr addr);
-static uint32_t internal_chip_readl(const struct flashctx *flash,
-				    const chipaddr addr);
-static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf,
-				const chipaddr addr, size_t len);
+static void internal_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static void internal_chip_writew(const struct par_master *, uint16_t val, chipaddr);
+static void internal_chip_writel(const struct par_master *, uint32_t val, chipaddr);
+static uint8_t internal_chip_readb(const struct par_master *, chipaddr);
+static uint16_t internal_chip_readw(const struct par_master *, chipaddr);
+static uint32_t internal_chip_readl(const struct par_master *, chipaddr);
+static void internal_chip_readn(const struct par_master *, uint8_t *buf, chipaddr, size_t len);
 static const struct par_master par_master_internal = {
 	.chip_readb	= internal_chip_readb,
 	.chip_readw	= internal_chip_readw,
@@ -332,43 +324,37 @@
 	return ret;
 }
 
-static void internal_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr)
+static void internal_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	mmio_writeb(val, (void *) addr);
 }
 
-static void internal_chip_writew(const struct flashctx *flash, uint16_t val,
-				 chipaddr addr)
+static void internal_chip_writew(const struct par_master *par, uint16_t val, chipaddr addr)
 {
 	mmio_writew(val, (void *) addr);
 }
 
-static void internal_chip_writel(const struct flashctx *flash, uint32_t val,
-				 chipaddr addr)
+static void internal_chip_writel(const struct par_master *par, uint32_t val, chipaddr addr)
 {
 	mmio_writel(val, (void *) addr);
 }
 
-static uint8_t internal_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr)
+static uint8_t internal_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return mmio_readb((void *) addr);
 }
 
-static uint16_t internal_chip_readw(const struct flashctx *flash,
-				    const chipaddr addr)
+static uint16_t internal_chip_readw(const struct par_master *par, const chipaddr addr)
 {
 	return mmio_readw((void *) addr);
 }
 
-static uint32_t internal_chip_readl(const struct flashctx *flash,
-				    const chipaddr addr)
+static uint32_t internal_chip_readl(const struct par_master *par, const chipaddr addr)
 {
 	return mmio_readl((void *) addr);
 }
 
-static void internal_chip_readn(const struct flashctx *flash, uint8_t *buf,
+static void internal_chip_readn(const struct par_master *par, uint8_t *buf,
 				const chipaddr addr, size_t len)
 {
 	mmio_readn((void *)addr, buf, len);
diff --git a/it8212.c b/it8212.c
index 5daeb3b..f71694b 100644
--- a/it8212.c
+++ b/it8212.c
@@ -15,7 +15,6 @@
  */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_physmap.h"
 #include "platform/pci.h"
@@ -33,8 +32,8 @@
 #define IT8212_MEMMAP_SIZE (128 * 1024)
 #define IT8212_MEMMAP_MASK (IT8212_MEMMAP_SIZE - 1)
 
-static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static uint8_t it8212_chip_readb(const struct flashctx *flash, const chipaddr addr);
+static void it8212_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t it8212_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_it8212 = {
 	.chip_readb	= it8212_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -67,12 +66,12 @@
 	return register_par_master(&par_master_it8212, BUS_PARALLEL, 0, IT8212_MEMMAP_SIZE, NULL);
 }
 
-static void it8212_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
+static void it8212_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	pci_mmio_writeb(val, it8212_bar + (addr & IT8212_MEMMAP_MASK));
 }
 
-static uint8_t it8212_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t it8212_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return pci_mmio_readb(it8212_bar + (addr & IT8212_MEMMAP_MASK));
 }
diff --git a/nic3com.c b/nic3com.c
index fbd5e0d..4240122 100644
--- a/nic3com.c
+++ b/nic3com.c
@@ -15,7 +15,6 @@
  */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "platform/pci.h"
@@ -52,10 +51,8 @@
 	{0},
 };
 
-static void nic3com_chip_writeb(const struct flashctx *flash, uint8_t val,
-				chipaddr addr);
-static uint8_t nic3com_chip_readb(const struct flashctx *flash,
-				  const chipaddr addr);
+static void nic3com_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t nic3com_chip_readb(const struct par_master *, chipaddr);
 static int nic3com_shutdown(void *data);
 static const struct par_master par_master_nic3com = {
 	.chip_readb	= nic3com_chip_readb,
@@ -120,15 +117,13 @@
 	return register_par_master(&par_master_nic3com, BUS_PARALLEL, 0, 128*KiB, NULL);
 }
 
-static void nic3com_chip_writeb(const struct flashctx *flash, uint8_t val,
-				chipaddr addr)
+static void nic3com_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR);
 	OUTB(val, io_base_addr + BIOS_ROM_DATA);
 }
 
-static uint8_t nic3com_chip_readb(const struct flashctx *flash,
-				  const chipaddr addr)
+static uint8_t nic3com_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR);
 	return INB(io_base_addr + BIOS_ROM_DATA);
diff --git a/nicintel.c b/nicintel.c
index 1d9a2a7..af5689e 100644
--- a/nicintel.c
+++ b/nicintel.c
@@ -16,7 +16,6 @@
 /* Datasheet: http://download.intel.com/design/network/datashts/82559_Fast_Ethernet_Multifunction_PCI_Cardbus_Controller_Datasheet.pdf */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_physmap.h"
 #include "platform/pci.h"
@@ -41,10 +40,8 @@
 
 #define CSR_FCR 0x0c
 
-static void nicintel_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr);
-static uint8_t nicintel_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr);
+static void nicintel_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t nicintel_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_nicintel = {
 	.chip_readb	= nicintel_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -96,14 +93,12 @@
 	return register_par_master(&par_master_nicintel, BUS_PARALLEL, 0, NICINTEL_MEMMAP_SIZE, NULL);
 }
 
-static void nicintel_chip_writeb(const struct flashctx *flash, uint8_t val,
-				 chipaddr addr)
+static void nicintel_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	pci_mmio_writeb(val, nicintel_bar + (addr & NICINTEL_MEMMAP_MASK));
 }
 
-static uint8_t nicintel_chip_readb(const struct flashctx *flash,
-				   const chipaddr addr)
+static uint8_t nicintel_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return pci_mmio_readb(nicintel_bar + (addr & NICINTEL_MEMMAP_MASK));
 }
diff --git a/nicnatsemi.c b/nicnatsemi.c
index 57a326a..8a45628 100644
--- a/nicnatsemi.c
+++ b/nicnatsemi.c
@@ -15,7 +15,6 @@
  */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "platform/pci.h"
@@ -33,10 +32,8 @@
 	{0},
 };
 
-static void nicnatsemi_chip_writeb(const struct flashctx *flash, uint8_t val,
-				   chipaddr addr);
-static uint8_t nicnatsemi_chip_readb(const struct flashctx *flash,
-				     const chipaddr addr);
+static void nicnatsemi_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t nicnatsemi_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_nicnatsemi = {
 	.chip_readb	= nicnatsemi_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -73,8 +70,7 @@
 	return register_par_master(&par_master_nicnatsemi, BUS_PARALLEL, 0, 128*KiB, NULL);
 }
 
-static void nicnatsemi_chip_writeb(const struct flashctx *flash, uint8_t val,
-				   chipaddr addr)
+static void nicnatsemi_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	OUTL((uint32_t)addr & 0x0001FFFF, io_base_addr + BOOT_ROM_ADDR);
 	/*
@@ -88,8 +84,7 @@
 	OUTB(val, io_base_addr + BOOT_ROM_DATA);
 }
 
-static uint8_t nicnatsemi_chip_readb(const struct flashctx *flash,
-				     const chipaddr addr)
+static uint8_t nicnatsemi_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	OUTL(((uint32_t)addr & 0x0001FFFF), io_base_addr + BOOT_ROM_ADDR);
 	/*
diff --git a/nicrealtek.c b/nicrealtek.c
index e676e99..1361129 100644
--- a/nicrealtek.c
+++ b/nicrealtek.c
@@ -15,7 +15,6 @@
  */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "platform/pci.h"
@@ -34,8 +33,8 @@
 	{0},
 };
 
-static void nicrealtek_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static uint8_t nicrealtek_chip_readb(const struct flashctx *flash, const chipaddr addr);
+static void nicrealtek_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t nicrealtek_chip_readb(const struct par_master *, chipaddr);
 static int nicrealtek_shutdown(void *data);
 static const struct par_master par_master_nicrealtek = {
 	.chip_readb	= nicrealtek_chip_readb,
@@ -87,7 +86,7 @@
 	return register_par_master(&par_master_nicrealtek, BUS_PARALLEL, 0, 0, NULL);
 }
 
-static void nicrealtek_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
+static void nicrealtek_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	/* Output addr and data, set WE to 0, set OE to 1, set CS to 0,
 	 * enable software access.
@@ -101,7 +100,7 @@
 	     io_base_addr + bios_rom_addr);
 }
 
-static uint8_t nicrealtek_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t nicrealtek_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	uint8_t val;
 
diff --git a/parallel.c b/parallel.c
index d8a751e..1ef7305 100644
--- a/parallel.c
+++ b/parallel.c
@@ -24,43 +24,43 @@
 
 void chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
 {
-	flash->mst.par->chip_writeb(flash, val, addr);
+	flash->mst.par->chip_writeb(flash->mst.par, val, addr);
 }
 
 void chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr)
 {
-	flash->mst.par->chip_writew(flash, val, addr);
+	flash->mst.par->chip_writew(flash->mst.par, val, addr);
 }
 
 void chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr)
 {
-	flash->mst.par->chip_writel(flash, val, addr);
+	flash->mst.par->chip_writel(flash->mst.par, val, addr);
 }
 
 void chip_writen(const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len)
 {
-	flash->mst.par->chip_writen(flash, buf, addr, len);
+	flash->mst.par->chip_writen(flash->mst.par, buf, addr, len);
 }
 
 uint8_t chip_readb(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->mst.par->chip_readb(flash, addr);
+	return flash->mst.par->chip_readb(flash->mst.par, addr);
 }
 
 uint16_t chip_readw(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->mst.par->chip_readw(flash, addr);
+	return flash->mst.par->chip_readw(flash->mst.par, addr);
 }
 
 uint32_t chip_readl(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->mst.par->chip_readl(flash, addr);
+	return flash->mst.par->chip_readl(flash->mst.par, addr);
 }
 
 void chip_readn(const struct flashctx *flash, uint8_t *buf, chipaddr addr,
 		size_t len)
 {
-	flash->mst.par->chip_readn(flash, buf, addr, len);
+	flash->mst.par->chip_readn(flash->mst.par, buf, addr, len);
 }
 
 int register_par_master(const struct par_master *mst, const enum chipbustype buses,
diff --git a/programmer.c b/programmer.c
index e72eaf1..ecd73c1 100644
--- a/programmer.c
+++ b/programmer.c
@@ -30,53 +30,50 @@
 }
 
 /* Little-endian fallback for drivers not supporting 16 bit accesses */
-void fallback_chip_writew(const struct flashctx *flash, uint16_t val,
-			  chipaddr addr)
+void fallback_chip_writew(const struct par_master *par, uint16_t val, chipaddr addr)
 {
-	chip_writeb(flash, val & 0xff, addr);
-	chip_writeb(flash, (val >> 8) & 0xff, addr + 1);
+	par->chip_writeb(par, val & 0xff, addr);
+	par->chip_writeb(par, (val >> 8) & 0xff, addr + 1);
 }
 
 /* Little-endian fallback for drivers not supporting 16 bit accesses */
-uint16_t fallback_chip_readw(const struct flashctx *flash, const chipaddr addr)
+uint16_t fallback_chip_readw(const struct par_master *par, const chipaddr addr)
 {
 	uint16_t val;
-	val = chip_readb(flash, addr);
-	val |= chip_readb(flash, addr + 1) << 8;
+	val = par->chip_readb(par, addr);
+	val |= par->chip_readb(par, addr + 1) << 8;
 	return val;
 }
 
 /* Little-endian fallback for drivers not supporting 32 bit accesses */
-void fallback_chip_writel(const struct flashctx *flash, uint32_t val,
-			  chipaddr addr)
+void fallback_chip_writel(const struct par_master *par, uint32_t val, chipaddr addr)
 {
-	chip_writew(flash, val & 0xffff, addr);
-	chip_writew(flash, (val >> 16) & 0xffff, addr + 2);
+	par->chip_writew(par, val & 0xffff, addr);
+	par->chip_writew(par, (val >> 16) & 0xffff, addr + 2);
 }
 
 /* Little-endian fallback for drivers not supporting 32 bit accesses */
-uint32_t fallback_chip_readl(const struct flashctx *flash, const chipaddr addr)
+uint32_t fallback_chip_readl(const struct par_master *par, const chipaddr addr)
 {
 	uint32_t val;
-	val = chip_readw(flash, addr);
-	val |= chip_readw(flash, addr + 2) << 16;
+	val = par->chip_readw(par, addr);
+	val |= par->chip_readw(par, addr + 2) << 16;
 	return val;
 }
 
-void fallback_chip_writen(const struct flashctx *flash, const uint8_t *buf, chipaddr addr, size_t len)
+void fallback_chip_writen(const struct par_master *par, const uint8_t *buf, chipaddr addr, size_t len)
 {
 	size_t i;
 	for (i = 0; i < len; i++)
-		chip_writeb(flash, buf[i], addr + i);
+		par->chip_writeb(par, buf[i], addr + i);
 	return;
 }
 
-void fallback_chip_readn(const struct flashctx *flash, uint8_t *buf,
-			 chipaddr addr, size_t len)
+void fallback_chip_readn(const struct par_master *par, uint8_t *buf, chipaddr addr, size_t len)
 {
 	size_t i;
 	for (i = 0; i < len; i++)
-		buf[i] = chip_readb(flash, addr + i);
+		buf[i] = par->chip_readb(par, addr + i);
 	return;
 }
 
diff --git a/satamv.c b/satamv.c
index 7fec115..e304c19 100644
--- a/satamv.c
+++ b/satamv.c
@@ -17,7 +17,6 @@
 /* Datasheets are not public (yet?) */
 
 #include <stdlib.h>
-#include "flash.h"
 #include "programmer.h"
 #include "hwaccess_x86_io.h"
 #include "hwaccess_physmap.h"
@@ -39,10 +38,8 @@
 #define PCI_BAR2_CONTROL		0x00c08
 #define GPIO_PORT_CONTROL		0x104f0
 
-static void satamv_chip_writeb(const struct flashctx *flash, uint8_t val,
-			       chipaddr addr);
-static uint8_t satamv_chip_readb(const struct flashctx *flash,
-				 const chipaddr addr);
+static void satamv_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t satamv_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_satamv = {
 	.chip_readb	= satamv_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -173,15 +170,13 @@
 }
 
 /* FIXME: Prefer direct access to BAR2 if BAR2 is active. */
-static void satamv_chip_writeb(const struct flashctx *flash, uint8_t val,
-			       chipaddr addr)
+static void satamv_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	satamv_indirect_chip_writeb(val, addr);
 }
 
 /* FIXME: Prefer direct access to BAR2 if BAR2 is active. */
-static uint8_t satamv_chip_readb(const struct flashctx *flash,
-				 const chipaddr addr)
+static uint8_t satamv_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	return satamv_indirect_chip_readb(addr);
 }
diff --git a/satasii.c b/satasii.c
index c3f7bb2..54bf19e 100644
--- a/satasii.c
+++ b/satasii.c
@@ -38,8 +38,8 @@
 	{0},
 };
 
-static void satasii_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
-static uint8_t satasii_chip_readb(const struct flashctx *flash, const chipaddr addr);
+static void satasii_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t satasii_chip_readb(const struct par_master *, chipaddr);
 static const struct par_master par_master_satasii = {
 	.chip_readb	= satasii_chip_readb,
 	.chip_readw	= fallback_chip_readw,
@@ -101,7 +101,7 @@
 	return register_par_master(&par_master_satasii, BUS_PARALLEL, 0, 0, NULL);
 }
 
-static void satasii_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
+static void satasii_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	uint32_t data_reg;
 	uint32_t ctrl_reg = satasii_wait_done();
@@ -117,7 +117,7 @@
 	satasii_wait_done();
 }
 
-static uint8_t satasii_chip_readb(const struct flashctx *flash, const chipaddr addr)
+static uint8_t satasii_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	uint32_t ctrl_reg = satasii_wait_done();
 
diff --git a/serprog.c b/serprog.c
index e1d33ed..a596966 100644
--- a/serprog.c
+++ b/serprog.c
@@ -35,9 +35,7 @@
 #endif
 #include <string.h>
 #include <errno.h>
-#include "flash.h"
 #include "programmer.h"
-#include "chipdrivers.h"
 
 /* According to Serial Flasher Protocol Specification - version 1 */
 #define S_ACK			0x06
@@ -371,12 +369,9 @@
 	.probe_opcode	= default_spi_probe_opcode,
 };
 
-static void serprog_chip_writeb(const struct flashctx *flash, uint8_t val,
-				chipaddr addr);
-static uint8_t serprog_chip_readb(const struct flashctx *flash,
-				  const chipaddr addr);
-static void serprog_chip_readn(const struct flashctx *flash, uint8_t *buf,
-			       const chipaddr addr, size_t len);
+static void serprog_chip_writeb(const struct par_master *, uint8_t val, chipaddr);
+static uint8_t serprog_chip_readb(const struct par_master *, chipaddr);
+static void serprog_chip_readn(const struct par_master *, uint8_t *buf, chipaddr, size_t len);
 static void *serprog_map(const char *descr, uintptr_t phys_addr, size_t len);
 static const struct par_master par_master_serprog = {
 	.chip_readb	= serprog_chip_readb,
@@ -877,8 +872,7 @@
 	return 0;
 }
 
-static void serprog_chip_writeb(const struct flashctx *flash, uint8_t val,
-				chipaddr addr)
+static void serprog_chip_writeb(const struct par_master *par, uint8_t val, chipaddr addr)
 {
 	msg_pspew("%s\n", __func__);
 	if (sp_max_write_n) {
@@ -909,8 +903,7 @@
 	}
 }
 
-static uint8_t serprog_chip_readb(const struct flashctx *flash,
-				  const chipaddr addr)
+static uint8_t serprog_chip_readb(const struct par_master *par, const chipaddr addr)
 {
 	unsigned char c;
 	unsigned char buf[3];
@@ -954,8 +947,7 @@
 }
 
 /* The externally called version that makes sure that max_read_n is obeyed. */
-static void serprog_chip_readn(const struct flashctx *flash, uint8_t * buf,
-			       const chipaddr addr, size_t len)
+static void serprog_chip_readn(const struct par_master *par, uint8_t * buf, const chipaddr addr, size_t len)
 {
 	size_t lenm = len;
 	chipaddr addrm = addr;
