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);