Check during SPI bitbang init that SPI bitbang master configuration is correct

Corresponding to flashrom svn r1092.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
diff --git a/bitbang_spi.c b/bitbang_spi.c
index 9f0e878..b58633a 100644
--- a/bitbang_spi.c
+++ b/bitbang_spi.c
@@ -54,6 +54,16 @@
 
 int bitbang_spi_init(const struct bitbang_spi_master *master, int halfperiod)
 {
+	/* BITBANG_SPI_INVALID is 0, so if someone forgot to initialize ->type,
+	 * we catch it here. Same goes for missing initialization of bitbanging
+	 * functions.
+	 */
+	if (!master || master->type == BITBANG_SPI_INVALID || !master->set_cs ||
+	    !master->set_sck || !master->set_mosi || !master->get_miso) {
+		msg_perr("Incomplete bitbanging SPI master setting! Please "
+			 "report a bug at flashrom@flashrom.org\n");
+		return 1;
+	}
 	bitbang_spi_master = master;
 	bitbang_spi_half_period = halfperiod;
 
diff --git a/flash.h b/flash.h
index c3302c4..3170efe 100644
--- a/flash.h
+++ b/flash.h
@@ -128,7 +128,7 @@
 void programmer_delay(int usecs);
 
 enum bitbang_spi_master_type {
-	BITBANG_SPI_DUMMY	/* remove as soon as there is a real entry */
+	BITBANG_SPI_INVALID	= 0, /* This must always be the first entry. */
 };
 
 struct bitbang_spi_master {