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/programmer.h b/programmer.h
index 1d7e5f1..920a8e2 100644
--- a/programmer.h
+++ b/programmer.h
@@ -102,7 +102,6 @@
 struct programmer_alias {
 	const char *name;
 	enum alias_type type;
-	enum programmer prog;
 };
 
 extern struct programmer_alias *alias;
@@ -112,7 +111,7 @@
 	const char *vendor;
 	const char *name;
 
-	int (*init) (struct flashctx *flash);
+	int (*init) (void);
 
 	void *(*map_flash_region) (const char *descr, unsigned long phys_addr,
 				   size_t len);
@@ -130,7 +129,7 @@
 
 extern const struct programmer_entry programmer_table[];
 
-int programmer_init(struct flashctx *flash, enum programmer prog, char *param);
+int programmer_init(enum programmer prog, char *param);
 int programmer_shutdown(void);
 
 enum bitbang_spi_master_type {
@@ -161,8 +160,6 @@
 	int (*get_miso) (void);
 	void (*request_bus) (void);
 	void (*release_bus) (void);
-	/* Length of half a clock period in usecs. */
-	unsigned int half_period;
 };
 
 #if CONFIG_INTERNAL == 1
@@ -238,7 +235,6 @@
 
 #if NEED_PCI == 1
 /* pcidev.c */
-// FIXME: These need to be local, not global
 extern uint32_t io_base_addr;
 extern struct pci_access *pacc;
 extern struct pci_dev *pcidev_dev;
@@ -332,7 +328,7 @@
 void probe_superio(void);
 int register_superio(struct superio s);
 extern enum chipbustype internal_buses_supported;
-int internal_init(struct flashctx *flash);
+int internal_init(void);
 #endif
 
 /* hwaccess.c */
@@ -369,7 +365,7 @@
 
 /* dummyflasher.c */
 #if CONFIG_DUMMY == 1
-int dummy_init(struct flashctx *flash);
+int dummy_init(void);
 void *dummy_map(const char *descr, unsigned long phys_addr, size_t len);
 void dummy_unmap(void *virt_addr, size_t len);
 
@@ -377,67 +373,67 @@
 
 /* nic3com.c */
 #if CONFIG_NIC3COM == 1
-int nic3com_init(struct flashctx *flash);
+int nic3com_init(void);
 extern const struct pcidev_status nics_3com[];
 #endif
 
 /* gfxnvidia.c */
 #if CONFIG_GFXNVIDIA == 1
-int gfxnvidia_init(struct flashctx *flash);
+int gfxnvidia_init(void);
 extern const struct pcidev_status gfx_nvidia[];
 #endif
 
 /* drkaiser.c */
 #if CONFIG_DRKAISER == 1
-int drkaiser_init(struct flashctx *flash);
+int drkaiser_init(void);
 extern const struct pcidev_status drkaiser_pcidev[];
 #endif
 
 /* nicrealtek.c */
 #if CONFIG_NICREALTEK == 1
-int nicrealtek_init(struct flashctx *flash);
+int nicrealtek_init(void);
 extern const struct pcidev_status nics_realtek[];
 #endif
 
 /* nicnatsemi.c */
 #if CONFIG_NICNATSEMI == 1
-int nicnatsemi_init(struct flashctx *flash);
+int nicnatsemi_init(void);
 extern const struct pcidev_status nics_natsemi[];
 #endif
 
 /* nicintel.c */
 #if CONFIG_NICINTEL == 1
-int nicintel_init(struct flashctx *flash);
+int nicintel_init(void);
 extern const struct pcidev_status nics_intel[];
 #endif
 
 /* nicintel_spi.c */
 #if CONFIG_NICINTEL_SPI == 1
-int nicintel_spi_init(struct flashctx *flash);
+int nicintel_spi_init(void);
 extern const struct pcidev_status nics_intel_spi[];
 #endif
 
 /* ogp_spi.c */
 #if CONFIG_OGP_SPI == 1
-int ogp_spi_init(struct flashctx *flash);
+int ogp_spi_init(void);
 extern const struct pcidev_status ogp_spi[];
 #endif
 
 /* satamv.c */
 #if CONFIG_SATAMV == 1
