Merge branch 'main' into nx_support
[ecpprog.git] / ecpprog / jtag_tap.c
index 538d675bca676383ff337e368defa691c3552e79..a6d508d78c0a9a77e7eb7ae2b56bfcdafbc75870 100644 (file)
@@ -130,9 +130,9 @@ void jtag_deinit(){
 /**
  * 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);
@@ -146,7 +146,7 @@ extern struct ftdi_context mpsse_ftdic;
 
 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++;
@@ -200,10 +200,7 @@ static void jtag_shift_bytes(
        }
        //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);
@@ -269,7 +266,7 @@ void jtag_go_to_state(unsigned state)
                }
 
                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
                };