* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
/* A reserved manufacturer ID is used in END_OF_CHAIN_FLAG, so we
* know that no valid TAP will have it as an IDCODE value.
*/
-#define END_OF_CHAIN_FLAG 0x000000ff
+#define END_OF_CHAIN_FLAG 0xffffffff
/* a larger IR length than we ever expect to autoprobe */
#define JTAG_IRLEN_MAX 60
{
/*
* Some devices, such as AVR8, will output all 1's instead
- * of TDI input value at end of chain. Allow those values
+ * of TDI input value at end of chain. Allow those values
* instead of failing.
*/
- return idcode == END_OF_CHAIN_FLAG || idcode == 0xFFFFFFFF;
+ return idcode == END_OF_CHAIN_FLAG;
}
/**
return retval;
}
+ if (jtag->speed == NULL) {
+ LOG_INFO("This adapter doesn't support configurable speed");
+ return ERROR_OK;
+ }
+
if (CLOCK_MODE_UNSELECTED == clock_mode) {
LOG_ERROR("An adapter speed is not selected in the init script."
" Insert a call to adapter_khz or jtag_rclk to proceed.");
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;