Fixed wrong assignment of IR width (needed BSCAN IR width somewhere
instead of Tunneled JTAG IR width).
This commit is contained in:
parent
dd2c0b0b9a
commit
38e7bdbaa3
|
@ -416,47 +416,6 @@ static void select_dmi_via_bscan(struct target *target)
|
|||
jtag_add_dr_scan(target->tap, bscan_tunneled_select_dmi_num_fields, bscan_tunneled_select_dmi, TAP_IDLE);
|
||||
}
|
||||
|
||||
static void dmi_scan_via_bscan(struct target *target, uint8_t *out, uint8_t *in, unsigned num_bytes, size_t num_bits)
|
||||
{
|
||||
jtag_add_ir_scan(target->tap, &select_user4, TAP_IDLE);
|
||||
|
||||
uint8_t out_right_shifted_by_one[num_bytes];
|
||||
uint8_t tunneled_dr_width[4] = {num_bits};
|
||||
|
||||
memcpy(out_right_shifted_by_one, out, num_bytes);
|
||||
buffer_shr(out_right_shifted_by_one, num_bytes, 1);
|
||||
|
||||
struct scan_field tunneled_dr[] = {
|
||||
{
|
||||
.num_bits = 1,
|
||||
.out_value = bscan_one,
|
||||
.in_value = NULL,
|
||||
},
|
||||
{
|
||||
.num_bits = 7,
|
||||
.out_value = tunneled_dr_width,
|
||||
.in_value = NULL,
|
||||
},
|
||||
/* for BSCAN tunnel, there is a one-TCK skew between shift in and shift out, so splitting the DR payload into 2 fields */
|
||||
{
|
||||
.num_bits = 1,
|
||||
.out_value = out,
|
||||
.in_value = NULL,
|
||||
},
|
||||
{
|
||||
.num_bits = num_bits,
|
||||
.out_value = out_right_shifted_by_one,
|
||||
.in_value = in,
|
||||
},
|
||||
{
|
||||
.num_bits = 3,
|
||||
.out_value = bscan_zero,
|
||||
.in_value = NULL,
|
||||
}
|
||||
};
|
||||
|
||||
jtag_add_dr_scan(target->tap, DIM(tunneled_dr), tunneled_dr, TAP_IDLE);
|
||||
}
|
||||
|
||||
static uint32_t dtmcontrol_scan_via_bscan(struct target *target, uint32_t out)
|
||||
{
|
||||
|
|
|
@ -179,18 +179,17 @@ struct scan_field select_user4 = {
|
|||
};
|
||||
|
||||
|
||||
uint8_t zero[4] = {0};
|
||||
uint8_t one[4] = {1};
|
||||
uint8_t tunneled_ir_width[4] = {5}; /* overridden by assignment in riscv_init_target */
|
||||
static uint8_t bscan_zero[4];
|
||||
uint8_t bscan_tunneled_ir_width[4] = {5}; /* overridden by assignment in riscv_init_target */
|
||||
struct scan_field _bscan_tunneled_select_dmi[] = {
|
||||
{
|
||||
.num_bits = 1,
|
||||
.out_value = zero,
|
||||
.out_value = bscan_zero,
|
||||
.in_value = NULL,
|
||||
},
|
||||
{
|
||||
.num_bits = 7,
|
||||
.out_value = tunneled_ir_width,
|
||||
.out_value = bscan_tunneled_ir_width,
|
||||
.in_value = NULL,
|
||||
},
|
||||
{
|
||||
|
@ -200,7 +199,7 @@ struct scan_field _bscan_tunneled_select_dmi[] = {
|
|||
},
|
||||
{
|
||||
.num_bits = 3,
|
||||
.out_value = zero,
|
||||
.out_value = bscan_zero,
|
||||
.in_value = NULL,
|
||||
}
|
||||
};
|
||||
|
@ -306,8 +305,8 @@ static int riscv_init_target(struct command_context *cmd_ctx,
|
|||
|
||||
#if BUILD_RISCV_ARTY_BSCAN == 1
|
||||
if (target->bscan_tunnel_ir_width != 0) {
|
||||
select_user4.num_bits = target->bscan_tunnel_ir_width;
|
||||
tunneled_ir_width[0] = target->bscan_tunnel_ir_width;
|
||||
select_user4.num_bits = target->tap->ir_length;
|
||||
bscan_tunneled_ir_width[0] = target->bscan_tunnel_ir_width;
|
||||
bscan_tunneled_select_dmi[2].num_bits = target->bscan_tunnel_ir_width;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue