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.

flashrom-stable: Updated `dirtyjtag_spi` and `dediprog`
                 that were added/refactored earlier.

Change-Id: Id7821f1db3284b7b5b3d0abfd878b979c53870a1
Signed-off-by: Nico Huber <nico.h@gmx.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54067
Original-Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72200
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/pickit2_spi.c b/pickit2_spi.c
index 5d0b573..62641f2 100644
--- a/pickit2_spi.c
+++ b/pickit2_spi.c
@@ -342,7 +342,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;
@@ -500,7 +499,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;