summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flash.h6
-rw-r--r--flashrom.c6
-rw-r--r--ft2232_spi.c30
-rw-r--r--spi.c7
4 files changed, 21 insertions, 28 deletions
diff --git a/flash.h b/flash.h
index a571be746..c5234dcfa 100644
--- a/flash.h
+++ b/flash.h
@@ -86,7 +86,9 @@ enum programmer {
PROGRAMMER_NIC3COM,
PROGRAMMER_SATASII,
PROGRAMMER_IT87SPI,
+#if FT2232_SPI_SUPPORT == 1
PROGRAMMER_FT2232SPI,
+#endif
#if SERPROG_SUPPORT == 1
PROGRAMMER_SERPROG,
#endif
@@ -436,9 +438,13 @@ enum spi_controller {
SPI_CONTROLLER_SB600,
SPI_CONTROLLER_VIA,
SPI_CONTROLLER_WBSIO,
+#if FT2232_SPI_SUPPORT == 1
SPI_CONTROLLER_FT2232,
+#endif
SPI_CONTROLLER_DUMMY,
+ SPI_CONTROLLER_INVALID /* This must always be the last entry. */
};
+extern const int spi_programmer_count;
struct spi_command {
unsigned int writecnt;
unsigned int readcnt;
diff --git a/flashrom.c b/flashrom.c
index acdb38b17..fb45bd0bf 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -122,6 +122,7 @@ const struct programmer_entry programmer_table[] = {
.delay = internal_delay,
},
+#if FT2232_SPI_SUPPORT == 1
{
.name = "ft2232spi",
.init = ft2232_spi_init,
@@ -138,6 +139,7 @@ const struct programmer_entry programmer_table[] = {
.chip_writen = fallback_chip_writen,
.delay = internal_delay,
},
+#endif
#if SERPROG_SUPPORT == 1
{
@@ -610,6 +612,10 @@ int main(int argc, char *argv[])
fprintf(stderr, "Programmer table miscompilation!\n");
exit(1);
}
+ if (spi_programmer_count - 1 != SPI_CONTROLLER_INVALID) {
+ fprintf(stderr, "SPI programmer table miscompilation!\n");
+ exit(1);
+ }
setbuf(stdout, NULL);
while ((opt = getopt_long(argc, argv, "rRwvnVEfc:m:l:i:p:Lzh",
diff --git a/ft2232_spi.c b/ft2232_spi.c
index db4db175a..00490fed2 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#if FT2232_SPI_SUPPORT == 1
+
#include <stdio.h>
#include <stdint.h>
#include <string.h>
@@ -25,9 +27,6 @@
#include <ctype.h>
#include "flash.h"
#include "spi.h"
-
-#if FT2232_SPI_SUPPORT == 1
-
#include <ftdi.h>
/* the 'H' chips can run internally at either 12Mhz or 60Mhz.
@@ -297,29 +296,4 @@ int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf)
return 0;
}
-#else
-int ft2232_spi_init(void)
-{
- fprintf(stderr, "FT2232 SPI support was not compiled in\n");
- exit(1);
-}
-
-int ft2232_spi_send_command(unsigned int writecnt, unsigned int readcnt,
- const unsigned char *writearr, unsigned char *readarr)
-{
- fprintf(stderr, "FT2232 SPI support was not compiled in\n");
- exit(1);
-}
-
-int ft2232_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len)
-{
- fprintf(stderr, "FT2232 SPI support was not compiled in\n");
- exit(1);
-}
-
-int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf)
-{
- fprintf(stderr, "FT2232 SPI support was not compiled in\n");
- exit(1);
-}
#endif
diff --git a/spi.c b/spi.c
index 85d1e47ef..7f678a139 100644
--- a/spi.c
+++ b/spi.c
@@ -82,12 +82,14 @@ const struct spi_programmer spi_programmer[] = {
.write_256 = wbsio_spi_write_1,
},
+#if FT2232_SPI_SUPPORT == 1
{ /* SPI_CONTROLLER_FT2232 */
.command = ft2232_spi_send_command,
.multicommand = default_spi_send_multicommand,
.read = ft2232_spi_read,
.write_256 = ft2232_spi_write_256,
},
+#endif
{ /* SPI_CONTROLLER_DUMMY */
.command = dummy_spi_send_command,
@@ -95,8 +97,11 @@ const struct spi_programmer spi_programmer[] = {
.read = NULL,
.write_256 = NULL,
},
+
+ {}, /* This entry corresponds to SPI_CONTROLLER_INVALID. */
};
+const int spi_programmer_count = ARRAY_SIZE(spi_programmer);
int spi_send_command(unsigned int writecnt, unsigned int readcnt,
const unsigned char *writearr, unsigned char *readarr)
@@ -293,7 +298,9 @@ int probe_spi_rdid4(struct flashchip *flash)
case SPI_CONTROLLER_VIA:
case SPI_CONTROLLER_SB600:
case SPI_CONTROLLER_WBSIO:
+#if FT2232_SPI_SUPPORT == 1
case SPI_CONTROLLER_FT2232:
+#endif
case SPI_CONTROLLER_DUMMY:
return probe_spi_rdid_generic(flash, 4);
default: