@@ -41,6 +41,7 @@ static void dap_jtag_tms_seq(uint32_t tms_states, size_t clock_cycles);
4141static void dap_jtag_tdi_tdo_seq (uint8_t * data_out , bool final_tms , const uint8_t * data_in , size_t clock_cycles );
4242static void dap_jtag_tdi_seq (bool final_tms , const uint8_t * data_in , size_t clock_cycles );
4343static bool dap_jtag_next (bool tms , bool tdi );
44+ static void dap_jtag_cycle (bool tms , bool tdi , size_t clock_cycles );
4445
4546bool dap_jtag_init (void )
4647{
@@ -60,11 +61,11 @@ bool dap_jtag_init(void)
6061 jtag_proc .jtagtap_tms_seq = dap_jtag_tms_seq ;
6162 jtag_proc .jtagtap_tdi_tdo_seq = dap_jtag_tdi_tdo_seq ;
6263 jtag_proc .jtagtap_tdi_seq = dap_jtag_tdi_seq ;
64+ jtag_proc .jtagtap_cycle = dap_jtag_cycle ;
6365
6466 /* Ensure we're in JTAG mode */
65- for (size_t i = 0 ; i <= 50U ; ++ i )
66- dap_jtag_next (true, false); /* 50 + 1 idle cycles for SWD reset */
67- dap_jtag_tms_seq (0xe73cU , 16U ); /* SWD to JTAG sequence */
67+ dap_jtag_cycle (true, false, 51U ); /* 50 + 1 idle cycles for SWD reset */
68+ dap_jtag_tms_seq (0xe73cU , 16U ); /* SWD to JTAG sequence */
6869
6970 if (dap_quirks & DAP_QUIRK_NO_JTAG_MUTLI_TAP )
7071 DEBUG_WARN ("Multi-TAP JTAG is broken on this adaptor firmware revision, please upgrade it\n" );
@@ -125,6 +126,12 @@ static bool dap_jtag_next(const bool tms, const bool tdi)
125126 return tdo ;
126127}
127128
129+ static void dap_jtag_cycle (const bool tms , const bool tdi , const size_t clock_cycles )
130+ {
131+ for (size_t i = 0 ; i < clock_cycles ; i ++ )
132+ dap_jtag_next (tms , tdi );
133+ }
134+
128135bool dap_jtag_configure (void )
129136{
130137 /* Check if there are no or too many devices */
0 commit comments