if ((jtag_reset_config & RESET_SRST_PULLS_TRST) == 0)
                        jtag_add_reset(0, 1);
        }
-       jtag_add_reset(0, 0);
+
+       /* some targets enable us to connect with srst asserted */
+       if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
+               if (jtag_reset_config & RESET_SRST_NO_GATING)
+                       jtag_add_reset(0, 1);
+               else {
+                       LOG_WARNING("\'srst_nogate\' reset_config option is required");
+                       jtag_add_reset(0, 0);
+               }
+       } else
+               jtag_add_reset(0, 0);
        retval = jtag_execute_queue();
        if (retval != ERROR_OK)
                return retval;
 
        /* guard against oddball hardware: force resets to be inactive */
        jtag_add_reset(0, 0);
+
+       /* some targets enable us to connect with srst asserted */
+       if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
+               if (jtag_reset_config & RESET_SRST_NO_GATING)
+                       jtag_add_reset(0, 1);
+               else
+                       LOG_WARNING("\'srst_nogate\' reset_config option is required");
+       }
        retval = jtag_execute_queue();
        if (retval != ERROR_OK)
                return retval;