diff options
-rw-r--r-- | src/jtag/drivers/ftdi.c | 2 | ||||
-rw-r--r-- | src/target/riscv/riscv-013.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c index d2dd893..2e3e079 100644 --- a/src/jtag/drivers/ftdi.c +++ b/src/jtag/drivers/ftdi.c @@ -197,6 +197,8 @@ static int ftdi_set_signal(const struct signal *s, char value) bool data; bool oe; + LOG_DEBUG_IO("set signal '%s' to '%c'", s->name, value); + if (s->data_mask == 0 && s->oe_mask == 0) { LOG_ERROR("interface doesn't provide signal '%s'", s->name); return ERROR_FAIL; diff --git a/src/target/riscv/riscv-013.c b/src/target/riscv/riscv-013.c index 9122d28..9bd10ac 100644 --- a/src/target/riscv/riscv-013.c +++ b/src/target/riscv/riscv-013.c @@ -2814,6 +2814,12 @@ static int assert_reset(struct target *target) select_dmi(target); + /* When we get here, OpenOCD might just have done some reset, which may + * have affected DMI or DM. Read a register just to make sure + * everything's in sync again. */ + if (dm_read(target, NULL, DM_DMSTATUS) != ERROR_OK) + return ERROR_FAIL; + if (target_has_event_action(target, TARGET_EVENT_RESET_ASSERT)) { /* Run the user-supplied script if there is one. */ target_handle_event(target, TARGET_EVENT_RESET_ASSERT); |