jtag: make cmd_queue_scan_field_clone public 82/4082/14
authorSteven Stallion <stallion@squareup.com>
Sun, 26 Mar 2017 20:01:56 +0000 (15:01 -0500)
committerMatthias Welwarsky <matthias@welwarsky.de>
Tue, 16 Oct 2018 10:58:17 +0000 (11:58 +0100)
This patch makes the cmd_queue_scan_field_clone function public. This
permits targets to insert fields without affecting the submitted
scan_field list. This will be used in an upcoming target implementation
that needs to insert additional padding bits.

Change-Id: I8fbd3b9b4e413432471f4f1444048932c8fa189e
Signed-off-by: Steven Stallion <stallion@squareup.com>
Reviewed-on: http://openocd.zylin.com/4082
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
src/jtag/Makefile.am
src/jtag/commands.c
src/jtag/commands.h
src/jtag/drivers/driver.c

index 50ee263d003e65eb16432ae76ffdfce7556cd3fc..a764863991a475bbbd63065138b587a57b56ddd1 100644 (file)
@@ -1,6 +1,6 @@
 noinst_LTLIBRARIES += %D%/libjtag.la
 
 noinst_LTLIBRARIES += %D%/libjtag.la
 
-JTAG_SRCS =
+JTAG_SRCS = %D%/commands.c
 %C%_libjtag_la_LIBADD =
 
 BUILT_SOURCES += %D%/minidriver_imp.h
 %C%_libjtag_la_LIBADD =
 
 BUILT_SOURCES += %D%/minidriver_imp.h
@@ -13,7 +13,7 @@ JTAG_SRCS += %D%/zy1000/zy1000.c
 JTAG_MINIDRIVER_DIR = %D%/zy1000
 endif
 if MINIDRIVER_DUMMY
 JTAG_MINIDRIVER_DIR = %D%/zy1000
 endif
 if MINIDRIVER_DUMMY
-JTAG_SRCS += %D%/minidummy/minidummy.c %D%/commands.c
+JTAG_SRCS += %D%/minidummy/minidummy.c
 JTAG_MINIDRIVER_DIR = %D%/minidummy
 endif
 
 JTAG_MINIDRIVER_DIR = %D%/minidummy
 endif
 
@@ -29,7 +29,6 @@ CLEANFILES += %D%/jtag_minidriver.h
 else
 
 MINIDRIVER_IMP_DIR = %D%/drivers
 else
 
 MINIDRIVER_IMP_DIR = %D%/drivers
-JTAG_SRCS += %D%/commands.c
 
 if HLADAPTER
 include %D%/hla/Makefile.am
 
 if HLADAPTER
 include %D%/hla/Makefile.am
index ed40755b73a5a7dcb45410f56ad5a42b547782cd..e2d22cc94a3436d6efd655a43612c0810d1c6207 100644 (file)
@@ -144,6 +144,18 @@ void jtag_command_queue_reset(void)
        next_command_pointer = &jtag_command_queue;
 }
 
        next_command_pointer = &jtag_command_queue;
 }
 
+/**
+ * Copy a struct scan_field for insertion into the queue.
+ *
+ * This allocates a new copy of out_value using cmd_queue_alloc.
+ */
+void jtag_scan_field_clone(struct scan_field *dst, const struct scan_field *src)
+{
+       dst->num_bits   = src->num_bits;
+       dst->out_value  = buf_cpy(src->out_value, cmd_queue_alloc(DIV_ROUND_UP(src->num_bits, 8)), src->num_bits);
+       dst->in_value   = src->in_value;
+}
+
 enum scan_type jtag_scan_type(const struct scan_command *cmd)
 {
        int i;
 enum scan_type jtag_scan_type(const struct scan_command *cmd)
 {
        int i;
index 947c94725a535d6738b74315cd3cfd45494f4cbb..c0375964cdd30b8d815b6d88352cf8561b3e7967 100644 (file)
@@ -168,6 +168,7 @@ void *cmd_queue_alloc(size_t size);
 void jtag_queue_command(struct jtag_command *cmd);
 void jtag_command_queue_reset(void);
 
 void jtag_queue_command(struct jtag_command *cmd);
 void jtag_command_queue_reset(void);
 
+void jtag_scan_field_clone(struct scan_field *dst, const struct scan_field *src);
 enum scan_type jtag_scan_type(const struct scan_command *cmd);
 int jtag_scan_size(const struct scan_command *cmd);
 int jtag_read_buffer(uint8_t *buffer, const struct scan_command *cmd);
 enum scan_type jtag_scan_type(const struct scan_command *cmd);
 int jtag_scan_size(const struct scan_command *cmd);
 int jtag_read_buffer(uint8_t *buffer, const struct scan_command *cmd);
index daf7cd4266ed6733969eb972fbb92b263f5e4876..4923f96eb879b1d9a42bb0fb194ff0106c3661f6 100644 (file)
@@ -55,18 +55,6 @@ static void jtag_callback_queue_reset(void)
        jtag_callback_queue_tail = NULL;
 }
 
        jtag_callback_queue_tail = NULL;
 }
 
-/**
- * Copy a struct scan_field for insertion into the queue.
- *
- * This allocates a new copy of out_value using cmd_queue_alloc.
- */
-static void cmd_queue_scan_field_clone(struct scan_field *dst, const struct scan_field *src)
-{
-       dst->num_bits   = src->num_bits;
-       dst->out_value  = buf_cpy(src->out_value, cmd_queue_alloc(DIV_ROUND_UP(src->num_bits, 8)), src->num_bits);
-       dst->in_value   = src->in_value;
-}
-
 /**
  * see jtag_add_ir_scan()
  *
 /**
  * see jtag_add_ir_scan()
  *
@@ -101,7 +89,7 @@ int interface_jtag_add_ir_scan(struct jtag_tap *active,
                        /* if TAP is listed in input fields, copy the value */
                        tap->bypass = 0;
 
                        /* if TAP is listed in input fields, copy the value */
                        tap->bypass = 0;
 
-                       cmd_queue_scan_field_clone(field, in_fields);
+                       jtag_scan_field_clone(field, in_fields);
                } else {
                        /* if a TAP isn't listed in input fields, set it to BYPASS */
 
                } else {
                        /* if a TAP isn't listed in input fields, set it to BYPASS */
 
@@ -168,7 +156,7 @@ int interface_jtag_add_dr_scan(struct jtag_tap *active, int in_num_fields,
 #endif /* NDEBUG */
 
                        for (int j = 0; j < in_num_fields; j++) {
 #endif /* NDEBUG */
 
                        for (int j = 0; j < in_num_fields; j++) {
-                               cmd_queue_scan_field_clone(field, in_fields + j);
+                               jtag_scan_field_clone(field, in_fields + j);
 
                                field++;
                        }
 
                                field++;
                        }

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)