]> git.sur5r.net Git - openocd/commitdiff
jtag: make cmd_queue_scan_field_clone public
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
 
-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 ed40755b73a5a7dcb45410f56ad5a42b547782cd..e2d22cc94a3436d6efd655a43612c0810d1c6207 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 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_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 daf7cd4266ed6733969eb972fbb92b263f5e4876..4923f96eb879b1d9a42bb0fb194ff0106c3661f6 100644 (file)
@@ -55,18 +55,6 @@ static void jtag_callback_queue_reset(void)
        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()
  *
@@ -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++;
                        }