Kees Jongenburger <kees.jongenburger@gmail.com> old" syntax target command appears...
[fw/openocd] / src / target / cortex_swjdp.c
index db92a91fe2ffacbc3b247d25b97326045fbb312c..4363dfdd5b9317735ca8cf15a5cd98196c307b5c 100644 (file)
@@ -2,6 +2,9 @@
  *   Copyright (C) 2006 by Magnus Lundin                                   *
  *   lundin@mlu.mine.nu                                                    *
  *                                                                         *
+ *   Copyright (C) 2008 by Spencer Oliver                                  *
+ *   spen@spen-soft.co.uk                                                  *
+ *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
@@ -35,6 +38,7 @@
 #include "cortex_swjdp.h"
 #include "jtag.h"
 #include "log.h"
+#include "time_support.h"
 #include <stdlib.h>
 
 /*
@@ -172,7 +176,6 @@ int scan_inout_check_u32(swjdp_common_t *swjdp, u8 instr, u8 reg_addr, u8 RnW, u
 int swjdp_transaction_endcheck(swjdp_common_t *swjdp)
 {
        int retval;
-       int waitcount = 0;
        u32 ctrlstat;
 
        keep_alive();
@@ -196,14 +199,14 @@ int swjdp_transaction_endcheck(swjdp_common_t *swjdp)
        
        swjdp->ack = swjdp->ack & 0x7;
        
+       long long then=timeval_ms();
        while (swjdp->ack != 2)
        {
                if (swjdp->ack == 1)
                {
-                       waitcount++;
-                       if (waitcount > 100)
+                       if ((timeval_ms()-then) > 1000)
                        {
-                               LOG_WARNING("Timeout waiting for ACK = OK/FAULT in SWJDP transaction");
+                               LOG_WARNING("Timeout (1000ms) waiting for ACK = OK/FAULT in SWJDP transaction");
                                return ERROR_JTAG_DEVICE_ERROR;
                        }
                }