jtag: add -ir-bypass option to newtap
[openocd.git] / src / jtag / drivers / nulink_usb.c
index 00738ee4ee2470c5eb715b834ce46c0c3817e321..4fdb85782787d3a9b80dd5d963bde94fdbafa9ad 100644 (file)
@@ -1,19 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2016-2017 by Nuvoton                                    *
  *   Zale Yu <cyyu@nuvoton.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
@@ -22,6 +11,7 @@
 
 /* project specific includes */
 #include <helper/binarybuffer.h>
+#include <jtag/adapter.h>
 #include <jtag/interface.h>
 #include <jtag/hla/hla_layout.h>
 #include <jtag/hla/hla_transport.h>
@@ -32,7 +22,9 @@
 
 #include <hidapi.h>
 
-#define NULINK_READ_TIMEOUT  1000
+#include "libusb_helper.h"
+
+#define NULINK_READ_TIMEOUT  LIBUSB_TIMEOUT_MS
 
 #define NULINK_HID_MAX_SIZE   (64)
 #define NULINK2_HID_MAX_SIZE   (1024)
@@ -253,7 +245,7 @@ static int nulink_usb_write_debug_reg(void *handle, uint32_t addr, uint32_t val)
 {
        struct nulink_usb_handle_s *h = handle;
 
-       LOG_DEBUG("nulink_usb_write_debug_reg 0x%08" PRIX32 "0x%08" PRIX32, addr, val);
+       LOG_DEBUG("nulink_usb_write_debug_reg 0x%08" PRIX32 " 0x%08" PRIX32, addr, val);
 
        nulink_usb_init_buffer(handle, 8 + 12 * 1);
        /* set command ID */
@@ -503,7 +495,7 @@ static int nulink_usb_read_mem8(void *handle, uint32_t addr, uint16_t len,
                aligned_addr = aligned_addr * 4;
                offset = addr - aligned_addr;
                LOG_DEBUG("nulink_usb_read_mem8: unaligned address addr 0x%08" PRIx32
-                               "/aligned addr 0x%08" PRIx32 "offset %" PRIu32,
+                               "/aligned addr 0x%08" PRIx32 " offset %" PRIu32,
                                addr, aligned_addr, offset);
 
                addr = aligned_addr;
@@ -844,11 +836,11 @@ static int nulink_usb_read_mem(void *handle, uint32_t addr, uint32_t size,
                /* the nulink only supports 8/32bit memory read/writes
                 * honour 32bit, all others will be handled as 8bit access */
                if (size == 4) {
-                       /* When in jtag mode the nulink uses the auto-increment functinality.
+                       /* When in jtag mode the nulink uses the auto-increment functionality.
                         * However it expects us to pass the data correctly, this includes
                         * alignment and any page boundaries. We already do this as part of the
                         * adi_v5 implementation, but the nulink is a hla adapter and so this
-                        * needs implementiong manually.
+                        * needs implementing manually.
                         * currently this only affects jtag mode, they do single
                         * access in SWD mode - but this may change and so we do it for both modes */
 
@@ -909,11 +901,11 @@ static int nulink_usb_write_mem(void *handle, uint32_t addr, uint32_t size,
                /* the nulink only supports 8/32bit memory read/writes
                 * honour 32bit, all others will be handled as 8bit access */
                if (size == 4) {
-                       /* When in jtag mode the nulink uses the auto-increment functinality.
+                       /* When in jtag mode the nulink uses the auto-increment functionality.
                         * However it expects us to pass the data correctly, this includes
                         * alignment and any page boundaries. We already do this as part of the
                         * adi_v5 implementation, but the nulink is a hla adapter and so this
-                        * needs implementiong manually.
+                        * needs implementing manually.
                         * currently this only affects jtag mode, do single
                         * access in SWD mode - but this may change and so we do it for both modes */
 
@@ -1054,8 +1046,9 @@ static int nulink_usb_open(struct hl_interface_param_s *param, void **fd)
                goto error_open;
        }
 
-       if (param->serial) {
-               size_t len = mbstowcs(NULL, param->serial, 0);
+       const char *serial = adapter_get_required_serial();
+       if (serial) {
+               size_t len = mbstowcs(NULL, serial, 0);
 
                target_serial = calloc(len + 1, sizeof(wchar_t));
                if (!target_serial) {
@@ -1063,7 +1056,7 @@ static int nulink_usb_open(struct hl_interface_param_s *param, void **fd)
                        goto error_open;
                }
 
-               if (mbstowcs(target_serial, param->serial, len + 1) == (size_t)(-1)) {
+               if (mbstowcs(target_serial, serial, len + 1) == (size_t)(-1)) {
                        LOG_WARNING("unable to convert serial");
                        free(target_serial);
                        target_serial = NULL;

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)