summaryrefslogtreecommitdiffstats
path: root/spi.c
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2021-07-05 09:18:06 +1000
committerNico Huber <nico.h@gmx.de>2021-08-17 09:39:05 +0000
commit5a97be363a269b364569be8223369d9a5bf92292 (patch)
tree4b5e66bc7e20581bb5e63db2faff4cdb98a0c851 /spi.c
parent541f79df447dba7f91a6101766c6b44aaf751075 (diff)
downloadflashrom-5a97be363a269b364569be8223369d9a5bf92292.tar.gz
flashrom-5a97be363a269b364569be8223369d9a5bf92292.tar.bz2
flashrom-5a97be363a269b364569be8223369d9a5bf92292.zip
spi_master: Add shutdown function in spi_master struct
With this, register_spi_master can take care of register_shutdown as well, and every spi master only needs to call register_spi_master instead of calling both register_spi_master and register_shutdown. Testing: In dummyflasher, comment out free(data) in shutdown. Test fails with error: ../dummyflasher.c:949: note: block 0x55e0727a6e40 allocated here ERROR: dummy_init_and_shutdown_test_success leaked 1 block(s) Means, shutdown function is invoked for drivers with "old" API (so, transitioning from old to new API is not breaking anything). Next patches in the chain converts spi masters to use new API. BUG=b:185191942 TEST=builds and ninja test Change-Id: I2dc80dceca2f8204bcd0dad1f51753d7e79f1af5 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/55932 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'spi.c')
-rw-r--r--spi.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/spi.c b/spi.c
index 4ac39145b..f2e91c4d9 100644
--- a/spi.c
+++ b/spi.c
@@ -135,6 +135,13 @@ int register_spi_master(const struct spi_master *mst, void *data)
{
struct registered_master rmst = {0};
+ if (mst->shutdown) {
+ if (register_shutdown(mst->shutdown, data)) {
+ mst->shutdown(data); /* cleanup */
+ return 1;
+ }
+ }
+
if (!mst->write_aai || !mst->write_256 || !mst->read || !mst->command ||
!mst->multicommand ||
((mst->command == default_spi_send_command) &&