dsp563xx_once: Correct wrong return value on jtag communication errors
authorMathias K <kesmtp@freenet.de>
Thu, 17 Feb 2011 08:05:42 +0000 (09:05 +0100)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Thu, 17 Feb 2011 08:22:17 +0000 (09:22 +0100)
This patch change the return value on a jtag communication error
to TARGET_UNKNOWN because this function should return the current
target status and not a error code from the underlying api call.
Also the validity of the jtag_status is extended to all static
bits in this value.

src/target/dsp563xx_once.c

index d19323ee7371bdb5ef7f137c538e9c1026a55b5a..d95dcdfd3209079a629987902130ffeda1e967bc 100644 (file)
@@ -29,6 +29,9 @@
 #include "dsp563xx.h"
 #include "dsp563xx_once.h"
 
+#define JTAG_STATUS_STATIC_MASK                0x03
+#define JTAG_STATUS_STATIC_VALUE       0x01
+
 #define JTAG_STATUS_NORMAL             0x01
 #define JTAG_STATUS_STOPWAIT           0x05
 #define JTAG_STATUS_BUSY               0x09
@@ -100,19 +103,16 @@ int dsp563xx_once_target_status(struct jtag_tap *tap)
        uint8_t jtag_status;
 
        if ((err = dsp563xx_jtag_sendinstr(tap, &jtag_status, JTAG_INSTR_ENABLE_ONCE)) != ERROR_OK)
-               return err;
+               return TARGET_UNKNOWN;
        if ((err = jtag_execute_queue()) != ERROR_OK)
-               return err;
+               return TARGET_UNKNOWN;
 
-       if ((jtag_status & 1) != 1)
-       {
+       /* verify correct static status pattern */
+       if ( (jtag_status & JTAG_STATUS_STATIC_MASK) != JTAG_STATUS_STATIC_VALUE )
                return TARGET_UNKNOWN;
-       }
 
        if (jtag_status != JTAG_STATUS_DEBUG)
-       {
                return TARGET_RUNNING;
-       }
 
        return TARGET_HALTED;
 }