stlink: add hardware srst functions to stlink/v2
Change-Id: Ib82b6a1116b9f396f1933cc5526733334254fd62 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/579 Tested-by: jenkins Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com> Reviewed-by: Mathias Küster <kesmtp@freenet.de>__archive__
parent
9cc733ae31
commit
5d1cabb142
|
@ -719,6 +719,8 @@ static enum target_state stlink_usb_v2_get_status(void *handle)
|
||||||
|
|
||||||
if (status & S_HALT)
|
if (status & S_HALT)
|
||||||
return TARGET_HALTED;
|
return TARGET_HALTED;
|
||||||
|
else if (status & S_RESET_ST)
|
||||||
|
return TARGET_RESET;
|
||||||
|
|
||||||
return TARGET_RUNNING;
|
return TARGET_RUNNING;
|
||||||
}
|
}
|
||||||
|
@ -783,6 +785,32 @@ static int stlink_usb_reset(void *handle)
|
||||||
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
|
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int stlink_usb_assert_srst(void *handle, int srst)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
struct stlink_usb_handle_s *h;
|
||||||
|
|
||||||
|
assert(handle != NULL);
|
||||||
|
|
||||||
|
h = (struct stlink_usb_handle_s *)handle;
|
||||||
|
|
||||||
|
if (h->jtag_api == STLINK_JTAG_API_V1)
|
||||||
|
return ERROR_COMMAND_NOTFOUND;
|
||||||
|
|
||||||
|
stlink_usb_init_buffer(handle, STLINK_RX_EP, 2);
|
||||||
|
|
||||||
|
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_COMMAND;
|
||||||
|
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_DRIVE_NRST;
|
||||||
|
h->cmdbuf[h->cmdidx++] = srst;
|
||||||
|
|
||||||
|
res = stlink_usb_xfer(handle, h->databuf, 2);
|
||||||
|
|
||||||
|
if (res != ERROR_OK)
|
||||||
|
return res;
|
||||||
|
|
||||||
|
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
static int stlink_usb_run(void *handle)
|
static int stlink_usb_run(void *handle)
|
||||||
{
|
{
|
||||||
|
@ -1223,6 +1251,8 @@ struct stlink_layout_api_s stlink_usb_layout_api = {
|
||||||
/** */
|
/** */
|
||||||
.reset = stlink_usb_reset,
|
.reset = stlink_usb_reset,
|
||||||
/** */
|
/** */
|
||||||
|
.assert_srst = stlink_usb_assert_srst,
|
||||||
|
/** */
|
||||||
.run = stlink_usb_run,
|
.run = stlink_usb_run,
|
||||||
/** */
|
/** */
|
||||||
.halt = stlink_usb_halt,
|
.halt = stlink_usb_halt,
|
||||||
|
|
|
@ -37,6 +37,8 @@ struct stlink_layout_api_s {
|
||||||
/** */
|
/** */
|
||||||
int (*reset) (void *fd);
|
int (*reset) (void *fd);
|
||||||
/** */
|
/** */
|
||||||
|
int (*assert_srst) (void *fd, int srst);
|
||||||
|
/** */
|
||||||
int (*run) (void *fd);
|
int (*run) (void *fd);
|
||||||
/** */
|
/** */
|
||||||
int (*halt) (void *fd);
|
int (*halt) (void *fd);
|
||||||
|
|
Loading…
Reference in New Issue