BACKPORT: 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.

Backport was needed for it85spi.c because it has two init functions
and two register_spi_master() callsites, one in each.

BUG=none
BRANCH=none
TEST=builds

Original-Change-Id: Id7821f1db3284b7b5b3d0abfd878b979c53870a1
Original-Signed-off-by: Nico Huber <nico.h@gmx.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54067
Original-Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Original-Reviewed-by: Angel Pons <th3fanbus@gmail.com>
(cherry picked from commit 90739d147f1d9b90789873fdbe74da6c616cad6b)

Change-Id: I6f65608bc6f8048aee045d10ed67b1539f915d51
Signed-off-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/flashrom/+/2902157
Reviewed-by: Sam McNally <sammc@chromium.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Commit-Queue: Edward O'Callaghan <quasisec@chromium.org>
Tested-by: Edward O'Callaghan <quasisec@chromium.org>
diff --git a/linux_spi.c b/linux_spi.c
index db1d5e0..59092ad 100644
--- a/linux_spi.c
+++ b/linux_spi.c
@@ -120,7 +120,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? */
@@ -299,13 +299,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: