Fix spelling of ARM Cortex
[fw/openocd] / src / jtag / drivers / stlink_usb.c
index 18498dd22e2dd8b3f75a50e1818e9badde045536..bbd31d878dd05000e5752a471b28f81e50ceccd3 100644 (file)
@@ -135,9 +135,19 @@ struct stlink_usb_handle_s {
 #define STLINK_DEBUG_ERR_OK            0x80
 #define STLINK_DEBUG_ERR_FAULT         0x81
 #define STLINK_SWD_AP_WAIT             0x10
+#define STLINK_SWD_AP_FAULT            0x11
+#define STLINK_SWD_AP_ERROR            0x12
+#define STLINK_SWD_AP_PARITY_ERROR     0x13
 #define STLINK_JTAG_WRITE_ERROR        0x0c
 #define STLINK_JTAG_WRITE_VERIF_ERROR  0x0d
 #define STLINK_SWD_DP_WAIT             0x14
+#define STLINK_SWD_DP_FAULT            0x15
+#define STLINK_SWD_DP_ERROR            0x16
+#define STLINK_SWD_DP_PARITY_ERROR     0x17
+
+#define STLINK_SWD_AP_WDATA_ERROR      0x18
+#define STLINK_SWD_AP_STICKY_ERROR     0x19
+#define STLINK_SWD_AP_STICKYORUN_ERROR 0x1a
 
 #define STLINK_CORE_RUNNING            0x80
 #define STLINK_CORE_HALTED             0x81
@@ -390,7 +400,7 @@ static int stlink_usb_error_check(void *handle)
                        LOG_DEBUG("wait status SWD_AP_WAIT (0x%x)", STLINK_SWD_AP_WAIT);
                        return ERROR_WAIT;
                case STLINK_SWD_DP_WAIT:
-                       LOG_DEBUG("wait status SWD_DP_WAIT (0x%x)", STLINK_SWD_AP_WAIT);
+                       LOG_DEBUG("wait status SWD_DP_WAIT (0x%x)", STLINK_SWD_DP_WAIT);
                        return ERROR_WAIT;
                case STLINK_JTAG_WRITE_ERROR:
                        LOG_DEBUG("Write error");
@@ -398,6 +408,38 @@ static int stlink_usb_error_check(void *handle)
                case STLINK_JTAG_WRITE_VERIF_ERROR:
                        LOG_DEBUG("Verify error");
                        return ERROR_FAIL;
+               case STLINK_SWD_AP_FAULT:
+                       /* git://git.ac6.fr/openocd commit 657e3e885b9ee10
+                        * returns ERROR_OK with the comment:
+                        * Change in error status when reading outside RAM.
+                        * This fix allows CDT plugin to visualize memory.
+                        */
+                       LOG_DEBUG("STLINK_SWD_AP_FAULT");
+                       return ERROR_FAIL;
+               case STLINK_SWD_AP_ERROR:
+                       LOG_DEBUG("STLINK_SWD_AP_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_AP_PARITY_ERROR:
+                       LOG_DEBUG("STLINK_SWD_AP_PARITY_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_DP_FAULT:
+                       LOG_DEBUG("STLINK_SWD_DP_FAULT");
+                       return ERROR_FAIL;
+               case STLINK_SWD_DP_ERROR:
+                       LOG_DEBUG("STLINK_SWD_DP_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_DP_PARITY_ERROR:
+                       LOG_DEBUG("STLINK_SWD_DP_PARITY_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_AP_WDATA_ERROR:
+                       LOG_DEBUG("STLINK_SWD_AP_WDATA_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_AP_STICKY_ERROR:
+                       LOG_DEBUG("STLINK_SWD_AP_STICKY_ERROR");
+                       return ERROR_FAIL;
+               case STLINK_SWD_AP_STICKYORUN_ERROR:
+                       LOG_DEBUG("STLINK_SWD_AP_STICKYORUN_ERROR");
+                       return ERROR_FAIL;
                default:
                        LOG_DEBUG("unknown/unexpected STLINK status code 0x%x", h->databuf[0]);
                        return ERROR_FAIL;
@@ -974,7 +1016,7 @@ static int stlink_usb_assert_srst(void *handle, int srst)
 
        assert(handle != NULL);
 
-       if (h->jtag_api == STLINK_JTAG_API_V1)
+       if (h->version.stlink == 1)
                return ERROR_COMMAND_NOTFOUND;
 
        stlink_usb_init_buffer(handle, h->rx_ep, 2);
@@ -1122,7 +1164,7 @@ static int stlink_usb_step(void *handle)
 
        if (h->jtag_api == STLINK_JTAG_API_V2) {
                /* TODO: this emulates the v1 api, it should really use a similar auto mask isr
-                * that the cortex-m3 currently does. */
+                * that the Cortex-M3 currently does. */
                stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_HALT|C_MASKINTS|C_DEBUGEN);
                stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_STEP|C_MASKINTS|C_DEBUGEN);
                return stlink_usb_write_debug_reg(handle, DCB_DHCSR, DBGKEY|C_HALT|C_DEBUGEN);