adapter speed: require init script setting and centralize activation from drivers...
[openocd.git] / src / jtag / drivers / rlink.c
index a039080e9cfbaf2769c1b32bf49f7cd5792e6da6..5f53dbceab3c02887651addfe3a2522e8b698208 100644 (file)
@@ -28,8 +28,8 @@
 #endif
 
 /* project specific includes */
-#include "interface.h"
-#include "commands.h"
+#include <jtag/interface.h>
+#include <jtag/commands.h>
 #include "rlink.h"
 #include "rlink_st7.h"
 #include "rlink_ep1_cmd.h"
@@ -110,7 +110,7 @@ static usb_dev_handle *pHDev;
 static
 int
 ep1_generic_commandl(
-       usb_dev_handle  *pHDev,
+       usb_dev_handle  *pHDev_param,
        size_t          length,
        ...
 ) {
@@ -138,7 +138,7 @@ ep1_generic_commandl(
 );
 
        usb_ret = usb_bulk_write(
-               pHDev,
+               pHDev_param,
                USB_EP1OUT_ADDR,
                (char *)usb_buffer, sizeof(usb_buffer),
                USB_TIMEOUT_MS
@@ -219,7 +219,7 @@ ep1_memory_read(
 static
 ssize_t
 ep1_memory_write(
-       usb_dev_handle  *pHDev,
+       usb_dev_handle  *pHDev_param,
        uint16_t        addr,
        size_t          length,
        uint8_t const   *buffer
@@ -256,7 +256,7 @@ ep1_memory_write(
 );
 
                        usb_ret = usb_bulk_write(
-                       pHDev, USB_EP1OUT_ADDR,
+                       pHDev_param, USB_EP1OUT_ADDR,
                        (char *)usb_buffer, sizeof(usb_buffer),
                        USB_TIMEOUT_MS
 );
@@ -324,7 +324,7 @@ static uint8_t dtc_entry_download;
 static
 int
 dtc_load_from_buffer(
-       usb_dev_handle  *pHDev,
+       usb_dev_handle  *pHDev_param,
        const uint8_t           *buffer,
        size_t                  length
 ) {
@@ -341,14 +341,14 @@ dtc_load_from_buffer(
 
        /* Stop the DTC before loading anything. */
        usb_err = ep1_generic_commandl(
-               pHDev, 1,
+               pHDev_param, 1,
                EP1_CMD_DTC_STOP
 );
        if (usb_err < 0) return(usb_err);
 
        while (length) {
                if (length < sizeof(*header)) {
-                       LOG_ERROR("Malformed DTC image\n");
+                       LOG_ERROR("Malformed DTC image");
                        exit(1);
                }
 
@@ -357,7 +357,7 @@ dtc_load_from_buffer(
                length -= sizeof(*header);
 
                if (length < (size_t)header->length + 1) {
-                       LOG_ERROR("Malformed DTC image\n");
+                       LOG_ERROR("Malformed DTC image");
                        exit(1);
                }
 
@@ -375,7 +375,7 @@ dtc_load_from_buffer(
                        case DTCLOAD_LOAD:
                                /* Send the DTC program to ST7 RAM. */
                                usb_err = ep1_memory_write(
-                                       pHDev,
+                                       pHDev_param,
                                        DTC_LOAD_BUFFER,
                                        header->length + 1, buffer
 );
@@ -383,7 +383,7 @@ dtc_load_from_buffer(
 
                                /* Load it into the DTC. */
                                usb_err = ep1_generic_commandl(
-                                       pHDev, 3,
+                                       pHDev_param, 3,
                                        EP1_CMD_DTC_LOAD,
                                                (DTC_LOAD_BUFFER >> 8),
                                                DTC_LOAD_BUFFER
@@ -394,7 +394,7 @@ dtc_load_from_buffer(
 
                        case DTCLOAD_RUN:
                                usb_err = ep1_generic_commandl(
-                                       pHDev, 3,
+                                       pHDev_param, 3,
                                        EP1_CMD_DTC_CALL,
                                                buffer[0],
                                        EP1_CMD_DTC_WAIT
@@ -409,7 +409,7 @@ dtc_load_from_buffer(
 
                        case DTCLOAD_LUT:
                                usb_err = ep1_memory_write(
-                                       pHDev,
+                                       pHDev_param,
                                        ST7_USB_BUF_EP0OUT + lut_start,
                                        header->length + 1, buffer
 );
@@ -417,7 +417,7 @@ dtc_load_from_buffer(
                                break;
 
                        default:
-                               LOG_ERROR("Invalid DTC image record type: 0x%02x\n", header->type);
+                               LOG_ERROR("Invalid DTC image record type: 0x%02x", header->type);
                                exit(1);
                                break;
                }
@@ -494,7 +494,7 @@ dtc_start_download(void) {
 static
 int
 dtc_run_download(
-       usb_dev_handle  *pHDev,
+       usb_dev_handle  *pHDev_param,
        uint8_t *command_buffer,
        int     command_buffer_size,
        uint8_t *reply_buffer,
@@ -504,10 +504,10 @@ dtc_run_download(
        int     usb_err;
        int     i;
 
-       LOG_DEBUG(": %d/%d\n", command_buffer_size, reply_buffer_size);
+       LOG_DEBUG(": %d/%d", command_buffer_size, reply_buffer_size);
 
        usb_err = usb_bulk_write(
-               pHDev,
+               pHDev_param,
                USB_EP2OUT_ADDR,
                (char *)command_buffer, USB_EP2BANK_SIZE,
                USB_TIMEOUT_MS
@@ -518,7 +518,7 @@ dtc_run_download(
        /* Wait for DTC to finish running command buffer */
        for (i = 10;;) {
                usb_err = ep1_generic_commandl(
-                       pHDev, 4,
+                       pHDev_param, 4,
 
                        EP1_CMD_MEMORY_READ,
                                DTC_STATUS_POLL_BYTE >> 8,
@@ -528,7 +528,7 @@ dtc_run_download(
                if (usb_err < 0) return(usb_err);
 
                usb_err = usb_bulk_read(
-                       pHDev,
+                       pHDev_param,
                        USB_EP1IN_ADDR,
                        (char *)ep2_buffer, 1,
                        USB_TIMEOUT_MS
@@ -538,7 +538,7 @@ dtc_run_download(
                if (ep2_buffer[0] & 0x01) break;
 
                if (!--i) {
-                       LOG_ERROR("%s, %d: too many retries waiting for DTC status\n",
+                       LOG_ERROR("%s, %d: too many retries waiting for DTC status",
                                __FILE__, __LINE__
 );
                        return(-ETIMEDOUT);
@@ -549,14 +549,14 @@ dtc_run_download(
        if (!reply_buffer) reply_buffer_size = 0;
        if (reply_buffer_size) {
                usb_err = usb_bulk_read(
-                       pHDev,
+                       pHDev_param,
                        USB_EP2IN_ADDR,
                        (char *)ep2_buffer, sizeof(ep2_buffer),
                        USB_TIMEOUT_MS
 );
 
                if (usb_err < (int)sizeof(ep2_buffer)) {
-                       LOG_ERROR("%s, %d: Read of endpoint 2 returned %d\n",
+                       LOG_ERROR("%s, %d: Read of endpoint 2 returned %d",
                                __FILE__, __LINE__, usb_err
 );
                        return(usb_err);
@@ -691,7 +691,7 @@ dtc_queue_run(void) {
                        NULL, 0
 );
                if (usb_err < 0) {
-                       LOG_ERROR("dtc_run_download: %s\n", usb_strerror());
+                       LOG_ERROR("dtc_run_download: %s", usb_strerror());
                        exit(1);
                }
        } else {
@@ -700,7 +700,7 @@ dtc_queue_run(void) {
                        reply_buffer, dtc_queue.reply_index
 );
                if (usb_err < 0) {
-                       LOG_ERROR("dtc_run_download: %s\n", usb_strerror());
+                       LOG_ERROR("dtc_run_download: %s", usb_strerror());
                        exit(1);
                } else {
                        /* process the reply, which empties the reply queue and frees its entries */
@@ -824,21 +824,21 @@ int
 tap_state_queue_run(void) {
        int     i;
        int     bits;
-       uint8_t byte;
+       uint8_t byte_param;
        int     retval;
 
        retval = 0;
        if (!tap_state_queue.length) return(retval);
        bits = 1;
-       byte = 0;
+       byte_param = 0;
        for (i = tap_state_queue.length; i--;) {
 
-               byte <<= 1;
+               byte_param <<= 1;
                if (tap_state_queue.buffer & 1) {
-                       byte |= 1;
+                       byte_param |= 1;
                }
                if ((bits >= 8) || !i) {
-                       byte <<= (8 - bits);
+                       byte_param <<= (8 - bits);
 
                        /* make sure there's room for stop, byte op, and one byte */
                        if (dtc_queue.cmd_index >= (sizeof(dtc_queue.cmd_buffer) - (1 + 1 + 1))) {
@@ -860,9 +860,9 @@ tap_state_queue_run(void) {
 #endif
 
                        dtc_queue.cmd_buffer[dtc_queue.cmd_index++] =
-                               byte;
+                               byte_param;
 
-                       byte = 0;
+                       byte_param = 0;
                        bits = 1;
                } else {
                        bits++;
@@ -1106,7 +1106,7 @@ rlink_scan(
        uint8_t                 dtc_mask;
 
        if (scan_size < 1) {
-               LOG_ERROR("scan_size cannot be less than 1 bit\n");
+               LOG_ERROR("scan_size cannot be less than 1 bit");
                exit(1);
        }
 
@@ -1230,7 +1230,7 @@ rlink_scan(
                                chunk_bits,
                                cmd
 ) == NULL) {
-                               LOG_ERROR("enqueuing DTC reply entry: %s\n", strerror(errno));
+                               LOG_ERROR("enqueuing DTC reply entry: %s", strerror(errno));
                                exit(1);
                        }
 
@@ -1295,7 +1295,7 @@ rlink_scan(
                        extra_bits,
                        cmd
 ) == NULL) {
-                       LOG_ERROR("enqueuing DTC reply entry: %s\n", strerror(errno));
+                       LOG_ERROR("enqueuing DTC reply entry: %s", strerror(errno));
                        exit(1);
                }
 
@@ -1353,7 +1353,7 @@ rlink_scan(
                                1,
                                cmd
 ) == NULL) {
-                               LOG_ERROR("enqueuing DTC reply entry: %s\n", strerror(errno));
+                               LOG_ERROR("enqueuing DTC reply entry: %s", strerror(errno));
                                exit(1);
                        }
 
@@ -1398,7 +1398,7 @@ int rlink_execute_queue(void)
                switch (cmd->type)
                {
                        case JTAG_RUNTEST:
-                       case JTAG_STATEMOVE:
+                       case JTAG_TLR_RESET:
                        case JTAG_PATHMOVE:
                        case JTAG_SCAN:
                                break;
@@ -1430,7 +1430,7 @@ int rlink_execute_queue(void)
                                        rlink_end_state(cmd->cmd.runtest->end_state);
                                rlink_runtest(cmd->cmd.runtest->num_cycles);
                                break;
-                       case JTAG_STATEMOVE:
+                       case JTAG_TLR_RESET:
 #ifdef _DEBUG_JTAG_IO_
                                LOG_DEBUG("statemove end in %i", cmd->cmd.statemove->end_state);
 #endif
@@ -1503,7 +1503,7 @@ int rlink_speed(int speed)
        for (i = rlink_speed_table_size; i--;) {
                if (rlink_speed_table[i].prescaler == speed) {
                        if (dtc_load_from_buffer(pHDev, rlink_speed_table[i].dtc, rlink_speed_table[i].dtc_size) != 0) {
-                               LOG_ERROR("An error occurred while trying to load DTC code for speed \"%d\".\n", speed);
+                               LOG_ERROR("An error occurred while trying to load DTC code for speed \"%d\".", speed);
                                exit(1);
                        }
 
@@ -1583,16 +1583,16 @@ int rlink_init(void)
        struct usb_device *dev = usb_device(pHDev);
        if (dev->descriptor.bNumConfigurations > 1)
        {
-               LOG_ERROR("Whoops! NumConfigurations is not 1, don't know what to do...\n");
+               LOG_ERROR("Whoops! NumConfigurations is not 1, don't know what to do...");
                return ERROR_FAIL;
        }
        if (dev->config->bNumInterfaces > 1)
        {
-               LOG_ERROR("Whoops! NumInterfaces is not 1, don't know what to do...\n");
+               LOG_ERROR("Whoops! NumInterfaces is not 1, don't know what to do...");
                return ERROR_FAIL;
        }
 
-       LOG_DEBUG("Opened device, pHDev = %p\n", pHDev);
+       LOG_DEBUG("Opened device, pHDev = %p", pHDev);
 
        /* usb_set_configuration required under win32 */
        usb_set_configuration(pHDev, dev->config[0].bConfigurationValue);
@@ -1612,7 +1612,7 @@ int rlink_init(void)
                }
                else
                {
-                       LOG_DEBUG("interface claimed!\n");
+                       LOG_DEBUG("interface claimed!");
                        break;
                }
        } while (--retries);
@@ -1624,7 +1624,7 @@ int rlink_init(void)
        }
        if (usb_set_altinterface(pHDev,0) != 0)
        {
-               LOG_ERROR("Failed to set interface.\n");
+               LOG_ERROR("Failed to set interface.");
                return ERROR_FAIL;
        }
 
@@ -1658,10 +1658,10 @@ int rlink_init(void)
                LOG_ERROR("USB read error: %s", usb_strerror());
                return(ERROR_FAIL);
        }
-       LOG_DEBUG(INTERFACE_NAME" firmware version: %d.%d.%d\n", reply_buffer[0], reply_buffer[1], reply_buffer[2]);
+       LOG_DEBUG(INTERFACE_NAME" firmware version: %d.%d.%d", reply_buffer[0], reply_buffer[1], reply_buffer[2]);
 
        if ((reply_buffer[0] != 0) || (reply_buffer[1] != 0) || (reply_buffer[2] != 3)) {
-               LOG_WARNING("The rlink device is not of the version that the developers have played with.  It may or may not work.\n");
+               LOG_WARNING("The rlink device is not of the version that the developers have played with.  It may or may not work.");
        }
 
        /* Probe port E for adapter presence */
@@ -1692,7 +1692,7 @@ int rlink_init(void)
 );
 
        if ((reply_buffer[0] & ST7_PE_ADAPTER_SENSE_IN) != 0) {
-               LOG_WARNING("target detection problem\n");
+               LOG_WARNING("target detection problem");
        }
 
        ep1_generic_commandl(
@@ -1718,7 +1718,7 @@ int rlink_init(void)
 
 
        if ((reply_buffer[0] & ST7_PE_ADAPTER_SENSE_IN) == 0) {
-               LOG_WARNING("target not plugged in\n");
+               LOG_WARNING("target not plugged in");
        }
 
        /* float ports A and B */
@@ -1771,7 +1771,6 @@ int rlink_init(void)
 
        tap_state_queue_init();
        dtc_queue_init();
-       rlink_speed(jtag_get_speed());
        rlink_reset(0, 0);
 
        return ERROR_OK;

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)