main: review SPI mode for efinix active mode

This commit is contained in:
Gwenhael Goavec-Merou 2020-10-31 10:41:44 +01:00
parent 70fb5c8439
commit aa23aff388
1 changed files with 40 additions and 35 deletions

View File

@ -30,6 +30,7 @@
#include "cable.hpp" #include "cable.hpp"
#include "device.hpp" #include "device.hpp"
#include "display.hpp" #include "display.hpp"
#include "efinix.hpp"
#include "ftdispi.hpp" #include "ftdispi.hpp"
#include "gowin.hpp" #include "gowin.hpp"
#include "lattice.hpp" #include "lattice.hpp"
@ -149,7 +150,6 @@ int main(int argc, char **argv)
/* FLASH direct access */ /* FLASH direct access */
if (args.spi || (board && board->mode == COMM_SPI)) { if (args.spi || (board && board->mode == COMM_SPI)) {
FtdiSpi *spi = NULL; FtdiSpi *spi = NULL;
RawParser *bit = NULL;
spi_pins_conf_t pins_config = board->spi_pins_config; spi_pins_conf_t pins_config = board->spi_pins_config;
try { try {
@ -159,6 +159,12 @@ int main(int argc, char **argv)
return EXIT_FAILURE; return EXIT_FAILURE;
} }
if (board->manufacturer == "efinix") {
Efinix target(spi, args.bit_file, board->reset_pin, board->done_pin,
args.verbose);
target.program(args.offset);
} else {
RawParser *bit = NULL;
if (board->reset_pin) { if (board->reset_pin) {
spi->gpio_set_output(board->reset_pin, true); spi->gpio_set_output(board->reset_pin, true);
spi->gpio_clear(board->reset_pin, true); spi->gpio_clear(board->reset_pin, true);
@ -193,8 +199,7 @@ int main(int argc, char **argv)
delete bit; delete bit;
} }
if (board->reset_pin)
if (board->reset_pin) {
spi->gpio_set(board->reset_pin, true); spi->gpio_set(board->reset_pin, true);
} }