openocd: fix SPDX tag format for files .c
[fw/openocd] / src / jtag / drivers / vsllink.c
index 57a7c666f045d67c5c00e36c5d0a90da79955a5c..255ff88a2fb04ba5f0bfa64e60783fa4903a864a 100644 (file)
@@ -1,18 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2009-2010 by Simon Qian <SimonQian@SimonQian.com>       *
- *                                                                         *
- *   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/>. *
  ***************************************************************************/
 
 /* Versaloon is a programming tool for multiple MCUs.
@@ -24,6 +13,7 @@
 #include "config.h"
 #endif
 
+#include <jtag/adapter.h>
 #include <jtag/interface.h>
 #include <jtag/commands.h>
 #include <jtag/swd.h>
@@ -272,6 +262,7 @@ static int vsllink_quit(void)
        vsllink_free_buffer();
        vsllink_usb_close(vsllink_handle);
 
+       libusb_exit(vsllink_handle->libusb_ctx);
        free(vsllink_handle);
 
        return ERROR_OK;
@@ -323,7 +314,7 @@ static int vsllink_init(void)
                versaloon_interface.adaptors.gpio.config(0, GPIO_TRST, 0,
                        GPIO_TRST, GPIO_TRST);
                versaloon_interface.adaptors.swd.init(0);
-               vsllink_swd_frequency(jtag_get_speed_khz() * 1000);
+               vsllink_swd_frequency(adapter_get_speed_khz() * 1000);
                vsllink_swd_switch_seq(JTAG_TO_SWD);
 
        } else {
@@ -339,7 +330,7 @@ static int vsllink_init(void)
                }
 
                versaloon_interface.adaptors.jtag_raw.init(0);
-               versaloon_interface.adaptors.jtag_raw.config(0, jtag_get_speed_khz());
+               versaloon_interface.adaptors.jtag_raw.config(0, adapter_get_speed_khz());
                versaloon_interface.adaptors.gpio.config(0, GPIO_SRST | GPIO_TRST,
                        GPIO_TRST, GPIO_SRST, GPIO_SRST);
        }
@@ -498,21 +489,6 @@ COMMAND_HANDLER(vsllink_handle_usb_pid_command)
        return ERROR_OK;
 }
 
-COMMAND_HANDLER(vsllink_handle_usb_serial_command)
-{
-       if (CMD_ARGC > 1)
-               return ERROR_COMMAND_SYNTAX_ERROR;
-
-       free(versaloon_interface.usb_setting.serialstring);
-
-       if (CMD_ARGC == 1)
-               versaloon_interface.usb_setting.serialstring = strdup(CMD_ARGV[0]);
-       else
-               versaloon_interface.usb_setting.serialstring = NULL;
-
-       return ERROR_OK;
-}
-
 COMMAND_HANDLER(vsllink_handle_usb_bulkin_command)
 {
        if (CMD_ARGC != 1)
@@ -785,14 +761,14 @@ static int vsllink_check_usb_strings(
        char desc_string[256];
        int retval;
 
-       if (versaloon_interface.usb_setting.serialstring) {
+       if (adapter_get_required_serial()) {
                retval = libusb_get_string_descriptor_ascii(usb_device_handle,
                        usb_desc->iSerialNumber, (unsigned char *)desc_string,
                        sizeof(desc_string));
                if (retval < 0)
                        return ERROR_FAIL;
 
-               if (strncmp(desc_string, versaloon_interface.usb_setting.serialstring,
+               if (strncmp(desc_string, adapter_get_required_serial(),
                                sizeof(desc_string)))
                        return ERROR_FAIL;
        }
@@ -887,44 +863,37 @@ static void vsllink_debug_buffer(uint8_t *buffer, int length)
        }
 }
 
-static const struct command_registration vsllink_command_handlers[] = {
+static const struct command_registration vsllink_subcommand_handlers[] = {
        {
-               .name = "vsllink_usb_vid",
+               .name = "usb_vid",
                .handler = &vsllink_handle_usb_vid_command,
                .mode = COMMAND_CONFIG,
                .help = "Set USB VID",
                .usage = "<vid>",
        },
        {
-               .name = "vsllink_usb_pid",
+               .name = "usb_pid",
                .handler = &vsllink_handle_usb_pid_command,
                .mode = COMMAND_CONFIG,
                .help = "Set USB PID",
                .usage = "<pid>",
        },
        {
-               .name = "vsllink_usb_serial",
-               .handler = &vsllink_handle_usb_serial_command,
-               .mode = COMMAND_CONFIG,
-               .help = "Set or disable check for USB serial",
-               .usage = "[<serial>]",
-       },
-       {
-               .name = "vsllink_usb_bulkin",
+               .name = "usb_bulkin",
                .handler = &vsllink_handle_usb_bulkin_command,
                .mode = COMMAND_CONFIG,
                .help = "Set USB input endpoint",
                .usage = "<ep_in>",
        },
        {
-               .name = "vsllink_usb_bulkout",
+               .name = "usb_bulkout",
                .handler = &vsllink_handle_usb_bulkout_command,
                .mode = COMMAND_CONFIG,
                .help = "Set USB output endpoint",
                .usage = "<ep_out>",
        },
        {
-               .name = "vsllink_usb_interface",
+               .name = "usb_interface",
                .handler = &vsllink_handle_usb_interface_command,
                .mode = COMMAND_CONFIG,
                .help = "Set USB output interface",
@@ -933,6 +902,17 @@ static const struct command_registration vsllink_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
+static const struct command_registration vsllink_command_handlers[] = {
+       {
+               .name = "vsllink",
+               .mode = COMMAND_ANY,
+               .help = "perform vsllink management",
+               .chain = vsllink_subcommand_handlers,
+               .usage = "",
+       },
+       COMMAND_REGISTRATION_DONE
+};
+
 static const char * const vsllink_transports[] = {"jtag", "swd", NULL};
 
 static const struct swd_driver vsllink_swd_driver = {