Commit d46b2898 authored by Antonio Borneo's avatar Antonio Borneo Committed by Tomas Vanek
Browse files

drivers/stlink_usb: fix stlink_usb_read_regs() for API v2

API v2 implementation for command READALLREGS returns the status
in the first two bytes, followed by two bytes of padding.
This makes the reply 4 bytes longer and changes the offset of the
first register value to 4.

Fix it for the case API v2 and clean-up the management of the
return value.

Change-Id: I448c82bcc0baa72d66fdfe7f0c525b94f8a4468b
Signed-off-by: default avatarAntonio Borneo <>

Tested-by: jenkins
Reviewed-by: default avatarTarek BOCHKATI <>
Reviewed-by: default avatarTomas Vanek <>
parent 720380f9
......@@ -1895,20 +1895,21 @@ static int stlink_usb_read_regs(void *handle)
assert(handle != NULL);
stlink_usb_init_buffer(handle, h->rx_ep, 84);
stlink_usb_init_buffer(handle, h->rx_ep, 88);
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_COMMAND;
if (h->version.jtag_api == STLINK_JTAG_API_V1)
if (h->version.jtag_api == STLINK_JTAG_API_V1) {
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV1_READALLREGS;
res = stlink_usb_xfer(handle, h->databuf, 84);
/* regs data from offset 0 */
} else {
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_READALLREGS;
res = stlink_usb_xfer(handle, h->databuf, 88);
/* status at offset 0, regs data from offset 4 */
res = stlink_usb_xfer(handle, h->databuf, 84);
if (res != ERROR_OK)
return res;
return ERROR_OK;
return res;
/** */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment