Nico Huber has submitted this change. ( https://review.coreboot.org/c/flashrom/+/54067 )
Change subject: programmer: Make use of new register_spi_master() API ......................................................................
programmer: Make use of new register_spi_master() API
Pass pointers to dynamically allocated data to register_spi_master(). This way we can avoid some mutable globals.
Change-Id: Id7821f1db3284b7b5b3d0abfd878b979c53870a1 Signed-off-by: Nico Huber nico.h@gmx.de Reviewed-on: https://review.coreboot.org/c/flashrom/+/54067 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Angel Pons th3fanbus@gmail.com --- M digilent_spi.c M dummyflasher.c M ft2232_spi.c M it85spi.c M it87spi.c M jlink_spi.c M linux_spi.c M lspcon_i2c_spi.c M pickit2_spi.c M usbblaster_spi.c M wbsio_spi.c 11 files changed, 22 insertions(+), 35 deletions(-)
Approvals: build bot (Jenkins): Verified Angel Pons: Looks good to me, approved
diff --git a/digilent_spi.c b/digilent_spi.c index 5471724..ee78890 100644 --- a/digilent_spi.c +++ b/digilent_spi.c @@ -315,7 +315,7 @@ return 0; }
-static struct spi_master spi_master_digilent_spi = { +static const struct spi_master spi_master_digilent_spi = { .features = SPI_MASTER_4BA, .max_data_read = 252, .max_data_write = 252, @@ -454,10 +454,9 @@ } digilent_data->reset_board = reset_board; digilent_data->handle = handle; - spi_master_digilent_spi.data = digilent_data;
register_shutdown(digilent_spi_shutdown, digilent_data); - register_spi_master(&spi_master_digilent_spi, NULL); + register_spi_master(&spi_master_digilent_spi, digilent_data);
return 0;
diff --git a/dummyflasher.c b/dummyflasher.c index 74075f4..d434eec 100644 --- a/dummyflasher.c +++ b/dummyflasher.c @@ -611,7 +611,7 @@
-static struct spi_master spi_master_dummyflasher = { +static const struct spi_master spi_master_dummyflasher = { .features = SPI_MASTER_4BA, .max_data_read = MAX_DATA_READ_UNLIMITED, .max_data_write = MAX_DATA_UNSPECIFIED, @@ -674,7 +674,6 @@ } data->emu_chip = EMULATE_NONE; data->delay_us = 0; - spi_master_dummyflasher.data = data; par_master_dummy.data = data;
msg_pspew("%s\n", __func__); @@ -1030,7 +1029,7 @@ register_par_master(&par_master_dummy, dummy_buses_supported & (BUS_PARALLEL | BUS_LPC | BUS_FWH)); if (dummy_buses_supported & BUS_SPI) - register_spi_master(&spi_master_dummyflasher, NULL); + register_spi_master(&spi_master_dummyflasher, data);
return 0; } diff --git a/ft2232_spi.c b/ft2232_spi.c index 8d50d20..6072cd2 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -276,7 +276,7 @@ return failed ? -1 : 0; }
-static struct spi_master spi_master_ft2232 = { +static const struct spi_master spi_master_ft2232 = { .features = SPI_MASTER_4BA, .max_data_read = 64 * 1024, .max_data_write = 256, @@ -620,13 +620,11 @@ spi_data->pindir = pindir; spi_data->ftdic_context = ftdic;
- spi_master_ft2232.data = spi_data; - if (register_shutdown(ft2232_shutdown, spi_data)) { free(spi_data); goto ftdi_err; } - register_spi_master(&spi_master_ft2232, NULL); + register_spi_master(&spi_master_ft2232, spi_data);
return 0;
diff --git a/it85spi.c b/it85spi.c index 4d0f988..810f062 100644 --- a/it85spi.c +++ b/it85spi.c @@ -281,7 +281,7 @@ return 0; }
-static struct spi_master spi_master_it85xx = { +static const struct spi_master spi_master_it85xx = { .max_data_read = 64, .max_data_write = 64, .command = it85xx_spi_send_command, @@ -358,15 +358,13 @@ return 1; }
- spi_master_it85xx.data = data; - /* FIXME: Really leave FWH enabled? We can't use this region * anymore since accessing it would mess up IT85 communication. * If we decide to disable FWH for this region, we should print * a debug message about it. */ /* Set this as SPI controller. */ - register_spi_master(&spi_master_it85xx, NULL); + register_spi_master(&spi_master_it85xx, data);
return 0; } diff --git a/it87spi.c b/it87spi.c index 0760ac8..92c95fa 100644 --- a/it87spi.c +++ b/it87spi.c @@ -290,7 +290,7 @@ return 0; }
-static struct spi_master spi_master_it87xx = { +static const struct spi_master spi_master_it87xx = { .max_data_read = 3, .max_data_write = MAX_DATA_UNSPECIFIED, .command = it8716f_spi_send_command, @@ -419,14 +419,13 @@
data->flashport = flashport; data->fast_spi = 1; - spi_master_it87xx.data = data;
register_shutdown(it8716f_shutdown, data);
if (internal_buses_supported & BUS_SPI) msg_pdbg("Overriding chipset SPI with IT87 SPI.\n"); /* FIXME: Add the SPI bus or replace the other buses with it? */ - register_spi_master(&spi_master_it87xx, NULL); + register_spi_master(&spi_master_it87xx, data); return 0; }
diff --git a/jlink_spi.c b/jlink_spi.c index 9fe44a5..6342e7f 100644 --- a/jlink_spi.c +++ b/jlink_spi.c @@ -155,7 +155,7 @@ return 0; }
-static struct spi_master spi_master_jlink_spi = { +static const struct spi_master spi_master_jlink_spi = { /* Maximum data read size in one go (excluding opcode+address). */ .max_data_read = JTAG_MAX_TRANSFER_SIZE - 5, /* Maximum data write size in one go (excluding opcode+address). */ @@ -464,7 +464,6 @@ jlink_data->ctx = jaylink_ctx; jlink_data->devh = jaylink_devh; jlink_data->reset_cs = reset_cs; - spi_master_jlink_spi.data = jlink_data;
/* Ensure that the CS signal is not active initially. */ if (!deassert_cs(jlink_data)) @@ -472,7 +471,7 @@
if (register_shutdown(jlink_spi_shutdown, jlink_data)) goto init_err; - register_spi_master(&spi_master_jlink_spi, NULL); + register_spi_master(&spi_master_jlink_spi, jlink_data);
return 0;
diff --git a/linux_spi.c b/linux_spi.c index 82741bf..7d866f4 100644 --- a/linux_spi.c +++ b/linux_spi.c @@ -113,7 +113,7 @@ return 0; }
-static struct spi_master spi_master_linux = { +static const struct spi_master spi_master_linux = { .features = SPI_MASTER_4BA, .max_data_read = MAX_DATA_UNSPECIFIED, /* TODO? */ .max_data_write = MAX_DATA_UNSPECIFIED, /* TODO? */ @@ -238,13 +238,12 @@ } spi_data->fd = fd; spi_data->max_kernel_buf_size = max_kernel_buf_size; - spi_master_linux.data = spi_data;
if (register_shutdown(linux_spi_shutdown, spi_data)) { free(spi_data); goto init_err; } - register_spi_master(&spi_master_linux, NULL); + register_spi_master(&spi_master_linux, spi_data); return 0;
init_err: diff --git a/lspcon_i2c_spi.c b/lspcon_i2c_spi.c index 6b8dfe6..7f5e3ef 100644 --- a/lspcon_i2c_spi.c +++ b/lspcon_i2c_spi.c @@ -408,7 +408,7 @@ return SPI_GENERIC_ERROR; }
-static struct spi_master spi_master_i2c_lspcon = { +static const struct spi_master spi_master_i2c_lspcon = { .max_data_read = 16, .max_data_write = 12, .command = lspcon_i2c_spi_send_command, @@ -454,10 +454,9 @@ }
data->fd = fd; - spi_master_i2c_lspcon.data = data;
ret |= register_shutdown(lspcon_i2c_spi_shutdown, data); - ret |= register_spi_master(&spi_master_i2c_lspcon, NULL); + ret |= register_spi_master(&spi_master_i2c_lspcon, data);
return ret; } diff --git a/pickit2_spi.c b/pickit2_spi.c index 47316d0..9c423b9 100644 --- a/pickit2_spi.c +++ b/pickit2_spi.c @@ -340,7 +340,7 @@ return millivolt; }
-static struct spi_master spi_master_pickit2 = { +static const struct spi_master spi_master_pickit2 = { .max_data_read = 40, .max_data_write = 40, .command = pickit2_spi_send_command, @@ -477,7 +477,6 @@ return 1; } pickit2_data->pickit2_handle = pickit2_handle; - spi_master_pickit2.data = pickit2_data;
if (pickit2_get_firmware_version(pickit2_handle)) goto init_err_cleanup_exit; @@ -501,7 +500,7 @@
if (register_shutdown(pickit2_shutdown, pickit2_data)) goto init_err_cleanup_exit; - register_spi_master(&spi_master_pickit2, NULL); + register_spi_master(&spi_master_pickit2, pickit2_data);
return 0;
diff --git a/usbblaster_spi.c b/usbblaster_spi.c index b652a3d..115876e 100644 --- a/usbblaster_spi.c +++ b/usbblaster_spi.c @@ -168,7 +168,7 @@ return 0; }
-static struct spi_master spi_master_usbblaster = { +static const struct spi_master spi_master_usbblaster = { .max_data_read = 256, .max_data_write = 256, .command = usbblaster_spi_send_command, @@ -226,13 +226,12 @@ return -1; } usbblaster_data->ftdic = ftdic; - spi_master_usbblaster.data = usbblaster_data;
if (register_shutdown(usbblaster_shutdown, usbblaster_data)) { free(usbblaster_data); return -1; } - register_spi_master(&spi_master_usbblaster, NULL); + register_spi_master(&spi_master_usbblaster, usbblaster_data); return 0; }
diff --git a/wbsio_spi.c b/wbsio_spi.c index 9eed495..d17d49d 100644 --- a/wbsio_spi.c +++ b/wbsio_spi.c @@ -177,7 +177,7 @@ return 0; }
-static struct spi_master spi_master_wbsio = { +static const struct spi_master spi_master_wbsio = { .max_data_read = MAX_DATA_UNSPECIFIED, .max_data_write = MAX_DATA_UNSPECIFIED, .command = wbsio_spi_send_command, @@ -215,8 +215,7 @@ data->spibase = wbsio_spibase;
register_shutdown(wbsio_spi_shutdown, data); - spi_master_wbsio.data = data; - register_spi_master(&spi_master_wbsio, NULL); + register_spi_master(&spi_master_wbsio, data);
return 0; }