diff options
author | Steven Stallion <stallion@squareup.com> | 2017-03-26 15:01:56 -0500 |
---|---|---|
committer | Matthias Welwarsky <matthias@welwarsky.de> | 2018-10-16 11:58:17 +0100 |
commit | e72b2601e71f49af10f72c4bb6220ee2061ef173 (patch) | |
tree | 60976dac9e8e006e8eb4c64bc2b48236d9e3a0a3 /src | |
parent | e65acd889c61a424c7bd72fdee5d6a3aee1d8504 (diff) |
jtag: make cmd_queue_scan_field_clone public
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/Makefile.am | 5 | ||||
-rw-r--r-- | src/jtag/commands.c | 12 | ||||
-rw-r--r-- | src/jtag/commands.h | 1 | ||||
-rw-r--r-- | src/jtag/drivers/driver.c | 16 |
4 files changed, 17 insertions, 17 deletions
diff --git a/src/jtag/Makefile.am b/src/jtag/Makefile.am index 50ee263d..a7648639 100644 --- a/src/jtag/Makefile.am +++ b/src/jtag/Makefile.am @@ -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 diff --git a/src/jtag/commands.c b/src/jtag/commands.c index ed40755b..e2d22cc9 100644 --- a/src/jtag/commands.c +++ b/src/jtag/commands.c @@ -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; diff --git a/src/jtag/commands.h b/src/jtag/commands.h index 947c9472..c0375964 100644 --- a/src/jtag/commands.h +++ b/src/jtag/commands.h @@ -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); diff --git a/src/jtag/drivers/driver.c b/src/jtag/drivers/driver.c index daf7cd42..4923f96e 100644 --- a/src/jtag/drivers/driver.c +++ b/src/jtag/drivers/driver.c @@ -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++; } |