openocd: fix SPDX tag format for files .c
[fw/openocd] / src / jtag / drivers / opendous.c
index 2f8b524f7cacc50f5e4ac073984387ae52ffc536..d0c5277882094a19040577b0563db9803df4974c 100644 (file)
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *                                                                         *
  *   Copyright (C) 2009 by Cahya Wirawan <cahya@gmx.at>                    *
  *                                                                         *
  *   Copyright (C) 2008 by Spencer Oliver                                  *
  *   spen@spen-soft.co.uk                                                  *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -32,7 +21,7 @@
 
 #include <jtag/interface.h>
 #include <jtag/commands.h>
-#include "libusb_common.h"
+#include "libusb_helper.h"
 #include <string.h>
 #include <time.h>
 
@@ -134,7 +123,7 @@ static void opendous_tap_append_scan(int length, uint8_t *buffer, struct scan_co
 
 /* opendous lowlevel functions */
 struct opendous_jtag {
-       struct jtag_libusb_device_handle *usb_handle;
+       struct libusb_device_handle *usb_handle;
 };
 
 static struct opendous_jtag *opendous_usb_open(void);
@@ -144,7 +133,7 @@ static int opendous_usb_write(struct opendous_jtag *opendous_jtag, int out_lengt
 static int opendous_usb_read(struct opendous_jtag *opendous_jtag);
 
 /* helper functions */
-int opendous_get_version_info(void);
+static int opendous_get_version_info(void);
 
 #ifdef _DEBUG_USB_COMMS_
 static void opendous_debug_buffer(uint8_t *buffer, int length);
@@ -161,7 +150,7 @@ COMMAND_HANDLER(opendous_handle_opendous_type_command)
                return ERROR_OK;
 
        /* only if the cable name wasn't overwritten by cmdline */
-       if (opendous_type == NULL) {
+       if (!opendous_type) {
                /* REVISIT first verify that it's listed in cables[] ... */
                opendous_type = strdup(CMD_ARGV[0]);
        }
@@ -234,12 +223,19 @@ static const struct command_registration opendous_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
-struct jtag_interface opendous_interface = {
+static struct jtag_interface opendous_interface = {
+       .execute_queue = opendous_execute_queue,
+};
+
+struct adapter_driver opendous_adapter_driver = {
        .name = "opendous",
+       .transports = jtag_only,
        .commands = opendous_command_handlers,
-       .execute_queue = opendous_execute_queue,
+
        .init = opendous_init,
        .quit = opendous_quit,
+
+       .jtag_ops = &opendous_interface,
 };
 
 static int opendous_execute_queue(void)
@@ -249,10 +245,10 @@ static int opendous_execute_queue(void)
        enum scan_type type;
        uint8_t *buffer;
 
-       while (cmd != NULL) {
+       while (cmd) {
                switch (cmd->type) {
                        case JTAG_RUNTEST:
-                               DEBUG_JTAG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
+                               LOG_DEBUG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles,
                                        cmd->cmd.runtest->end_state);
 
                                if (cmd->cmd.runtest->end_state != -1)
@@ -261,7 +257,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_TLR_RESET:
-                               DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
+                               LOG_DEBUG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
 
                                if (cmd->cmd.statemove->end_state != -1)
                                        opendous_end_state(cmd->cmd.statemove->end_state);
@@ -269,21 +265,21 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_PATHMOVE:
-                               DEBUG_JTAG_IO("pathmove: %i states, end in %i", \
-                                       cmd->cmd.pathmove->num_states, \
+                               LOG_DEBUG_IO("pathmove: %i states, end in %i",
+                                       cmd->cmd.pathmove->num_states,
                                        cmd->cmd.pathmove->path[cmd->cmd.pathmove->num_states - 1]);
 
                                opendous_path_move(cmd->cmd.pathmove->num_states, cmd->cmd.pathmove->path);
                                break;
 
                        case JTAG_SCAN:
-                               DEBUG_JTAG_IO("scan end in %i", cmd->cmd.scan->end_state);
+                               LOG_DEBUG_IO("scan end in %i", cmd->cmd.scan->end_state);
 
                                if (cmd->cmd.scan->end_state != -1)
                                        opendous_end_state(cmd->cmd.scan->end_state);
 
                                scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer);
-                               DEBUG_JTAG_IO("scan input, length = %d", scan_size);
+                               LOG_DEBUG_IO("scan input, length = %d", scan_size);
 
 #ifdef _DEBUG_USB_COMMS_
                                opendous_debug_buffer(buffer, (scan_size + 7) / 8);
@@ -293,7 +289,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_RESET:
-                               DEBUG_JTAG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
+                               LOG_DEBUG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
 
                                opendous_tap_execute();
 
@@ -303,7 +299,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_SLEEP:
-                               DEBUG_JTAG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
+                               LOG_DEBUG_IO("sleep %" PRIu32, cmd->cmd.sleep->us);
                                opendous_tap_execute();
                                jtag_sleep(cmd->cmd.sleep->us);
                                break;
@@ -324,7 +320,7 @@ static int opendous_init(void)
 
        cur_opendous_probe = opendous_probes;
 
-       if (opendous_type == NULL) {
+       if (!opendous_type) {
                opendous_type = strdup("opendous");
                LOG_WARNING("No opendous_type specified, using default 'opendous'");
        }
@@ -379,25 +375,17 @@ static int opendous_quit(void)
 {
        opendous_usb_close(opendous_jtag_handle);
 
-       if (usb_out_buffer) {
-               free(usb_out_buffer);
-               usb_out_buffer = NULL;
-       }
+       free(usb_out_buffer);
+       usb_out_buffer = NULL;
 
-       if (usb_in_buffer) {
-               free(usb_in_buffer);
-               usb_in_buffer = NULL;
-       }
+       free(usb_in_buffer);
+       usb_in_buffer = NULL;
 
-       if (pending_scan_results_buffer) {
-               free(pending_scan_results_buffer);
-               pending_scan_results_buffer = NULL;
-       }
+       free(pending_scan_results_buffer);
+       pending_scan_results_buffer = NULL;
 
-       if (opendous_type) {
-               free(opendous_type);
-               opendous_type = NULL;
-       }
+       free(opendous_type);
+       opendous_type = NULL;
 
        return ERROR_OK;
 }
@@ -528,7 +516,7 @@ void opendous_simple_command(uint8_t command, uint8_t _data)
 {
        int result;
 
-       DEBUG_JTAG_IO("0x%02x 0x%02x", command, _data);
+       LOG_DEBUG_IO("0x%02x 0x%02x", command, _data);
 
        usb_out_buffer[0] = 2;
        usb_out_buffer[1] = 0;
@@ -545,7 +533,7 @@ int opendous_get_status(void)
        return ERROR_OK;
 }
 
-int opendous_get_version_info(void)
+static int opendous_get_version_info(void)
 {
        return ERROR_OK;
 }
@@ -589,7 +577,7 @@ void opendous_tap_append_step(int tms, int tdi)
                if (!bits)
                        tms_buffer[tap_index] = 0;
 
-               tms_buffer[tap_index] |= (_tdi << bits)|(_tms << (bits + 1)) ;
+               tms_buffer[tap_index] |= (_tdi << bits)|(_tms << (bits + 1));
                tap_length++;
        } else
                LOG_ERROR("opendous_tap_append_step, overflow");
@@ -597,7 +585,7 @@ void opendous_tap_append_step(int tms, int tdi)
 
 void opendous_tap_append_scan(int length, uint8_t *buffer, struct scan_command *command)
 {
-       DEBUG_JTAG_IO("append scan, length = %d", length);
+       LOG_DEBUG_IO("append scan, length = %d", length);
 
        struct pending_scan_result *pending_scan_result = &pending_scan_results_buffer[pending_scan_results_length];
        int i;
@@ -679,7 +667,7 @@ int opendous_tap_execute(void)
                        /* Copy to buffer */
                        buf_set_buf(tdo_buffer, first, buffer, 0, length);
 
-                       DEBUG_JTAG_IO("pending scan result, length = %d", length);
+                       LOG_DEBUG_IO("pending scan result, length = %d", length);
 
 #ifdef _DEBUG_USB_COMMS_
                        opendous_debug_buffer(buffer, byte_length_out);
@@ -690,8 +678,7 @@ int opendous_tap_execute(void)
                                return ERROR_JTAG_QUEUE_FAILED;
                        }
 
-                       if (pending_scan_result->buffer != NULL)
-                               free(pending_scan_result->buffer);
+                       free(pending_scan_result->buffer);
                }
 
                opendous_tap_init();
@@ -707,12 +694,12 @@ struct opendous_jtag *opendous_usb_open(void)
 {
        struct opendous_jtag *result;
 
-       struct jtag_libusb_device_handle *devh;
-       if (jtag_libusb_open(opendous_probe->VID, opendous_probe->PID, NULL, &devh) != ERROR_OK)
+       struct libusb_device_handle *devh;
+       if (jtag_libusb_open(opendous_probe->VID, opendous_probe->PID, &devh, NULL) != ERROR_OK)
                return NULL;
 
        jtag_libusb_set_configuration(devh, 0);
-       jtag_libusb_claim_interface(devh, 0);
+       libusb_claim_interface(devh, 0);
 
        result = malloc(sizeof(*result));
        result->usb_handle = devh;
@@ -763,14 +750,14 @@ int opendous_usb_write(struct opendous_jtag *opendous_jtag, int out_length)
                        LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
                        FUNC_WRITE_DATA, 0, 0, (char *) usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
        } else {
-               result = jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT, \
-                       (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
+               jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT,
+                       (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT, &result);
        }
 #ifdef _DEBUG_USB_COMMS_
        LOG_DEBUG("USB write end: %d bytes", result);
 #endif
 
-       DEBUG_JTAG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
+       LOG_DEBUG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
 
 #ifdef _DEBUG_USB_COMMS_
        opendous_debug_buffer(usb_out_buffer, out_length);
@@ -790,13 +777,13 @@ int opendous_usb_read(struct opendous_jtag *opendous_jtag)
                        LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
                        FUNC_READ_DATA, 0, 0, (char *) usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
        } else {
-               result = jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
-                       (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
+               jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
+                       (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT, &result);
        }
 #ifdef _DEBUG_USB_COMMS_
        LOG_DEBUG("USB read end: %d bytes", result);
 #endif
-       DEBUG_JTAG_IO("opendous_usb_read, result = %d", result);
+       LOG_DEBUG_IO("opendous_usb_read, result = %d", result);
 
 #ifdef _DEBUG_USB_COMMS_
        opendous_debug_buffer(usb_in_buffer, result);