aboutsummaryrefslogtreecommitdiffstats
path: root/serprog.c
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2021-07-06 16:03:11 +1000
committerNico Huber <nico.h@gmx.de>2021-08-17 09:39:18 +0000
commit0a7f036610673f6664c9d1492912abfdfbdf9f20 (patch)
treeca67f6d90b777debae831039267adfcab01c18d9 /serprog.c
parent5a97be363a269b364569be8223369d9a5bf92292 (diff)
downloadflashrom-0a7f036610673f6664c9d1492912abfdfbdf9f20.tar.gz
flashrom-0a7f036610673f6664c9d1492912abfdfbdf9f20.tar.bz2
flashrom-0a7f036610673f6664c9d1492912abfdfbdf9f20.zip
spi_master: Move shutdown function above spi_master struct
This patch prepares spi masters to use new API which allows to register shutdown function in spi_master struct. See also later patch in this chain, where spi masters are converted to new API. BUG=b:185191942 TEST=builds and ninja test Comparing flashrom binary before and after the patch, make clean && make CONFIG_EVERYTHING=yes VERSION=none binary is the same Change-Id: I50716686552b4ddcc6089d5afadb19ef59d9f9b4 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/56101 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'serprog.c')
-rw-r--r--serprog.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/serprog.c b/serprog.c
index e8d1f52f..b207fd2d 100644
--- a/serprog.c
+++ b/serprog.c
@@ -394,6 +394,25 @@ static int serprog_spi_send_command(const struct flashctx *flash,
return ret;
}
+static int serprog_shutdown(void *data)
+{
+ if ((sp_opbuf_usage) || (sp_max_write_n && sp_write_n_bytes))
+ if (sp_execute_opbuf() != 0)
+ msg_pwarn("Could not flush command buffer.\n");
+ if (sp_check_commandavail(S_CMD_S_PIN_STATE)) {
+ uint8_t dis = 0;
+ if (sp_docommand(S_CMD_S_PIN_STATE, 1, &dis, 0, NULL) == 0)
+ msg_pdbg(MSGHEADER "Output drivers disabled\n");
+ else
+ msg_pwarn(MSGHEADER "%s: Warning: could not disable output buffers\n", __func__);
+ }
+ /* FIXME: fix sockets on windows(?), especially closing */
+ serialport_shutdown(&sp_fd);
+ if (sp_max_write_n)
+ free(sp_write_n_buf);
+ return 0;
+}
+
static struct spi_master spi_master_serprog = {
.features = SPI_MASTER_4BA,
.max_data_read = MAX_DATA_READ_UNLIMITED,
@@ -518,25 +537,6 @@ static const struct par_master par_master_serprog = {
.chip_writen = fallback_chip_writen,
};
-static int serprog_shutdown(void *data)
-{
- if ((sp_opbuf_usage) || (sp_max_write_n && sp_write_n_bytes))
- if (sp_execute_opbuf() != 0)
- msg_pwarn("Could not flush command buffer.\n");
- if (sp_check_commandavail(S_CMD_S_PIN_STATE)) {
- uint8_t dis = 0;
- if (sp_docommand(S_CMD_S_PIN_STATE, 1, &dis, 0, NULL) == 0)
- msg_pdbg(MSGHEADER "Output drivers disabled\n");
- else
- msg_pwarn(MSGHEADER "%s: Warning: could not disable output buffers\n", __func__);
- }
- /* FIXME: fix sockets on windows(?), especially closing */
- serialport_shutdown(&sp_fd);
- if (sp_max_write_n)
- free(sp_write_n_buf);
- return 0;
-}
-
static enum chipbustype serprog_buses_supported = BUS_NONE;
static int serprog_init(void)