diff options
author | Anastasia Klimchuk <aklm@chromium.org> | 2021-08-26 10:10:32 +1000 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2021-08-30 02:42:51 +0000 |
commit | d1697e9abe2436a470e3ea6c8061f1e23e0d597b (patch) | |
tree | 935182eb0067bef2761231deb571d8ec1823bf5a | |
parent | 822cc7ed2ad29eafeb51b75ee106e000f8a11ee3 (diff) | |
download | flashrom-d1697e9abe2436a470e3ea6c8061f1e23e0d597b.tar.gz flashrom-d1697e9abe2436a470e3ea6c8061f1e23e0d597b.tar.bz2 flashrom-d1697e9abe2436a470e3ea6c8061f1e23e0d597b.zip |
par_master: Add shutdown function in par_master struct
With this, register_par_master can take care of register_shutdown
as well, and every par master only needs to call
register_par_master instead of calling both register_par_master
and register_shutdown.
Next patches in the chain convert par masters to use new API.
BUG=b:185191942
TEST=builds and ninja test
Change-Id: I0fee15d548cdd16678e551eeb351e659812ddf76
Signed-off-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/57154
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
-rw-r--r-- | programmer.c | 7 | ||||
-rw-r--r-- | programmer.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/programmer.c b/programmer.c index c276a69b..9a67157b 100644 --- a/programmer.c +++ b/programmer.c @@ -86,6 +86,13 @@ int register_par_master(const struct par_master *mst, { struct registered_master rmst = {0}; + if (mst->shutdown) { + if (register_shutdown(mst->shutdown, data)) { + mst->shutdown(data); /* cleanup */ + return 1; + } + } + if (!mst->chip_writeb || !mst->chip_writew || !mst->chip_writel || !mst->chip_writen || !mst->chip_readb || !mst->chip_readw || !mst->chip_readl || !mst->chip_readn) { diff --git a/programmer.h b/programmer.h index 3de87e58..982343aa 100644 --- a/programmer.h +++ b/programmer.h @@ -466,6 +466,7 @@ struct par_master { 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); + int (*shutdown)(void *data); void *data; }; int register_par_master(const struct par_master *mst, const enum chipbustype buses, void *data); |