stlink: add STLINK_F_HAS_GETLASTRWSTATUS2
Starting from stlink V2J15 the API STLINK_DEBUG_APIV2_GETLASTRWSTATUS is obsoleted and replaced by the new API STLINK_DEBUG_APIV2_GETLASTRWSTATUS2. Manage the two cases to be prepared for an eventual future removal of the obsolete API. Change-Id: Ic4498a652865b2eb6148825138c2f6855a06ba47 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/4714 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>log_output
parent
717d3af087
commit
3e2967c75a
|
@ -242,6 +242,8 @@ struct stlink_usb_handle_s {
|
|||
#define STLINK_DEBUG_APIV2_GETLASTRWSTATUS 0x3B
|
||||
#define STLINK_DEBUG_APIV2_DRIVE_NRST 0x3C
|
||||
|
||||
#define STLINK_DEBUG_APIV2_GETLASTRWSTATUS2 0x3E
|
||||
|
||||
#define STLINK_DEBUG_APIV2_START_TRACE_RX 0x40
|
||||
#define STLINK_DEBUG_APIV2_STOP_TRACE_RX 0x41
|
||||
#define STLINK_DEBUG_APIV2_GET_TRACE_NB 0x42
|
||||
|
@ -279,6 +281,7 @@ enum stlink_mode {
|
|||
#define STLINK_F_HAS_SWD_SET_FREQ (1UL << 1)
|
||||
#define STLINK_F_HAS_JTAG_SET_FREQ (1UL << 2)
|
||||
#define STLINK_F_HAS_MEM_16BIT (1UL << 3)
|
||||
#define STLINK_F_HAS_GETLASTRWSTATUS2 (1UL << 4)
|
||||
|
||||
/* aliases */
|
||||
#define STLINK_F_HAS_TARGET_VOLT STLINK_F_HAS_TRACE
|
||||
|
@ -675,6 +678,10 @@ static int stlink_usb_version(void *handle)
|
|||
if (h->version.jtag >= 13)
|
||||
flags |= STLINK_F_HAS_TRACE;
|
||||
|
||||
/* preferred API to get last R/W status from J15 */
|
||||
if (h->version.jtag >= 15)
|
||||
flags |= STLINK_F_HAS_GETLASTRWSTATUS2;
|
||||
|
||||
/* API to set SWD frequency from J22 */
|
||||
if (h->version.jtag >= 22)
|
||||
flags |= STLINK_F_HAS_SWD_SET_FREQ;
|
||||
|
@ -1659,9 +1666,15 @@ static int stlink_usb_get_rw_status(void *handle)
|
|||
stlink_usb_init_buffer(handle, h->rx_ep, 2);
|
||||
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_COMMAND;
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_GETLASTRWSTATUS;
|
||||
if (h->version.flags & STLINK_F_HAS_GETLASTRWSTATUS2) {
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_GETLASTRWSTATUS2;
|
||||
|
||||
res = stlink_usb_xfer(handle, h->databuf, 2);
|
||||
res = stlink_usb_xfer(handle, h->databuf, 12);
|
||||
} else {
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_GETLASTRWSTATUS;
|
||||
|
||||
res = stlink_usb_xfer(handle, h->databuf, 2);
|
||||
}
|
||||
|
||||
if (res != ERROR_OK)
|
||||
return res;
|
||||
|
|
Loading…
Reference in New Issue