diff --git a/cli_classic.c b/cli_classic.c
index a49e045..2593f62 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -170,14 +170,14 @@
 }
 
 /* Returns true if the flash chip cannot be completely accessed due to size/address limits of the programmer. */
-static bool max_decode_exceeded(const struct registered_master *const mst, const struct flashctx *const flash)
+static bool max_decode_exceeded(const struct flashctx *const flash)
 {
-	if (flashprog_flash_getsize(flash) <= mst->max_rom_decode)
+	if (flashprog_flash_getsize(flash) <= flash->mst.common->max_rom_decode)
 		return false;
 
 	msg_pdbg("Chip size %u kB is bigger than supported size %zu kB of\n"
 		 "chipset/board/programmer for memory-mapped interface, probe/read/erase/write\n"
-		 "may fail.\n", flash->chip->total_size, mst->max_rom_decode / KiB);
+		 "may fail.\n", flash->chip->total_size, flash->mst.common->max_rom_decode / KiB);
 	return true;
 }
 
@@ -450,15 +450,12 @@
 	free(tempstr);
 
 	chip_to_probe = flash_args.chip;
-	struct registered_master *matched_master = NULL;
 	for (j = 0; j < registered_master_count; j++) {
 		startchip = 0;
 		while (chipcount < (int)ARRAY_SIZE(flashes)) {
 			startchip = probe_flash(&registered_masters[j], startchip, &flashes[chipcount], 0);
 			if (startchip == -1)
 				break;
-			if (chipcount == 0)
-				matched_master = &registered_masters[j];
 			chipcount++;
 			startchip++;
 		}
@@ -532,7 +529,7 @@
 
 	print_chip_support_status(fill_flash->chip);
 
-	if (max_decode_exceeded(matched_master, fill_flash) && !force) {
+	if (max_decode_exceeded(fill_flash) && !force) {
 		msg_cerr("This flash chip is too big for this programmer (--verbose/-V gives details).\n"
 			 "Use --force/-f to override at your own risk.\n");
 		ret = 1;
diff --git a/include/programmer.h b/include/programmer.h
index 46b50f1..04c4b42 100644
--- a/include/programmer.h
+++ b/include/programmer.h
@@ -274,6 +274,8 @@
 char *extract_programmer_param(const char *param_name);
 
 struct master_common {
+	size_t max_rom_decode;
+
 	int (*adapt_voltage)(const struct master_common *, unsigned int min_mv, unsigned int max_mv);
 };
 
@@ -472,7 +474,6 @@
 #define DEFAULT_MAX_DECODE_PARALLEL (16*MiB)
 #define MAX_ROM_DECODE_UNLIMITED UINT32_MAX
 struct registered_master {
-	size_t max_rom_decode;
 	enum chipbustype buses_supported;
 
 	struct bus_probing probing;
diff --git a/opaque.c b/opaque.c
index f03b70a..f54a032 100644
--- a/opaque.c
+++ b/opaque.c
@@ -63,10 +63,12 @@
 			 __func__);
 		return ERROR_FLASHPROG_BUG;
 	}
-	rmst.max_rom_decode = MAX_ROM_DECODE_UNLIMITED;
 	rmst.buses_supported = BUS_PROG;
 	rmst.opaque = *mst;
 	if (data)
 		rmst.opaque.data = data;
+
+	rmst.common.max_rom_decode = MAX_ROM_DECODE_UNLIMITED;
+
 	return register_master(&rmst);
 }
diff --git a/parallel.c b/parallel.c
index 5746862..3e32d59 100644
--- a/parallel.c
+++ b/parallel.c
@@ -84,13 +84,15 @@
 		return ERROR_FLASHPROG_BUG;
 	}
 
-	if (max_rom_decode)
-		rmst.max_rom_decode = max_rom_decode;
-	else
-		rmst.max_rom_decode = DEFAULT_MAX_DECODE_PARALLEL;
 	rmst.buses_supported = buses;
 	rmst.par = *mst;
 	if (data)
 		rmst.par.data = data;
+
+	if (max_rom_decode)
+		rmst.common.max_rom_decode = max_rom_decode;
+	else
+		rmst.common.max_rom_decode = DEFAULT_MAX_DECODE_PARALLEL;
+
 	return register_master(&rmst);
 }
diff --git a/spi.c b/spi.c
index 15809c6..2ad84c0 100644
--- a/spi.c
+++ b/spi.c
@@ -224,10 +224,6 @@
 		return ERROR_FLASHPROG_BUG;
 	}
 
-	if (max_rom_decode)
-		rmst.max_rom_decode = max_rom_decode;
-	else
-		rmst.max_rom_decode = MAX_ROM_DECODE_UNLIMITED;
 	rmst.buses_supported = BUS_SPI;
 	rmst.probing.probe_count = ARRAY_SIZE(spi_probes);
 	rmst.probing.probes = spi_probes;
@@ -235,6 +231,12 @@
 	rmst.spi = *mst;
 	if (data)
 		rmst.spi.data = data;
+
+	if (max_rom_decode)
+		rmst.common.max_rom_decode = max_rom_decode;
+	else
+		rmst.common.max_rom_decode = MAX_ROM_DECODE_UNLIMITED;
+
 	return register_master(&rmst);
 }
 
