spi: Import upstream's per-flash spi master register scheme
Align closer with upstream by introducing a new register dispatch
mechanism and using it to confine global usage behind an API.
V.2: Fix the embedding of mst into the flashctx.
V.3: Just introduce the structures and dispatch mechanism however
avoid using it here in this patch.
V.4: Sqush in, 'add missing feild in programmer.h' &&
'cli_classic,dediprog: Fix probe_flash() call sites' &&
'hack control flow so new dispatch is a nop here'.
BUG=chromium:478356
BRANCH=none
TEST=still builds
Change-Id: I9f3092de8b0a0ea377a53c2b093884ead1eaf13d
Signed-off-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/flashrom/+/1657471
Reviewed-by: Stefan Reinauer <reinauer@google.com>
Reviewed-by: Sam McNally <sammc@chromium.org>
Tested-by: Stefan Reinauer <reinauer@google.com>
diff --git a/programmer.h b/programmer.h
index dd945e1..7410f30 100644
--- a/programmer.h
+++ b/programmer.h
@@ -694,9 +694,21 @@
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;
};
extern const struct par_master *par_master;
void register_par_master(const struct par_master *pgm, const enum chipbustype buses);
+struct registered_master {
+ enum chipbustype buses_supported;
+ union {
+ struct par_master par;
+ struct spi_master spi;
+ struct opaque_programmer opaque;
+ };
+};
+extern struct registered_master registered_masters[];
+extern int registered_master_count;
+int register_master(const struct registered_master *mst);
/* serprog.c */
#if CONFIG_SERPROG == 1