From 6c16417ee9177cbc220b9b1d7f3b51a2034d2204 Mon Sep 17 00:00:00 2001 From: Alexey Starikovskiy Date: Thu, 7 Sep 2023 11:29:46 +0300 Subject: [PATCH] Merge UPDATE_DR and UPDATE_IR handling in JTAG state machines --- src/jtag.cpp | 10 +--------- src/jtag.hpp | 2 +- src/xvc_server.cpp | 4 +--- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/jtag.cpp b/src/jtag.cpp index 53412f6..24e2241 100644 --- a/src/jtag.cpp +++ b/src/jtag.cpp @@ -555,6 +555,7 @@ void Jtag::set_state(tapState_t newState) } break; case UPDATE_DR: + case UPDATE_IR: if (newState == RUN_TEST_IDLE) { tms = 0; _state = RUN_TEST_IDLE; @@ -616,15 +617,6 @@ void Jtag::set_state(tapState_t newState) _state = UPDATE_IR; } break; - case UPDATE_IR: - if (newState == RUN_TEST_IDLE) { - tms = 0; - _state = RUN_TEST_IDLE; - } else { - tms = 1; - _state = SELECT_DR_SCAN; - } - break; case UNKNOWN:; // UNKNOWN should not be valid... throw std::exception(); diff --git a/src/jtag.hpp b/src/jtag.hpp index 8ac77a2..55c1299 100644 --- a/src/jtag.hpp +++ b/src/jtag.hpp @@ -85,7 +85,7 @@ class Jtag { PAUSE_IR = 13, EXIT2_IR = 14, UPDATE_IR = 15, - UNKNOWN = 999 + UNKNOWN = 16, }; int shiftIR(unsigned char *tdi, unsigned char *tdo, int irlen, diff --git a/src/xvc_server.cpp b/src/xvc_server.cpp index f650465..5d325a1 100644 --- a/src/xvc_server.cpp +++ b/src/xvc_server.cpp @@ -403,6 +403,7 @@ Jtag::tapState_t XVC_server::set_state(const uint8_t *tms_seq, uint32_t len) _state = (tms) ? Jtag::UPDATE_DR : Jtag::SHIFT_DR; break; case Jtag::UPDATE_DR: + case Jtag::UPDATE_IR: _state = (tms) ? Jtag::SELECT_DR_SCAN : Jtag::RUN_TEST_IDLE; break; @@ -424,9 +425,6 @@ Jtag::tapState_t XVC_server::set_state(const uint8_t *tms_seq, uint32_t len) case Jtag::EXIT2_IR: _state = (tms) ? Jtag::UPDATE_IR : Jtag::SHIFT_IR; break; - case Jtag::UPDATE_IR: - _state = (tms) ? Jtag::SELECT_DR_SCAN : Jtag::RUN_TEST_IDLE; - break; default: /* pass */ break;