Remove remaining references to FTD2XX driver
[fw/openocd] / src / jtag / drivers / openjtag.c
index 3bfcccf6eb485a20f4a3a8314ff34e380ed96bfc..7340119a1418714d16c7bdaaea8c8139a6090f9e 100644 (file)
@@ -1,6 +1,6 @@
 /*******************************************************************************
  *   Driver for OpenJTAG Project (www.openjtag.org)                            *
- *   Compatible with libftdi and ftd2xx drivers.                               *
+ *   Compatible with libftdi drivers.                                          *
  *                                                                             *
  *   Cypress CY7C65215 support                                                 *
  *   Copyright (C) 2015 Vianney le ClĂ©ment de Saint-Marcq, Essensium NV        *
@@ -45,7 +45,7 @@
 
 #include <jtag/interface.h>
 #include <jtag/commands.h>
-#include "libusb_common.h"
+#include "libusb_helper.h"
 
 static enum {
        OPENJTAG_VARIANT_STANDARD,
@@ -82,7 +82,7 @@ typedef enum openjtag_tap_state {
 } openjtag_tap_state_t;
 
 /* OPENJTAG access library includes */
-#include <ftdi.h>
+#include "libftdi_helper.h"
 
 /* OpenJTAG vid/pid */
 static uint16_t openjtag_vid = 0x0403;
@@ -229,7 +229,7 @@ static int openjtag_buf_write_standard(
                return ERROR_JTAG_DEVICE_ERROR;
        }
 
-       *bytes_written += retval;
+       *bytes_written = retval;
 
        return ERROR_OK;
 }
@@ -397,7 +397,7 @@ static int openjtag_init_standard(void)
        uint8_t latency_timer;
 
        /* Open by device description */
-       if (openjtag_device_desc == NULL) {
+       if (!openjtag_device_desc) {
                LOG_WARNING("no openjtag device description specified, "
                                "using default 'Open JTAG Project'");
                openjtag_device_desc = "Open JTAG Project";
@@ -436,8 +436,8 @@ static int openjtag_init_standard(void)
                return ERROR_JTAG_DEVICE_ERROR;
        }
 
-       if (ftdi_usb_purge_buffers(&ftdic) < 0) {
-               LOG_ERROR("ftdi_purge_buffers: %s", ftdic.error_str);
+       if (ftdi_tcioflush(&ftdic) < 0) {
+               LOG_ERROR("ftdi flush: %s", ftdic.error_str);
                return ERROR_JTAG_INIT_FAILED;
        }
 
@@ -449,7 +449,7 @@ static int openjtag_init_cy7c65215(void)
        int ret;
 
        usbh = NULL;
-       ret = jtag_libusb_open(cy7c65215_vids, cy7c65215_pids, NULL, &usbh);
+       ret = jtag_libusb_open(cy7c65215_vids, cy7c65215_pids, NULL, &usbh, NULL);
        if (ret != ERROR_OK) {
                LOG_ERROR("unable to open cy7c65215 device");
                goto err;
@@ -475,7 +475,7 @@ static int openjtag_init_cy7c65215(void)
        return ERROR_OK;
 
 err:
-       if (usbh != NULL)
+       if (usbh)
                jtag_libusb_close(usbh);
        return ERROR_JTAG_INIT_FAILED;
 }
@@ -591,8 +591,7 @@ static int openjtag_execute_tap_queue(void)
 #endif
                        jtag_read_buffer(buffer, openjtag_scan_result_buffer[res_count].command);
 
-                       if (openjtag_scan_result_buffer[res_count].buffer)
-                               free(openjtag_scan_result_buffer[res_count].buffer);
+                       free(openjtag_scan_result_buffer[res_count].buffer);
 
                        res_count++;
                }
@@ -652,7 +651,6 @@ static void openjtag_add_scan(uint8_t *buffer, int length, struct scan_command *
                        /* whole byte */
 
                        /* bits to transfer */
-                       bits = 7;
                        command |= (7 << 5);
                        length -= 8;
                }
@@ -690,7 +688,7 @@ static void openjtag_execute_sleep(struct jtag_command *cmd)
 
 static void openjtag_set_state(uint8_t openocd_state)
 {
-       int8_t state = openjtag_get_tap_state(openocd_state);
+       uint8_t state = openjtag_get_tap_state(openocd_state);
 
        uint8_t buf = 0;
        buf = 0x01;
@@ -805,7 +803,7 @@ static int openjtag_execute_queue(void)
 {
        struct jtag_command *cmd = jtag_command_queue;
 
-       while (cmd != NULL) {
+       while (cmd) {
                openjtag_execute_command(cmd);
                cmd = cmd->next;
        }
@@ -872,16 +870,16 @@ COMMAND_HANDLER(openjtag_handle_variant_command)
        return ERROR_OK;
 }
 
-static const struct command_registration openjtag_command_handlers[] = {
+static const struct command_registration openjtag_subcommand_handlers[] = {
        {
-               .name = "openjtag_device_desc",
+               .name = "device_desc",
                .handler = openjtag_handle_device_desc_command,
                .mode = COMMAND_CONFIG,
                .help = "set the USB device description of the OpenJTAG",
                .usage = "description-string",
        },
        {
-               .name = "openjtag_variant",
+               .name = "variant",
                .handler = openjtag_handle_variant_command,
                .mode = COMMAND_CONFIG,
                .help = "set the OpenJTAG variant",
@@ -890,6 +888,17 @@ static const struct command_registration openjtag_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
+static const struct command_registration openjtag_command_handlers[] = {
+       {
+               .name = "openjtag",
+               .mode = COMMAND_ANY,
+               .help = "perform openjtag management",
+               .chain = openjtag_subcommand_handlers,
+               .usage = "",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+
 static struct jtag_interface openjtag_interface = {
        .execute_queue = openjtag_execute_queue,
 };