Revert "Update all programmer init functions to register bus programmers into common list"

This reverts commit 63b92f99a9d43dd637bcce564cd372be3c81c5d8.

BUG=chromium:635405

Change-Id: I94ae18b547d2aedd74fc7103a38dcbfd2f57be66
Reviewed-on: https://chromium-review.googlesource.com/367504
Commit-Ready: David Hendricks <dhendrix@chromium.org>
Tested-by: David Hendricks <dhendrix@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
diff --git a/flashrom.c b/flashrom.c
index c456bbf..27ee6a7 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -73,6 +73,9 @@
 
 static char *programmer_param = NULL;
 
+/* Supported buses for the current programmer. */
+enum chipbustype buses_supported;
+
 /*
  * Programmers supporting multiple buses can have differing size limits on
  * each bus. Store the limits for each bus in a common struct.
@@ -374,7 +377,7 @@
 	return 0;
 }
 
-int programmer_init(struct flashctx *flash, enum programmer prog, char *param)
+int programmer_init(enum programmer prog, char *param)
 {
 	int ret;
 
@@ -391,6 +394,7 @@
 		.fwh		= 0xffffffff,
 		.spi		= 0xffffffff,
 	};
+	buses_supported = BUS_NONE;
 	/* Default to top aligned flash at 4 GB. */
 	flashbase = 0;
 	/* Registering shutdown functions is now allowed. */
@@ -401,7 +405,7 @@
 	programmer_param = param;
 	msg_pdbg("Initializing %s programmer\n",
 		 programmer_table[programmer].name);
-	ret = programmer_table[programmer].init(flash);
+	ret = programmer_table[programmer].init();
 	if (programmer_param && strlen(programmer_param)) {
 		msg_perr("Unhandled programmer parameters: %s\n",
 			 programmer_param);
@@ -450,42 +454,42 @@
 
 void chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr)
 {
-	flash->pgm->par.chip_writeb(flash, val, addr);
+	par_programmer->chip_writeb(flash, val, addr);
 }
 
 void chip_writew(const struct flashctx *flash, uint16_t val, chipaddr addr)
 {
-	flash->pgm->par.chip_writew(flash, val, addr);
+	par_programmer->chip_writew(flash, val, addr);
 }
 
 void chip_writel(const struct flashctx *flash, uint32_t val, chipaddr addr)
 {
-	flash->pgm->par.chip_writel(flash, val, addr);
+	par_programmer->chip_writel(flash, val, addr);
 }
 
 void chip_writen(const struct flashctx *flash, uint8_t *buf, chipaddr addr, size_t len)
 {
-	flash->pgm->par.chip_writen(flash, buf, addr, len);
+	par_programmer->chip_writen(flash, buf, addr, len);
 }
 
 uint8_t chip_readb(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->pgm->par.chip_readb(flash, addr);
+	return par_programmer->chip_readb(flash, addr);
 }
 
 uint16_t chip_readw(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->pgm->par.chip_readw(flash, addr);
+	return par_programmer->chip_readw(flash, addr);
 }
 
 uint32_t chip_readl(const struct flashctx *flash, const chipaddr addr)
 {
-	return flash->pgm->par.chip_readl(flash, addr);
+	return par_programmer->chip_readl(flash, addr);
 }
 
 void chip_readn(const struct flashctx *flash, uint8_t *buf, chipaddr addr, size_t len)
 {
-	flash->pgm->par.chip_readn(flash, buf, addr, len);
+	par_programmer->chip_readn(flash, buf, addr, len);
 }
 
 void programmer_delay(int usecs)
@@ -1066,8 +1070,7 @@
 	return 1;
 }
 
-int probe_flash(struct registered_programmer *pgm, int startchip,
-		struct flashctx *fill_flash, int force)
+int probe_flash(int startchip, struct flashctx *fill_flash, int force)
 {
 	const struct flashchip *flash, *flash_list;
 	unsigned long base = 0;
@@ -1093,9 +1096,20 @@
 	for (flash = flash_list + startchip; flash && flash->name; flash++) {
 		if (chip_to_probe && strcmp(flash->name, chip_to_probe) != 0)
 			continue;
-		buses_common = pgm->buses_supported & flash->bustype;
-		if (!buses_common)
+		buses_common = buses_supported & flash->bustype;
+		if (!buses_common) {
+			msg_gspew("Probing for %s %s, %d kB: skipped. ",
+			         flash->vendor, flash->name, flash->total_size);
+			tmp = flashbuses_to_text(buses_supported);
+			msg_gspew("Host bus type %s ", tmp);
+			free(tmp);
+			tmp = flashbuses_to_text(flash->bustype);
+			msg_gspew("and chip bus type %s are incompatible.",
+				  tmp);
+			free(tmp);
+			msg_gspew("\n");
 			continue;
+		}
 		msg_gdbg("Probing for %s %s, %d kB: ",
 			     flash->vendor, flash->name, flash->total_size);
 		if (!flash->probe && !force) {
@@ -1109,7 +1123,6 @@
 
 		/* Start filling in the dynamic data. */
 		memcpy(fill_flash, flash, sizeof(struct flashchip));
-		fill_flash->pgm = pgm;
 
 		base = flashbase ? flashbase : (0xffffffff - size + 1);
 		fill_flash->virtual_memory = (chipaddr)programmer_map_flash_region("flash chip", base, size);
@@ -2086,6 +2099,7 @@
 		}
 	}
 	msg_cdbg("done.\n");
+
 	/*
 	 * Note: This must be done after reading the file specified for the
 	 * -w/-v argument, if any, so that files specified using -i end up
@@ -2114,7 +2128,7 @@
 
 	if (write_it) {
 		// parse the new fmap
-		if ((ret = cros_ec_prepare(flash, newcontents, size))) {
+		if ((ret = cros_ec_prepare(newcontents, size))) {
 			msg_cerr("CROS_EC prepare failed, ret=%d.\n", ret);
 			goto out;
 		}
@@ -2136,7 +2150,7 @@
 			goto out;
 		}
 
-		ret = cros_ec_need_2nd_pass(flash);
+		ret = cros_ec_need_2nd_pass();
 		if (ret < 0) {
 			// Jump failed
 			msg_cerr("cros_ec_need_2nd_pass() failed. Stop.\n");
@@ -2163,7 +2177,7 @@
 			ret = 0;
 		}
 
-		if (cros_ec_finish(flash) < 0) {
+		if (cros_ec_finish() < 0) {
 			msg_cerr("cros_ec_finish() failed. Stop.\n");
 			emergency_help_message();
 			ret = 1;