diff --git a/include/chipdrivers/memory_bus.h b/include/chipdrivers/memory_bus.h
index 758fa64..2a5e080 100644
--- a/include/chipdrivers/memory_bus.h
+++ b/include/chipdrivers/memory_bus.h
@@ -90,6 +90,10 @@
 int write_en29lv640b(struct flashprog_flashctx *, const uint8_t *buf, unsigned int start, unsigned int len);
 
 /* memory_bus.c */
+struct par_master;
+void *programmer_map_flash_data(const struct par_master *, chipsize_t, const char *descr);
+void programmer_unmap_flash_region(const struct par_master *, void *, chipsize_t);
+
 enum preparation_steps;
 int prepare_memory_access(struct flashprog_flashctx *, enum preparation_steps);
 int prepare_memory_register_access(struct flashprog_flashctx *, enum preparation_steps);
diff --git a/memory_bus.c b/memory_bus.c
index 61058b9..2a94630 100644
--- a/memory_bus.c
+++ b/memory_bus.c
@@ -22,28 +22,45 @@
 
 #include "chipdrivers/memory_bus.h"
 
-static void *programmer_map_flash_region(const struct flashctx *flash, const char *descr,
-					 uintptr_t phys_addr, size_t len)
+static void *programmer_map_flash_region(const struct par_master *par, const char *descr,
+					 uintptr_t phys_addr, chipsize_t len)
 {
 	void *ret;
-	if (flash->mst.par->map_flash)
-		ret = flash->mst.par->map_flash(descr, phys_addr, len);
+	if (par->map_flash)
+		ret = par->map_flash(descr, phys_addr, len);
 	else
 		ret = fallback_map(descr, phys_addr, len);
-	msg_gspew("%s: mapping %s from 0x%0*" PRIxPTR " to 0x%0*" PRIxPTR "\n",
-		  __func__, descr, PRIxPTR_WIDTH, phys_addr, PRIxPTR_WIDTH, (uintptr_t) ret);
+	msg_gspew("%s: mapping%s%s from 0x%0*" PRIxPTR " to 0x%0*" PRIxPTR "\n",
+		  __func__, *descr ? " " : "", descr,
+		  PRIxPTR_WIDTH, phys_addr, PRIxPTR_WIDTH, (uintptr_t)ret);
 	return ret;
 }
 
-static void programmer_unmap_flash_region(const struct flashctx *flash, void *virt_addr, size_t len)
+void programmer_unmap_flash_region(const struct par_master *par, void *virt_addr, chipsize_t len)
 {
-	if (flash->mst.par->unmap_flash)
-		flash->mst.par->unmap_flash(virt_addr, len);
+	if (par->unmap_flash)
+		par->unmap_flash(virt_addr, len);
 	else
 		fallback_unmap(virt_addr, len);
 	msg_gspew("%s: unmapped 0x%0*" PRIxPTR "\n", __func__, PRIxPTR_WIDTH, (uintptr_t)virt_addr);
 }
 
+static uintptr_t calculate_flash_data_base(const struct par_master *par, chipsize_t size)
+{
+	return par->rom_base ? par->rom_base : (0xffffffff - size + 1);
+}
+
+void *programmer_map_flash_data(const struct par_master *par, chipsize_t size, const char *descr)
+{
+	uintptr_t base = calculate_flash_data_base(par, size);
+	void *const addr = programmer_map_flash_region(par, descr, base, size);
+	if (addr == ERROR_PTR) {
+		msg_perr("Could not map flash chip%s%s at 0x%0*" PRIxPTR ".\n",
+			 *descr ? " " : "", descr, PRIxPTR_WIDTH, base);
+	}
+	return addr;
+}
+
 int prepare_memory_access(struct flashctx *flash, enum preparation_steps prep)
 {
 	const struct par_master *const par = flash->mst.par;
@@ -56,14 +73,11 @@
 	flash->virtual_registers = (chipaddr)ERROR_PTR;
 
 	const chipsize_t size = flash->chip->total_size * 1024;
-	const uintptr_t base = par->rom_base ? par->rom_base : (0xffffffff - size + 1);
-	void *const addr = programmer_map_flash_region(flash, flash->chip->name, base, size);
-	if (addr == ERROR_PTR) {
-		msg_perr("Could not map flash chip %s at 0x%0*" PRIxPTR ".\n",
-			 flash->chip->name, PRIxPTR_WIDTH, base);
+	void *const addr = programmer_map_flash_data(par, size, flash->chip->name);
+	if (addr == ERROR_PTR)
 		return 1;
-	}
-	flash->physical_memory = base;
+
+	flash->physical_memory = calculate_flash_data_base(par, size);
 	flash->virtual_memory = (chipaddr)addr;
 
 	return 0;
@@ -71,6 +85,8 @@
 
 int prepare_memory_register_access(struct flashctx *flash, enum preparation_steps prep)
 {
+	const struct par_master *const par = flash->mst.par;
+
 	if (prep == PREPARE_POST_PROBE)
 		return 0;
 
@@ -84,7 +100,7 @@
 	 */
 	const chipsize_t size = flash->chip->total_size * 1024;
 	const uintptr_t base = 0xffffffff - size - 0x400000 + 1;
-	void *const addr = programmer_map_flash_region(flash, "flash chip registers", base, size);
+	void *const addr = programmer_map_flash_region(par, "flash chip registers", base, size);
 	if (addr == ERROR_PTR) {
 		msg_pdbg2("Could not map flash chip registers %s at 0x%0*" PRIxPTR ".\n",
 			 flash->chip->name, PRIxPTR_WIDTH, base);
@@ -101,13 +117,13 @@
 	const size_t size = flashprog_flash_getsize(flash);
 
 	if (flash->virtual_registers != (chipaddr)ERROR_PTR) {
-		programmer_unmap_flash_region(flash, (void *)flash->virtual_registers, size);
+		programmer_unmap_flash_region(flash->mst.par, (void *)flash->virtual_registers, size);
 		flash->physical_registers = 0;
 		flash->virtual_registers = (chipaddr)ERROR_PTR;
 	}
 
 	if (flash->virtual_memory != (chipaddr)ERROR_PTR) {
-		programmer_unmap_flash_region(flash, (void *)flash->virtual_memory, size);
+		programmer_unmap_flash_region(flash->mst.par, (void *)flash->virtual_memory, size);
 		flash->physical_memory = 0;
 		flash->virtual_memory = (chipaddr)ERROR_PTR;
 	}
