gatemate: do not call ftdi-related routines when using alternative cables
This commit is contained in:
parent
3ed1d0d61d
commit
18056180a8
|
|
@ -38,27 +38,30 @@ CologneChip::CologneChip(Jtag* jtag, const std::string &filename,
|
||||||
Device(jtag, filename, file_type, verify, verbose)
|
Device(jtag, filename, file_type, verify, verbose)
|
||||||
{
|
{
|
||||||
_spi = nullptr;
|
_spi = nullptr;
|
||||||
|
|
||||||
/* check which cable/board we're using in order to select pin definitions */
|
/* check which cable/board we're using in order to select pin definitions */
|
||||||
std::string spi_board_name;
|
std::string ftdi_board_name;
|
||||||
if (board_name != "-") {
|
if (board_name != "-") {
|
||||||
spi_board_name = std::regex_replace(board_name, std::regex("jtag"), "spi");
|
ftdi_board_name = std::regex_replace(board_name, std::regex("jtag"), "spi");
|
||||||
} else if (cable_name == "gatemate_pgm") {
|
} else if (cable_name == "gatemate_pgm") {
|
||||||
spi_board_name = "gatemate_pgm_spi";
|
ftdi_board_name = "gatemate_pgm_spi";
|
||||||
}
|
}
|
||||||
|
|
||||||
target_board_t *spi_board = &(board_list[spi_board_name]);
|
if (ftdi_board_name != "") {
|
||||||
|
target_board_t *board = &(board_list[ftdi_board_name]);
|
||||||
|
|
||||||
/* pin configurations valid for both evaluation board and programer */
|
/* pin configurations valid for both evaluation board and programer */
|
||||||
_rstn_pin = spi_board->reset_pin;
|
_rstn_pin = board->reset_pin;
|
||||||
_done_pin = spi_board->done_pin;
|
_done_pin = board->done_pin;
|
||||||
_fail_pin = DBUS6;
|
_fail_pin = DBUS6;
|
||||||
_oen_pin = spi_board->oe_pin;
|
_oen_pin = board->oe_pin;
|
||||||
|
|
||||||
/* cast _jtag->_jtag from JtagInterface to FtdiJtagMPSSE to access GPIO */
|
/* cast _jtag->_jtag from JtagInterface to FtdiJtagMPSSE to access GPIO */
|
||||||
_ftdi_jtag = reinterpret_cast<FtdiJtagMPSSE *>(_jtag->_jtag);
|
_ftdi_jtag = reinterpret_cast<FtdiJtagMPSSE *>(_jtag->_jtag);
|
||||||
|
|
||||||
_ftdi_jtag->gpio_set_input(_done_pin | _fail_pin);
|
_ftdi_jtag->gpio_set_input(_done_pin | _fail_pin);
|
||||||
_ftdi_jtag->gpio_set_output(_rstn_pin | _oen_pin);
|
_ftdi_jtag->gpio_set_output(_rstn_pin | _oen_pin);
|
||||||
|
}
|
||||||
|
|
||||||
if (prg_type == Device::WR_SRAM) {
|
if (prg_type == Device::WR_SRAM) {
|
||||||
_mode = Device::MEM_MODE;
|
_mode = Device::MEM_MODE;
|
||||||
|
|
@ -76,7 +79,7 @@ void CologneChip::reset()
|
||||||
_spi->gpio_clear(_rstn_pin | _oen_pin);
|
_spi->gpio_clear(_rstn_pin | _oen_pin);
|
||||||
usleep(SLEEP_US);
|
usleep(SLEEP_US);
|
||||||
_spi->gpio_set(_rstn_pin);
|
_spi->gpio_set(_rstn_pin);
|
||||||
} else {
|
} else if (_ftdi_jtag) {
|
||||||
_ftdi_jtag->gpio_clear(_rstn_pin | _oen_pin);
|
_ftdi_jtag->gpio_clear(_rstn_pin | _oen_pin);
|
||||||
usleep(SLEEP_US);
|
usleep(SLEEP_US);
|
||||||
_ftdi_jtag->gpio_set(_rstn_pin);
|
_ftdi_jtag->gpio_set(_rstn_pin);
|
||||||
|
|
@ -92,7 +95,7 @@ bool CologneChip::cfgDone()
|
||||||
uint16_t status = 0;
|
uint16_t status = 0;
|
||||||
if (_spi) {
|
if (_spi) {
|
||||||
status = _spi->gpio_get(true);
|
status = _spi->gpio_get(true);
|
||||||
} else {
|
} else if (_ftdi_jtag) {
|
||||||
status = _ftdi_jtag->gpio_get(true);
|
status = _ftdi_jtag->gpio_get(true);
|
||||||
}
|
}
|
||||||
bool done = (status & _done_pin) > 0;
|
bool done = (status & _done_pin) > 0;
|
||||||
|
|
@ -290,9 +293,10 @@ void CologneChip::programJTAG_sram(const uint8_t *data, int length)
|
||||||
progress.done();
|
progress.done();
|
||||||
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
_jtag->set_state(Jtag::RUN_TEST_IDLE);
|
||||||
|
|
||||||
waitCfgDone();
|
if (_ftdi_jtag) {
|
||||||
|
waitCfgDone();
|
||||||
_ftdi_jtag->gpio_set(_oen_pin);
|
_ftdi_jtag->gpio_set(_oen_pin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -317,7 +321,9 @@ void CologneChip::programJTAG_flash(unsigned int offset, const uint8_t *data,
|
||||||
if (_verify)
|
if (_verify)
|
||||||
flash.verify(offset, data, length);
|
flash.verify(offset, data, length);
|
||||||
|
|
||||||
_ftdi_jtag->gpio_set(_oen_pin);
|
if (_ftdi_jtag) {
|
||||||
|
_ftdi_jtag->gpio_set(_oen_pin);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue