summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCastro, Omar Eduardo <omar.eduardo.castro@intel.com>2021-03-05 22:34:37 +0300
committerJae Hyun Yoo <jae.hyun.yoo@linux.intel.com>2021-10-20 01:10:38 +0300
commite0ffca8e4f9ad7dd89a462c63faee606fd2359eb (patch)
tree900138613f667330ad26e2eb2c71f9d1cb29e28b
parent98b171955ae9f0860fc3313fddf4d081e8517b57 (diff)
downloadlinux-e0ffca8e4f9ad7dd89a462c63faee606fd2359eb.tar.xz
Move JTAG state matrix to JTAG core header file
- Move TDI state matrix to core header file - These changes are done based on feedback from Paul Fertser, from the OpenOCD. Test: SPR ASD Sanity and jtag_test finished successfully. ICX ASD Sanity and jtag_test finished successfully. Change-Id: Idb612e50d5a8ea5929f7c9241d279c345587983a Signed-off-by: Castro, Omar Eduardo <omar.eduardo.castro@intel.com>
-rw-r--r--drivers/jtag/jtag-aspeed.c128
-rw-r--r--include/uapi/linux/jtag.h131
2 files changed, 131 insertions, 128 deletions
diff --git a/drivers/jtag/jtag-aspeed.c b/drivers/jtag/jtag-aspeed.c
index 5524b2dfe3ee..653fab91f248 100644
--- a/drivers/jtag/jtag-aspeed.c
+++ b/drivers/jtag/jtag-aspeed.c
@@ -224,134 +224,6 @@ struct aspeed_jtag_functions {
const struct jtag_low_level_functions *aspeed_jtag_llops;
};
-/*
- * This structure represents a TMS cycle, as expressed in a set of bits and a
- * count of bits (note: there are no start->end state transitions that require
- * more than 1 byte of TMS cycles)
- */
-struct tms_cycle {
- unsigned char tmsbits;
- unsigned char count;
-};
-
-/*
- * This is the complete set TMS cycles for going from any TAP state to any
- * other TAP state, following a "shortest path" rule.
- */
-static const struct tms_cycle _tms_cycle_lookup[][16] = {
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* TLR */{{0x00, 0}, {0x00, 1}, {0x02, 2}, {0x02, 3}, {0x02, 4}, {0x0a, 4},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x0a, 5}, {0x2a, 6}, {0x1a, 5}, {0x06, 3}, {0x06, 4}, {0x06, 5},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x16, 5}, {0x16, 6}, {0x56, 7}, {0x36, 6} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* RTI */{{0x07, 3}, {0x00, 0}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x05, 4}, {0x15, 5}, {0x0d, 4}, {0x03, 2}, {0x03, 3}, {0x03, 4},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x1b, 5} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* SelDR*/{{0x03, 2}, {0x03, 3}, {0x00, 0}, {0x00, 1}, {0x00, 2}, {0x02, 2},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x02, 3}, {0x0a, 4}, {0x06, 3}, {0x01, 1}, {0x01, 2}, {0x01, 3},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x05, 3}, {0x05, 4}, {0x15, 5}, {0x0d, 4} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* CapDR*/{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x00, 0}, {0x00, 1}, {0x01, 1},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x01, 2}, {0x05, 3}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* SDR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x00, 0}, {0x01, 1},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x01, 2}, {0x05, 3}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* Ex1DR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x02, 3}, {0x00, 0},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x00, 1}, {0x02, 2}, {0x01, 1}, {0x07, 3}, {0x07, 4}, {0x07, 5},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x17, 5}, {0x17, 6}, {0x57, 7}, {0x37, 6} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* PDR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x01, 2}, {0x05, 3},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x00, 0}, {0x01, 1}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* Ex2DR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x00, 1}, {0x02, 2},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x02, 3}, {0x00, 0}, {0x01, 1}, {0x07, 3}, {0x07, 4}, {0x07, 5},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x17, 5}, {0x17, 6}, {0x57, 7}, {0x37, 6} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* UpdDR*/{{0x07, 3}, {0x00, 1}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x05, 4}, {0x15, 5}, {0x00, 0}, {0x03, 2}, {0x03, 3}, {0x03, 4},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x1b, 5} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* SelIR*/{{0x01, 1}, {0x01, 2}, {0x05, 3}, {0x05, 4}, {0x05, 5}, {0x15, 5},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x15, 6}, {0x55, 7}, {0x35, 6}, {0x00, 0}, {0x00, 1}, {0x00, 2},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x02, 2}, {0x02, 3}, {0x0a, 4}, {0x06, 3} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* CapIR*/{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x00, 0}, {0x00, 1},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x01, 1}, {0x01, 2}, {0x05, 3}, {0x03, 2} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* SIR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x0f, 5}, {0x00, 0},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x01, 1}, {0x01, 2}, {0x05, 3}, {0x03, 2} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* Ex1IR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x03, 4}, {0x0b, 4},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x0b, 5}, {0x2b, 6}, {0x1b, 5}, {0x07, 3}, {0x07, 4}, {0x02, 3},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x00, 0}, {0x00, 1}, {0x02, 2}, {0x01, 1} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* PIR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x0f, 5}, {0x01, 2},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x05, 3}, {0x00, 0}, {0x01, 1}, {0x03, 2} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* Ex2IR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x03, 4}, {0x0b, 4},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x0b, 5}, {0x2b, 6}, {0x1b, 5}, {0x07, 3}, {0x07, 4}, {0x00, 1},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x02, 2}, {0x02, 3}, {0x00, 0}, {0x01, 1} },
-
-/* TLR RTI SelDR CapDR SDR Ex1DR*/
-/* UpdIR*/{{0x07, 3}, {0x00, 1}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
-/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
- {0x05, 4}, {0x15, 5}, {0x0d, 4}, {0x03, 2}, {0x03, 3}, {0x03, 4},
-/* Ex1IR PIR Ex2IR UpdIR*/
- {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x00, 0} },
-};
-
#ifdef DEBUG_JTAG
static char *end_status_str[] = { "tlr", "idle", "selDR", "capDR",
"sDR", "ex1DR", "pDR", "ex2DR",
diff --git a/include/uapi/linux/jtag.h b/include/uapi/linux/jtag.h
index 256ec7231629..b500266cfd61 100644
--- a/include/uapi/linux/jtag.h
+++ b/include/uapi/linux/jtag.h
@@ -235,4 +235,135 @@ struct jtag_mode {
#define JTAG_SIOCMODE _IOW(__JTAG_IOCTL_MAGIC, 5, unsigned int)
#define JTAG_IOCBITBANG _IOW(__JTAG_IOCTL_MAGIC, 6, unsigned int)
+/**
+ * struct tms_cycle - This structure represents a tms cycle state.
+ *
+ * @tmsbits: is the bitwise representation of the needed tms transitions to
+ * move from one state to another.
+ * @count: number of jumps needed to move to the needed state.
+ *
+ */
+struct tms_cycle {
+ unsigned char tmsbits;
+ unsigned char count;
+};
+
+/*
+ * This is the complete set TMS cycles for going from any TAP state to any
+ * other TAP state, following a "shortest path" rule.
+ */
+static const struct tms_cycle _tms_cycle_lookup[][16] = {
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* TLR */{{0x00, 0}, {0x00, 1}, {0x02, 2}, {0x02, 3}, {0x02, 4}, {0x0a, 4},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x0a, 5}, {0x2a, 6}, {0x1a, 5}, {0x06, 3}, {0x06, 4}, {0x06, 5},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x16, 5}, {0x16, 6}, {0x56, 7}, {0x36, 6} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* RTI */{{0x07, 3}, {0x00, 0}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x05, 4}, {0x15, 5}, {0x0d, 4}, {0x03, 2}, {0x03, 3}, {0x03, 4},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x1b, 5} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* SelDR*/{{0x03, 2}, {0x03, 3}, {0x00, 0}, {0x00, 1}, {0x00, 2}, {0x02, 2},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x02, 3}, {0x0a, 4}, {0x06, 3}, {0x01, 1}, {0x01, 2}, {0x01, 3},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x05, 3}, {0x05, 4}, {0x15, 5}, {0x0d, 4} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* CapDR*/{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x00, 0}, {0x00, 1}, {0x01, 1},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x01, 2}, {0x05, 3}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* SDR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x00, 0}, {0x01, 1},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x01, 2}, {0x05, 3}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* Ex1DR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x02, 3}, {0x00, 0},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x00, 1}, {0x02, 2}, {0x01, 1}, {0x07, 3}, {0x07, 4}, {0x07, 5},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x17, 5}, {0x17, 6}, {0x57, 7}, {0x37, 6} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* PDR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x01, 2}, {0x05, 3},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x00, 0}, {0x01, 1}, {0x03, 2}, {0x0f, 4}, {0x0f, 5}, {0x0f, 6},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x2f, 6}, {0x2f, 7}, {0xaf, 8}, {0x6f, 7} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* Ex2DR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x00, 1}, {0x02, 2},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x02, 3}, {0x00, 0}, {0x01, 1}, {0x07, 3}, {0x07, 4}, {0x07, 5},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x17, 5}, {0x17, 6}, {0x57, 7}, {0x37, 6} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* UpdDR*/{{0x07, 3}, {0x00, 1}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x05, 4}, {0x15, 5}, {0x00, 0}, {0x03, 2}, {0x03, 3}, {0x03, 4},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x1b, 5} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* SelIR*/{{0x01, 1}, {0x01, 2}, {0x05, 3}, {0x05, 4}, {0x05, 5}, {0x15, 5},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x15, 6}, {0x55, 7}, {0x35, 6}, {0x00, 0}, {0x00, 1}, {0x00, 2},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x02, 2}, {0x02, 3}, {0x0a, 4}, {0x06, 3} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* CapIR*/{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x00, 0}, {0x00, 1},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x01, 1}, {0x01, 2}, {0x05, 3}, {0x03, 2} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* SIR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x0f, 5}, {0x00, 0},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x01, 1}, {0x01, 2}, {0x05, 3}, {0x03, 2} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* Ex1IR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x03, 4}, {0x0b, 4},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x0b, 5}, {0x2b, 6}, {0x1b, 5}, {0x07, 3}, {0x07, 4}, {0x02, 3},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x00, 0}, {0x00, 1}, {0x02, 2}, {0x01, 1} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* PIR */{{0x1f, 5}, {0x03, 3}, {0x07, 3}, {0x07, 4}, {0x07, 5}, {0x17, 5},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x17, 6}, {0x57, 7}, {0x37, 6}, {0x0f, 4}, {0x0f, 5}, {0x01, 2},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x05, 3}, {0x00, 0}, {0x01, 1}, {0x03, 2} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* Ex2IR*/{{0x0f, 4}, {0x01, 2}, {0x03, 2}, {0x03, 3}, {0x03, 4}, {0x0b, 4},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x0b, 5}, {0x2b, 6}, {0x1b, 5}, {0x07, 3}, {0x07, 4}, {0x00, 1},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x02, 2}, {0x02, 3}, {0x00, 0}, {0x01, 1} },
+
+/* TLR RTI SelDR CapDR SDR Ex1DR*/
+/* UpdIR*/{{0x07, 3}, {0x00, 1}, {0x01, 1}, {0x01, 2}, {0x01, 3}, {0x05, 3},
+/* PDR Ex2DR UpdDR SelIR CapIR SIR*/
+ {0x05, 4}, {0x15, 5}, {0x0d, 4}, {0x03, 2}, {0x03, 3}, {0x03, 4},
+/* Ex1IR PIR Ex2IR UpdIR*/
+ {0x0b, 4}, {0x0b, 5}, {0x2b, 6}, {0x00, 0} },
+};
+
#endif /* __UAPI_LINUX_JTAG_H */