flash/nor/at91samd: Use 32-bit register writes for ST-Link compat
[fw/openocd] / src / jtag / drivers / libusb_helper.c
index e214eb701259e68d25a5977a00945ed7319818b4..53dfd502d3f235007bca63d7dd6994a008797630 100644 (file)
@@ -1,28 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2009 by Zachary T Welch <zw@superlucidity.net>          *
  *                                                                         *
  *   Copyright (C) 2011 by Mauro Gamba <maurillo71@gmail.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/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
-#include <jtag/drivers/jtag_usb_common.h>
+
+#include <string.h>
+
+#include <helper/log.h>
+#include <jtag/adapter.h>
 #include "libusb_helper.h"
-#include "log.h"
 
 /*
  * comment from libusb:
@@ -85,7 +77,7 @@ static bool jtag_libusb_location_equal(struct libusb_device *device)
        }
        dev_bus = libusb_get_bus_number(device);
 
-       return jtag_usb_location_equal(dev_bus, port_path, path_len);
+       return adapter_usb_location_equal(dev_bus, port_path, path_len);
 }
 #else /* HAVE_LIBUSB_GET_PORT_NUMBERS */
 static bool jtag_libusb_location_equal(struct libusb_device *device)
@@ -138,7 +130,7 @@ static bool jtag_libusb_match_serial(struct libusb_device_handle *device,
        char *alternate_serial = adapter_get_alternate_serial(device, dev_desc);
 
        /* check possible failures */
-       if (alternate_serial == NULL)
+       if (!alternate_serial)
                return false;
 
        /* then compare and free the alternate serial */
@@ -154,7 +146,6 @@ static bool jtag_libusb_match_serial(struct libusb_device_handle *device,
 }
 
 int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
-               const char *serial,
                struct libusb_device_handle **out,
                adapter_get_alternate_serial_fn adapter_get_alternate_serial)
 {
@@ -162,6 +153,7 @@ int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
        int retval = ERROR_FAIL;
        bool serial_mismatch = false;
        struct libusb_device_handle *libusb_handle = NULL;
+       const char *serial = adapter_get_required_serial();
 
        if (libusb_init(&jtag_libusb_context) < 0)
                return ERROR_FAIL;
@@ -177,7 +169,7 @@ int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
                if (!jtag_libusb_match_ids(&dev_desc, vids, pids))
                        continue;
 
-               if (jtag_usb_get_location() && !jtag_libusb_location_equal(devs[idx]))
+               if (adapter_usb_get_location() && !jtag_libusb_location_equal(devs[idx]))
                        continue;
 
                err_code = libusb_open(devs[idx], &libusb_handle);
@@ -189,7 +181,7 @@ int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
                }
 
                /* Device must be open to use libusb_get_string_descriptor_ascii. */
-               if (serial != NULL &&
+               if (serial &&
                                !jtag_libusb_match_serial(libusb_handle, &dev_desc, serial, adapter_get_alternate_serial)) {
                        serial_mismatch = true;
                        libusb_close(libusb_handle);
@@ -285,7 +277,7 @@ int jtag_libusb_set_configuration(struct libusb_device_handle *devh,
                return retval;
 
        retval = libusb_get_config_descriptor(udev, configuration, &config);
-       if (retval != 0 || config == NULL)
+       if (retval != 0 || !config)
                return retval;
 
        /* Only change the configuration if it is not already set to the