/**
* Performs any start-of-day tasks necessary to talk JTAG to our FPGA.
*/
-void jtag_init(int ifnum, const char *devstr, bool slow_clock)
+void jtag_init(int ifnum, const char *devstr, int clkdiv)
{
- mpsse_init(ifnum, devstr, slow_clock);
+ mpsse_init(ifnum, devstr, clkdiv);
jtag_set_current_state(STATE_TEST_LOGIC_RESET);
jtag_go_to_state(STATE_TEST_LOGIC_RESET);
static inline void jtag_pulse_clock_and_read_tdo(bool tms, bool tdi)
{
- *ptr++ = MC_DATA_TMS | MC_DATA_IN | MC_DATA_LSB | MC_DATA_BITS | MC_DATA_OCN;
+ *ptr++ = MC_DATA_TMS | MC_DATA_IN | MC_DATA_LSB | MC_DATA_BITS | MC_DATA_OCN | MC_DATA_ICN;
*ptr++ = 0;
*ptr++ = (tdi ? 0x80 : 0) | (tms ? 0x01 : 0);
rx_cnt++;
}
//printf("jtag_shift_bytes(0x%08x,0x%08x,%u,%s);\n",input_data, output_data, data_bits, must_end ? "true" : "false");
uint32_t byte_count = data_bits / 8;
-
-
-
- data[0] = MC_DATA_OUT | MC_DATA_IN | MC_DATA_LSB | MC_DATA_OCN;
+ data[0] = MC_DATA_OUT | MC_DATA_IN | MC_DATA_LSB | MC_DATA_OCN | MC_DATA_ICN;
data[1] = (byte_count - 1);
data[2] = (byte_count - 1) >> 8;
memcpy(data + 3, input_data, byte_count);
}
uint8_t data[3] = {
- MC_DATA_TMS | MC_DATA_LSB | MC_DATA_BITS,
+ MC_DATA_TMS | MC_DATA_LSB | MC_DATA_BITS | MC_DATA_ICN,
5 - 1,
0b11111
};