-int satamv_init(struct flashctx *flash);
+int satamv_init(void);
 extern const struct pcidev_status satas_mv[];
 #endif
 
 /* satasii.c */
 #if CONFIG_SATASII == 1
-int satasii_init(struct flashctx *flash);
+int satasii_init(void);
 extern const struct pcidev_status satas_sii[];
 #endif
 
 /* atahpt.c */
 #if CONFIG_ATAHPT == 1
-int atahpt_init(struct flashctx *flash);
+int atahpt_init(void);
 extern const struct pcidev_status ata_hpt[];
 #endif
 
@@ -450,33 +446,34 @@
 	const char *vendor_name;
 	const char *device_name;
 };
-int ft2232_spi_init(struct flashctx *flash);
+int ft2232_spi_init(void);
 extern const struct usbdev_status devs_ft2232spi[];
 void print_supported_usbdevs(const struct usbdev_status *devs);
 #endif
 
 /* rayer_spi.c */
 #if CONFIG_RAYER_SPI == 1
-int rayer_spi_init(struct flashctx *flash);
+int rayer_spi_init(void);
 #endif
 
 /* bitbang_spi.c */
-int bitbang_spi_init(const struct bitbang_spi_master *master);
+int bitbang_spi_init(const struct bitbang_spi_master *master, int halfperiod);
+int bitbang_spi_shutdown(const struct bitbang_spi_master *master);
 
 /* buspirate_spi.c */
 #if CONFIG_BUSPIRATE_SPI == 1
-int buspirate_spi_init(struct flashctx *flash);
+int buspirate_spi_init(void);
 #endif
 
 /* raiden_debug_spi.c */
 #if CONFIG_RAIDEN_DEBUG_SPI == 1
-int raiden_debug_spi_init(struct flashctx *flash);
+int raiden_debug_spi_init(void);
 #endif
 
 /* linux_i2c.c */
 #if CONFIG_LINUX_I2C == 1
 int linux_i2c_shutdown(void *data);
-int linux_i2c_init(struct flashctx *flash);
+int linux_i2c_init(void);
 int linux_i2c_open(int bus, int addr, int force);
 void linux_i2c_close(void);
 int linux_i2c_xfer(int bus, int addr, const void *inbuf,
@@ -485,17 +482,17 @@
 
 /* linux_mtd.c */
 #if CONFIG_LINUX_MTD == 1
-int linux_mtd_init(struct flashctx *flash);
+int linux_mtd_init(void);
 #endif
 
 /* linux_spi.c */
 #if CONFIG_LINUX_SPI == 1
-int linux_spi_init(struct flashctx *flash);
+int linux_spi_init(void);
 #endif
 
 /* dediprog.c */
 #if CONFIG_DEDIPROG == 1
-int dediprog_init(struct flashctx *flash);
+int dediprog_init(void);
 #endif
 
 /* flashrom.c */
@@ -505,7 +502,6 @@
 	uint32_t fwh;
 	uint32_t spi;
 };
-// FIXME: These need to be local, not global
 extern struct decode_sizes max_rom_decode;
 extern int programmer_may_write;
 extern unsigned long flashbase;
@@ -562,6 +558,7 @@
 	SPI_CONTROLLER_SERPROG,
 #endif
 };
+extern const int spi_programmer_count;
 
 #define MAX_DATA_UNSPECIFIED 0
 #define MAX_DATA_READ_UNLIMITED 64 * 1024
