Anastasia Klimchuk has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/54990 )
Change subject: bitbang: Extend register_spi_bitbang_master() API with spi data ......................................................................
bitbang: Extend register_spi_bitbang_master() API with spi data
This allows the users of register_spi_bitbang_master() API to pass their spi data into the API, and then the data can go further, into register_spi_master() API.
BUG=b:185191942 TEST=builds
Change-Id: I13e83ae74dbc3a3e79c84d1463683d360ff47bc0 Signed-off-by: Anastasia Klimchuk aklm@chromium.org --- M bitbang_spi.c M developerbox_spi.c M mcp6x_spi.c M nicintel_spi.c M ogp_spi.c M pony_spi.c M programmer.h M rayer_spi.c 8 files changed, 13 insertions(+), 10 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/90/54990/1
diff --git a/bitbang_spi.c b/bitbang_spi.c index 85c867e..e595b16 100644 --- a/bitbang_spi.c +++ b/bitbang_spi.c @@ -96,6 +96,7 @@
struct bitbang_spi_master_data { const struct bitbang_spi_master *master; + void *spi_data; };
static int bitbang_spi_send_command(const struct flashctx *flash, @@ -146,7 +147,7 @@ return 0; }
-int register_spi_bitbang_master(const struct bitbang_spi_master *master) +int register_spi_bitbang_master(const struct bitbang_spi_master *master, void *spi_data) { struct spi_master mst = spi_master_bitbang; /* If someone forgot to initialize a bitbang function, we catch it here. */ @@ -161,8 +162,10 @@
struct bitbang_spi_master_data *data = calloc(1, sizeof(struct bitbang_spi_master_data)); data->master = master; - mst.data = data; - register_spi_master(&mst, NULL); + if (spi_data) + data->spi_data = spi_data; + + register_spi_master(&mst, data); register_shutdown(bitbang_spi_shutdown, data);
/* Only mess with the bus if we're sure nobody else uses it. */ diff --git a/developerbox_spi.c b/developerbox_spi.c index 4ff2fb6..4ccfaaa 100644 --- a/developerbox_spi.c +++ b/developerbox_spi.c @@ -158,7 +158,7 @@ if (register_shutdown(developerbox_spi_shutdown, NULL)) goto err_exit;
- if (register_spi_bitbang_master(&bitbang_spi_master_cp210x)) + if (register_spi_bitbang_master(&bitbang_spi_master_cp210x, NULL)) goto err_exit;
return 0; diff --git a/mcp6x_spi.c b/mcp6x_spi.c index b53d07b..543142b 100644 --- a/mcp6x_spi.c +++ b/mcp6x_spi.c @@ -151,7 +151,7 @@ (status >> MCP6X_SPI_GRANT) & 0x1); mcp_gpiostate = status & 0xff;
- if (register_spi_bitbang_master(&bitbang_spi_master_mcp6x)) { + if (register_spi_bitbang_master(&bitbang_spi_master_mcp6x, NULL)) { /* This should never happen. */ msg_perr("MCP6X bitbang SPI master init failed!\n"); return 1; diff --git a/nicintel_spi.c b/nicintel_spi.c index 1173ef7..03df8ef 100644 --- a/nicintel_spi.c +++ b/nicintel_spi.c @@ -273,7 +273,7 @@ return 1; }
- if (register_spi_bitbang_master(&bitbang_spi_master_nicintel)) + if (register_spi_bitbang_master(&bitbang_spi_master_nicintel, NULL)) return 1;
return 0; diff --git a/ogp_spi.c b/ogp_spi.c index e603edb..7a22809 100644 --- a/ogp_spi.c +++ b/ogp_spi.c @@ -135,7 +135,7 @@ if (ogp_spibar == ERROR_PTR) return 1;
- if (register_spi_bitbang_master(&bitbang_spi_master_ogp)) + if (register_spi_bitbang_master(&bitbang_spi_master_ogp, NULL)) return 1;
return 0; diff --git a/pony_spi.c b/pony_spi.c index ed9d326..9e00b03 100644 --- a/pony_spi.c +++ b/pony_spi.c @@ -224,7 +224,7 @@ return 1; }
- if (register_spi_bitbang_master(&bitbang_spi_master_pony)) { + if (register_spi_bitbang_master(&bitbang_spi_master_pony, NULL)) { return 1; } return 0; diff --git a/programmer.h b/programmer.h index 790fcc8..1874612 100644 --- a/programmer.h +++ b/programmer.h @@ -542,7 +542,7 @@ #endif
/* bitbang_spi.c */ -int register_spi_bitbang_master(const struct bitbang_spi_master *master); +int register_spi_bitbang_master(const struct bitbang_spi_master *master, void *spi_data);
/* buspirate_spi.c */ #if CONFIG_BUSPIRATE_SPI == 1 diff --git a/rayer_spi.c b/rayer_spi.c index cde008f..7b518c9 100644 --- a/rayer_spi.c +++ b/rayer_spi.c @@ -265,7 +265,7 @@ if (pinout->preinit) pinout->preinit(pinout);
- if (register_spi_bitbang_master(&bitbang_spi_master_rayer)) + if (register_spi_bitbang_master(&bitbang_spi_master_rayer, NULL)) return 1;
return 0;