aboutsummaryrefslogtreecommitdiffstats
path: root/raiden_debug_spi.c
diff options
context:
space:
mode:
authorAnastasia Klimchuk <aklm@chromium.org>2021-09-27 11:16:40 +1000
committerNico Huber <nico.h@gmx.de>2021-10-10 10:24:14 +0000
commit5a73eb7d1b727b9cc11cc94ab807ffbd25cdb268 (patch)
tree3523770fd6024903bb3c1c4125a5244e659788e5 /raiden_debug_spi.c
parent7b9c74f49607dda18243138e87d71b773cec7a7b (diff)
downloadflashrom-5a73eb7d1b727b9cc11cc94ab807ffbd25cdb268.tar.gz
flashrom-5a73eb7d1b727b9cc11cc94ab807ffbd25cdb268.tar.bz2
flashrom-5a73eb7d1b727b9cc11cc94ab807ffbd25cdb268.zip
raiden_debug_spi: Link spi_master struct to spi data
For this programmer, spi_master struct is dynamically allocated and needs to be freed on shutdown. Adding a pointer to spi data struct allows to link spi_master from spi data, which in turn allows to pass spi data into shutdown function. As a result, both register_spi_master and register_shutdown use the same data, and this unblocks moving raiden_debug_spi to new API (like all the other spi masters in commit a69c5196d20d136b1de120f0fa5ea1e06c3776da). See further patches in this chain. BUG=b:185191942 TEST=test in CB:57918 Change-Id: I5400802aa6961538df12fcd5339f7e2a5db145a1 Signed-off-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/57972 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'raiden_debug_spi.c')
-rw-r--r--raiden_debug_spi.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/raiden_debug_spi.c b/raiden_debug_spi.c
index 92779fc5..9cba2a80 100644
--- a/raiden_debug_spi.c
+++ b/raiden_debug_spi.c
@@ -441,6 +441,7 @@ struct raiden_debug_spi_data {
*/
uint16_t max_spi_write_count;
uint16_t max_spi_read_count;
+ struct spi_master *spi_config;
};
/*
* USB permits a maximum bulk transfer of 64B.
@@ -1377,9 +1378,8 @@ static int configure_protocol(struct spi_master *spi_config)
static int raiden_debug_spi_shutdown(void * data)
{
- struct spi_master *spi_config = data;
- struct raiden_debug_spi_data *ctx_data =
- (struct raiden_debug_spi_data *)spi_config->data;
+ struct raiden_debug_spi_data *ctx_data = (struct raiden_debug_spi_data *)data;
+ struct spi_master *spi_config = ctx_data->spi_config;
int ret = LIBUSB(libusb_control_transfer(
ctx_data->dev->handle,
@@ -1594,6 +1594,7 @@ loop_end:
data->dev = device;
data->in_ep = in_endpoint;
data->out_ep = out_endpoint;
+ data->spi_config = spi_config;
spi_config->data = data; /* data is needed to configure protocol below */
/*
@@ -1613,7 +1614,7 @@ loop_end:
}
register_spi_master(spi_config, data);
- register_shutdown(raiden_debug_spi_shutdown, spi_config);
+ register_shutdown(raiden_debug_spi_shutdown, data);
return 0;
}