@@ -577,15 +574,15 @@
 	/* Optimized functions for this programmer */
 	int (*read)(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
 	int (*write_256)(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
-	const void *data;
 };
 
+extern const struct spi_programmer *spi_programmer;
 int default_spi_send_command(const struct flashctx *flash, unsigned int writecnt, unsigned int readcnt,
 			     const unsigned char *writearr, unsigned char *readarr);
 int default_spi_send_multicommand(const struct flashctx *flash, struct spi_command *cmds);
 int default_spi_read(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
 int default_spi_write_256(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
-int register_spi_programmer(const struct spi_programmer *programmer);
+void register_spi_programmer(const struct spi_programmer *programmer);
 
 /* ichspi.c */
 #if CONFIG_INTERNAL == 1
@@ -612,23 +609,23 @@
 int via_init_spi(struct pci_dev *dev);
 
 /* ene_lpc.c */
-int ene_probe_spi_flash(struct flashctx *flash, const char *name);
+int ene_probe_spi_flash(const char *name);
 
 /* it85spi.c */
-int it85xx_spi_init(struct flashctx *flash, struct superio s);
-int it8518_spi_init(struct flashctx *flash, struct superio s);
+int it85xx_spi_init(struct superio s);
+int it8518_spi_init(struct superio s);
 
 /* it87spi.c */
 void enter_conf_mode_ite(uint16_t port);
 void exit_conf_mode_ite(uint16_t port);
 void probe_superio_ite(void);
-int init_superio_ite(struct flashctx *flash);
+int init_superio_ite(void);
 
 /* mcp6x_spi.c */
 int mcp6x_spi_init(int want_spi);
 
 /* mec1308.c */
-int mec1308_probe_spi_flash(struct flashctx *flash, const char *name);
+int mec1308_probe_spi_flash(const char *name);
 
 /* sb600spi.c */
 int sb600_probe_spi(struct pci_dev *dev);
@@ -650,12 +647,14 @@
 	int (*write_status) (const struct flashctx *flash, int status);
 	const void *data;
 };
-int register_opaque_programmer(const struct opaque_programmer *pgm);
+extern struct opaque_programmer *opaque_programmer;
+void register_opaque_programmer(struct opaque_programmer *pgm);
 
 /* programmer.c */
 int noop_shutdown(void);
 void *fallback_map(const char *descr, unsigned long phys_addr, size_t len);
 void fallback_unmap(void *virt_addr, size_t len);
+uint8_t noop_chip_readb(const struct flashctx *flash, const chipaddr addr);
 void noop_chip_writeb(const struct flashctx *flash, uint8_t val, chipaddr addr);
 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);
@@ -672,24 +671,13 @@
 	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);
-	const void *data;
 };
-int register_par_programmer(const struct par_programmer *pgm, const enum chipbustype buses);
-struct registered_programmer {
-	enum chipbustype buses_supported;
-	union {
-		struct par_programmer par;
-		struct spi_programmer spi;
-		struct opaque_programmer opaque;
-	};
-};
-extern struct registered_programmer registered_programmers[];
-extern int registered_programmer_count;
-int register_programmer(struct registered_programmer *pgm);
+extern const struct par_programmer *par_programmer;
+void register_par_programmer(const struct par_programmer *pgm, const enum chipbustype buses);
 
 /* serprog.c */
 #if CONFIG_SERPROG == 1
-int serprog_init(struct flashctx *flash);
+int serprog_init(void);
 void serprog_delay(int usecs);
 #endif
 
@@ -701,22 +689,22 @@
 #endif
 
 /* wpce775x.c */
-int wpce775x_probe_spi_flash(struct flashctx *flash, const char *name);
+int wpce775x_probe_spi_flash(const char *name);
 
 /* cros_ec.c */
-int cros_ec_probe_i2c(struct flashctx *flash, const char *name);
+int cros_ec_probe_i2c(const char *name);
 
 /**
  * Probe the Google Chrome OS EC device
  *
  * @return 0 if found correct, non-zero if not found or error
  */
-int cros_ec_probe_dev(struct flashctx *flash);
+int cros_ec_probe_dev(void);
 
-int cros_ec_probe_lpc(struct flashctx *flash, const char *name);
-int cros_ec_need_2nd_pass(struct flashctx *flash);
-int cros_ec_finish(struct flashctx *flash);
-int cros_ec_prepare(struct flashctx *flash, uint8_t *image, int size);
+int cros_ec_probe_lpc(const char *name);
+int cros_ec_need_2nd_pass(void);
+int cros_ec_finish(void);
+int cros_ec_prepare(uint8_t *image, int size);
 
 void sp_flush_incoming(void);
 fdtype sp_openserport(char *dev, unsigned int baud);