This is an automated email from Gerrit.

PoroCYon ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/6373

-- gerrit

commit 01885562ecacab1b02e21b5c2a3c51b70f1972d2
Author: PoroCYon <[email protected]>
Date:   Wed Jul 21 04:17:08 2021 +0200

    jtag/cmsis_dap: update for newest protocol version
    
    The capabilities INFO command can now return two bytes, without this
    patch, the capabilities would simply not be read and left as 0 (i.e. no
    capabilities).
    
    cf. 
https://github.com/ARM-software/CMSIS_5/blob/116866fd74756c88096e37cbd0066fadad583cad/CMSIS/DAP/Firmware/Source/DAP.c#L100-L111
    
    Change-Id: Ibd894971edf1c120cae08089e5515ce5e9972323
    Signed-off-by: PoroCYon <[email protected]>

diff --git a/src/jtag/drivers/cmsis_dap.c b/src/jtag/drivers/cmsis_dap.c
index e498ea8..0dea830 100644
--- a/src/jtag/drivers/cmsis_dap.c
+++ b/src/jtag/drivers/cmsis_dap.c
@@ -1016,10 +1016,12 @@ static int cmsis_dap_get_caps_info(void)
        if (retval != ERROR_OK)
                return retval;
 
-       if (data[0] == 1) {
+       if (data[0] == 1 || data[0] == 2) {
                uint8_t caps = data[1];
+               uint8_t caps2 = 0;
+               if (data[0] == 2) caps2 = data[2];
 
-               cmsis_dap_handle->caps = caps;
+               cmsis_dap_handle->caps = (uint16_t)caps | ((uint16_t)caps2 << 
8);
 
                if (caps & INFO_CAPS_SWD)
                        LOG_INFO("CMSIS-DAP: %s", info_caps_str[0]);
diff --git a/src/jtag/drivers/cmsis_dap.h b/src/jtag/drivers/cmsis_dap.h
index 634a62c..f6d9df2 100644
--- a/src/jtag/drivers/cmsis_dap.h
+++ b/src/jtag/drivers/cmsis_dap.h
@@ -16,7 +16,7 @@ struct cmsis_dap {
        uint16_t packet_buffer_size;
        uint8_t *command;
        uint8_t *response;
-       uint8_t caps;
+       uint16_t caps;
        uint8_t mode;
        uint32_t swo_buf_sz;
        bool trace_enabled;

-- 

Reply via email to