Revert "spi: Adopt programmers to use per-flash spi master scheme"

This reverts commit bcae375630ea8a9bfd3645700451209fb98b66eb.

Reason for revert: Flashrom upgrades have broken a few key use cases.

BRANCH=none
BUG=b:138663774, b:138470368
TEST=emerge-nocturne flashrom && cros deploy dut1 flashrom
     flashrom --fast-verify --programmer=ec:type=fp --image=EC_RW --write -V /opt/google/biod/fw/nocturne_fp_v2.2.110-b936c0a3c.bin
     flashrom --fast-verify --programmer=ec:type=fp --image=EC_RO --write -V /opt/google/biod/fw/nocturne_fp_v2.2.110-b936c0a3c.bin
     flashrom --fast-verify --programmer=ec:type=fp --image=EC_RW --write -V ~/some-other-fp-firmware.bin
     cat /dev/cros_fp
     bio_fw_updater --log_dir=voodoo
TEST=emerge-hatch flashrom && cros deploy dut3 flashrom
     chromeos-firmwareupdate --mode=factory

Signed-off-by: Craig Hesling <hesling@chromium.org>
Change-Id: I796d4749372896249e2504122e9ec588da353d6b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/flashrom/+/1731581
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
diff --git a/programmer.c b/programmer.c
index 9749d86..1af52b0 100644
--- a/programmer.c
+++ b/programmer.c
@@ -26,6 +26,19 @@
 enum ich_chipset ich_generation = CHIPSET_ICH_UNKNOWN;
 int ich_dry_run;
 
+static const struct par_master par_master_none = {
+		.chip_readb		= noop_chip_readb,
+		.chip_readw		= fallback_chip_readw,
+		.chip_readl		= fallback_chip_readl,
+		.chip_readn		= fallback_chip_readn,
+		.chip_writeb		= noop_chip_writeb,
+		.chip_writew		= fallback_chip_writew,
+		.chip_writel		= fallback_chip_writel,
+		.chip_writen		= fallback_chip_writen,
+};
+
+const struct par_master *par_master = &par_master_none;
+
 /* No-op shutdown() for programmers which don't need special handling */
 int noop_shutdown(void)
 {
@@ -44,7 +57,13 @@
 {
 }
 
-/* No-op chip_writeb() for parallel style drivers not supporting writes */
+/* No-op chip_writeb() for drivers not supporting addr/data pair accesses */
+uint8_t noop_chip_readb(const struct flashctx *flash, const chipaddr addr)
+{
+	return 0xff;
+}
+
+/* No-op chip_writeb() for drivers not supporting addr/data pair accesses */
 void noop_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
 {
 }
@@ -97,22 +116,10 @@
 	return;
 }
 
-int register_par_master(const struct par_master *pgm, const enum chipbustype buses)
+void register_par_master(const struct par_master *pgm, const enum chipbustype buses)
 {
-	struct registered_master rmst;
-
-	if (!pgm->chip_writeb || !pgm->chip_writew || !pgm->chip_writel ||
-	    !pgm->chip_writen || !pgm->chip_readb || !pgm->chip_readw ||
-	    !pgm->chip_readl || !pgm->chip_readn) {
-		msg_perr("%s called with incomplete master definition. "
-			 "Please report a bug at flashrom@flashrom.org\n",
-			 __func__);
-		return ERROR_FLASHROM_BUG;
-	}
-
-	rmst.buses_supported = buses;
-	rmst.par = *pgm;
-	return register_master(&rmst);
+	par_master = pgm;
+	buses_supported |= buses;
 }
 
 /* The limit of 4 is totally arbitrary. */