digilent_spi: add a driver for the iCEblink40 development board

This is driver that supports the Lattice iCE40 evaluation kits. On the
board is a SPI flash memory chip labeled ST 25P10VP.

Tested to work read/write/erase with "-p digilent_spi -c M25P10" or
with a patch that resets the part beforehands (in which case it gets
detected as a M25P10-A and is way faster due to paged writes).

Change-Id: I7ffcd9a2db4395816f0e8b6ce6c3b0d8e930c9e6
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-on: https://review.coreboot.org/23338
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/programmer.h b/programmer.h
index e49f262..ff81036 100644
--- a/programmer.h
+++ b/programmer.h
@@ -112,6 +112,9 @@
 #if CONFIG_CH341A_SPI == 1
 	PROGRAMMER_CH341A_SPI,
 #endif
+#if CONFIG_DIGILENT_SPI == 1
+	PROGRAMMER_DIGILENT_SPI,
+#endif
 	PROGRAMMER_INVALID /* This must always be the last entry. */
 };
 
@@ -549,6 +552,12 @@
 extern const struct dev_entry devs_ch341a_spi[];
 #endif
 
+/* digilent_spi.c */
+#if CONFIG_DIGILENT_SPI == 1
+int digilent_spi_init(void);
+extern const struct dev_entry devs_digilent_spi[];
+#endif
+
 /* flashrom.c */
 struct decode_sizes {
 	uint32_t parallel;
@@ -614,6 +623,9 @@
 #if CONFIG_CH341A_SPI == 1
 	SPI_CONTROLLER_CH341A_SPI,
 #endif
+#if CONFIG_DIGILENT_SPI == 1
+	SPI_CONTROLLER_DIGILENT_SPI,
+#endif
 };
 
 #define MAX_DATA_UNSPECIFIED 0