Skip to content

Commit dede406

Browse files
committed
latticeSSPI: ECP5 driver for Slave SPI mode
1 parent 21d4fcc commit dede406

File tree

5 files changed

+451
-25
lines changed

5 files changed

+451
-25
lines changed

CMakeLists.txt

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ set(OPENFPGALOADER_SOURCE
100100
src/efinix.cpp
101101
src/efinixHexParser.cpp
102102
src/fx2_ll.cpp
103-
src/ice40.cpp
104103
src/ihexParser.cpp
105104
src/pofParser.cpp
106105
src/rawParser.cpp
@@ -109,21 +108,17 @@ set(OPENFPGALOADER_SOURCE
109108
src/usbBlaster.cpp
110109
src/epcq.cpp
111110
src/svf_jtag.cpp
112-
src/jedParser.cpp
113-
src/feaparser.cpp
114111
src/display.cpp
115112
src/jtag.cpp
116113
src/ftdiJtagBitbang.cpp
117114
src/ftdiJtagMPSSE.cpp
118115
src/configBitstreamParser.cpp
119116
src/ftdipp_mpsse.cpp
120117
src/main.cpp
121-
src/latticeBitParser.cpp
122118
src/libusb_ll.cpp
123119
src/gowin.cpp
124120
src/device.cpp
125121
src/jlink.cpp
126-
src/lattice.cpp
127122
src/progressBar.cpp
128123
src/fsparser.cpp
129124
src/mcsParser.cpp
@@ -152,7 +147,6 @@ set(OPENFPGALOADER_HEADERS
152147
src/efinix.hpp
153148
src/efinixHexParser.hpp
154149
src/fx2_ll.hpp
155-
src/ice40.hpp
156150
src/ihexParser.hpp
157151
src/pofParser.hpp
158152
src/progressBar.hpp
@@ -168,8 +162,6 @@ set(OPENFPGALOADER_HEADERS
168162
src/fsparser.hpp
169163
src/part.hpp
170164
src/board.hpp
171-
src/jedParser.hpp
172-
src/feaparser.hpp
173165
src/display.hpp
174166
src/mcsParser.hpp
175167
src/ftdipp_mpsse.hpp
@@ -183,15 +175,32 @@ set(OPENFPGALOADER_HEADERS
183175
src/gowin.hpp
184176
src/cable.hpp
185177
src/ftdispi.hpp
186-
src/lattice.hpp
187-
src/latticeBitParser.hpp
188178
src/xilinx.hpp
189179
src/xilinxMapParser.hpp
190180
src/colognechip.hpp
191181
src/colognechipCfgParser.hpp
192182
src/esp_usb_jtag.hpp
193183
)
194184

185+
# Lattice Drivers / Files parsers.
186+
list(APPEND OPENFPGALOADER_SOURCE
187+
src/ice40.cpp
188+
src/lattice.cpp
189+
src/latticeSSPI.cpp
190+
src/feaparser.cpp
191+
src/jedParser.cpp
192+
src/latticeBitParser.cpp
193+
)
194+
195+
list(APPEND OPENFPGALOADER_HEADERS
196+
src/ice40.hpp
197+
src/lattice.hpp
198+
src/latticeSSPI.hpp
199+
src/jedParser.hpp
200+
src/feaparser.hpp
201+
src/latticeBitParser.hpp
202+
)
203+
195204
link_directories(
196205
${LIBUSB_LIBRARY_DIRS}
197206
${LIBFTDI_LIBRARY_DIRS}

src/board.hpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ typedef struct {
9595
#define JTAG_BITBANG_BOARD(_name, _fpga_part, _cable, _rst, _done, _tms, _tck, _tdi, _tdo, _freq) \
9696
{_name, {"", _cable, _fpga_part, _rst, _done, 0, COMM_JTAG, { _tms, _tck, _tdi, _tdo }, {}, \
9797
_freq, 0, 0, -1}}
98-
#define SPI_BOARD(_name, _manufacturer, _cable, _rst, _done, _oe, _cs, _sck, _si, _so, _holdn, _wpn, _freq) \
99-
{_name, {_manufacturer, _cable, "", _rst, _done, _oe, COMM_SPI, {}, \
98+
#define SPI_BOARD(_name, _manufacturer, _fpga_part, _cable, _rst, _done, _oe, _cs, _sck, _si, _so, _holdn, _wpn, _freq) \
99+
{_name, {_manufacturer, _cable, _fpga_part, _rst, _done, _oe, COMM_SPI, {}, \
100100
{_cs, _sck, _so, _si, _holdn, _wpn}, _freq, 0, 0, -1}}
101101
#define DFU_BOARD(_name, _fpga_part, _cable, _vid, _pid, _alt) \
102102
{_name, {"", _cable, _fpga_part, 0, 0, 0, COMM_DFU, {}, {}, 0, _vid, _pid, _alt}}
@@ -151,30 +151,34 @@ static std::map <std::string, target_board_t> board_list = {
151151
JTAG_BOARD("deca", "10M50DA", "usb-blasterII",0, 0, CABLE_DEFAULT),
152152
JTAG_BOARD("dragonL", "xc6slx25tcsg324", "", 0, 0, CABLE_DEFAULT),
153153
JTAG_BOARD("ecp5_evn", "", "ft2232", 0, 0, CABLE_DEFAULT),
154+
SPI_BOARD("ecp5_generic", "lattice", "ecp5", "",
155+
0, 0, 0,
156+
DBUS3, DBUS0, DBUS1, DBUS2,
157+
0, 0, CABLE_DEFAULT),
154158
JTAG_BOARD("ecpix5", "", "ecpix5-debug", 0, 0, CABLE_DEFAULT),
155159
JTAG_BOARD("ecpix5_r03", "", "ft4232", 0, 0, CABLE_DEFAULT),
156-
SPI_BOARD("fireant", "efinix", "ft232",
160+
SPI_BOARD("fireant", "efinix", "trion", "ft232",
157161
DBUS4, DBUS5, 0, DBUS3, DBUS0, DBUS1, DBUS2, DBUS6, 0, CABLE_DEFAULT),
158162
DFU_BOARD("fomu", "", "dfu", 0x1209, 0x5bf0, 0),
159-
SPI_BOARD("ft2232_spi", "none", "ft2232",
163+
SPI_BOARD("ft2232_spi", "none", "none", "ft2232",
160164
DBUS7, DBUS6, 0,
161165
DBUS4, DBUS0, DBUS1, DBUS2,
162166
0, 0, CABLE_DEFAULT),
163167
JTAG_BOARD("gcm_jtag", "none", "ft4232", 0, 0, CABLE_DEFAULT),
164-
SPI_BOARD("gcm_bootflash", "none", "ft4232_b",
168+
SPI_BOARD("gcm_bootflash", "none", "none", "ft4232_b",
165169
0, 0, 0,
166170
DBUS3, DBUS0, DBUS1, DBUS2,
167171
0, 0, CABLE_DEFAULT),
168-
SPI_BOARD("gatemate_pgm_spi", "colognechip", "gatemate_pgm",
172+
SPI_BOARD("gatemate_pgm_spi", "colognechip", "GM1Ax", "gatemate_pgm",
169173
DBUS4, DBUS5, CBUS0, DBUS3, DBUS0, DBUS1, DBUS2, 0, 0, CABLE_DEFAULT),
170174
JTAG_BOARD("gatemate_evb_jtag", "", "gatemate_evb_jtag", 0, 0, CABLE_DEFAULT),
171-
SPI_BOARD("gatemate_evb_spi", "colognechip", "gatemate_evb_spi",
175+
SPI_BOARD("gatemate_evb_spi", "colognechip", "GM1Ax", "gatemate_evb_spi",
172176
DBUS4, DBUS5, CBUS0, DBUS3, DBUS0, DBUS1, DBUS2, 0, 0, CABLE_DEFAULT),
173177
JTAG_BOARD("genesys2", "xc7k325tffg900", "digilent_b", 0, 0, CABLE_DEFAULT),
174178
JTAG_BOARD("gr740-mini", "", "ft4232hp_b", 0, 0, CABLE_MHZ(1)),
175179
JTAG_BOARD("hseda-xc6slx16", "xc6slx16ftg256", "", 0, 0, CABLE_DEFAULT),
176180
/* most ice40 boards uses the same pinout */
177-
SPI_BOARD("ice40_generic", "lattice", "ft2232",
181+
SPI_BOARD("ice40_generic", "lattice", "ice40", "ft2232",
178182
DBUS7, DBUS6, 0,
179183
DBUS4, DBUS0, DBUS1, DBUS2,
180184
0, 0, CABLE_DEFAULT),
@@ -234,13 +238,13 @@ static std::map <std::string, target_board_t> board_list = {
234238
JTAG_BOARD("te0712_8", "xc7a200tfbg484", "", 0, 0, CABLE_MHZ(15)),
235239
JTAG_BOARD("tec0117", "", "ft2232", 0, 0, CABLE_DEFAULT),
236240
JTAG_BOARD("tec0330", "xc7vx330tffg1157", "", 0, 0, CABLE_MHZ(15)),
237-
SPI_BOARD("titanium_ti60_f225","efinix", "efinix_spi_ft4232",
241+
SPI_BOARD("titanium_ti60_f225","efinix", "titanium", "efinix_spi_ft4232",
238242
DBUS4, DBUS5, DBUS7, DBUS3, DBUS0, DBUS1, DBUS2, DBUS6, 0, CABLE_DEFAULT),
239243
JTAG_BOARD("titanium_ti60_f225_jtag", "ti60f225","efinix_jtag_ft4232", 0, 0, CABLE_DEFAULT),
240-
SPI_BOARD("trion_t20_bga256", "efinix", "efinix_spi_ft2232",
244+
SPI_BOARD("trion_t20_bga256", "efinix", "trion", "efinix_spi_ft2232",
241245
DBUS4, DBUS5, 0, DBUS3, DBUS0, DBUS1, DBUS2, DBUS6, 0, CABLE_DEFAULT),
242246
JTAG_BOARD("trion_t20_bga256_jtag", "t20f256", "efinix_jtag_ft2232", 0, 0, CABLE_DEFAULT),
243-
SPI_BOARD("trion_t120_bga576","efinix", "efinix_spi_ft2232",
247+
SPI_BOARD("trion_t120_bga576", "efinix", "trion", "efinix_spi_ft2232",
244248
DBUS4, DBUS5, DBUS7, DBUS3, DBUS0, DBUS1, DBUS2, DBUS6, 0, CABLE_DEFAULT),
245249
JTAG_BOARD("trion_t120_bga576_jtag", "", "ft2232_b", 0, 0, CABLE_DEFAULT),
246250
JTAG_BITBANG_BOARD("ulx2s", "", "ft232RL", 0, 0,
@@ -259,7 +263,7 @@ static std::map <std::string, target_board_t> board_list = {
259263
JTAG_BOARD("vcu1525", "xcvu9p-fsgd2104", "ft4232", 0, 0, CABLE_MHZ(15)),
260264
JTAG_BOARD("xem8320", "xcau25p-2ffvb676", "" , 0, 0, CABLE_DEFAULT),
261265
JTAG_BOARD("xyloni_jtag", "t8f81", "efinix_jtag_ft4232", 0, 0, CABLE_DEFAULT),
262-
SPI_BOARD("xyloni_spi", "efinix", "efinix_spi_ft4232",
266+
SPI_BOARD("xyloni_spi", "efinix", "trion", "efinix_spi_ft4232",
263267
DBUS4, DBUS5, DBUS7, DBUS3, DBUS0, DBUS1, DBUS2, DBUS6, 0, CABLE_DEFAULT),
264268
JTAG_BOARD("xtrx", "xc7a50tcpg236", "" , 0, 0, CABLE_DEFAULT),
265269
JTAG_BOARD("zc702", "xc7z020clg484", "digilent", 0, 0, CABLE_DEFAULT),

0 commit comments

Comments
 (0)