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 50ee263..a764863 100644 (file)
@@ -1,6 +1,6 @@
 noinst_LTLIBRARIES += %D%/libjtag.la
 
-JTAG_SRCS =
+JTAG_SRCS = %D%/commands.c
 %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_SRCS += %D%/minidummy/minidummy.c %D%/commands.c
+JTAG_SRCS += %D%/minidummy/minidummy.c
 JTAG_MINIDRIVER_DIR = %D%/minidummy
 endif
 
@@ -29,7 +29,6 @@ CLEANFILES += %D%/jtag_minidriver.h
 else
 
 MINIDRIVER_IMP_DIR = %D%/drivers
-JTAG_SRCS += %D%/commands.c
 
 if HLADAPTER
 include %D%/hla/Makefile.am
index ed40755..e2d22cc 100644 (file)
@@ -144,6 +144,18 @@ void jtag_command_queue_reset(void)
        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;
index 947c947..c037596 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_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);
index daf7cd4..4923f96 100644 (file)
@@ -56,18 +56,6 @@ static void jtag_callback_queue_reset(void)
 }
 
 /**
- * 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()
  *
  */
@@ -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;
 
-                       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 */
 
@@ -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++) {
-                               cmd_queue_scan_field_clone(field, in_fields + j);
+                               jtag_scan_field_clone(field, in_fields + j);
 
                                field++;
                        }