Skip to content

Commit 6d51c0c

Browse files
committed
platforms/litex_acorn_baseboard.py: added FTDI cable detection before calling openFPGALoader
1 parent 2f774ef commit 6d51c0c

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

litex_boards/platforms/litex_acorn_baseboard.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
# https://github.com/enjoy-digital/litex-acorn-baseboard
99

10+
import subprocess
11+
1012
from litex.build.generic_platform import *
1113
from litex.build.lattice import LatticeECP5Platform
1214
from litex.build.openfpgaloader import OpenFPGALoader
@@ -131,8 +133,18 @@ class Platform(LatticeECP5Platform):
131133
def __init__(self, toolchain="trellis", **kwargs):
132134
LatticeECP5Platform.__init__(self, "LFE5UM5G-45F-8BG381I", _io, _connectors, toolchain=toolchain, **kwargs)
133135

136+
def detect_ftdi_chip(self):
137+
lsusb_log = subprocess.run(['lsusb'], capture_output=True, text=True)
138+
for ftdi_chip in ["ft232", "ft2232", "ft4232"]:
139+
if f"Future Technology Devices International, Ltd {ftdi_chip.upper()}" in lsusb_log.stdout:
140+
return "digilent_hs2" if ftdi_chip == "ft232" else ftdi_chip
141+
return None
142+
134143
def create_programmer(self):
135-
return OpenFPGALoader("ecpix5")
144+
ftdi_chip = self.detect_ftdi_chip()
145+
if ftdi_chip is None:
146+
raise RuntimeError("No compatible FTDI device found.")
147+
return OpenFPGALoader("ecpix5", cable=ftdi_chip)
136148

137149
def do_finalize(self, fragment):
138150
LatticeECP5Platform.do_finalize(self, fragment)

0 commit comments

Comments
 (0)