diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2021-08-08 13:51:33 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2021-08-22 20:26:06 +0000 |
commit | 7a61a006decf828f0f75e0602cc17d6efb897f57 (patch) | |
tree | 67feda4a4983cd9c04e92b82d7af95b0e7327450 /src/helper/jep106.c | |
parent | 66175577e1f5b89470bafa1e613e10307996a3fb (diff) | |
download | riscv-openocd-7a61a006decf828f0f75e0602cc17d6efb897f57.zip riscv-openocd-7a61a006decf828f0f75e0602cc17d6efb897f57.tar.gz riscv-openocd-7a61a006decf828f0f75e0602cc17d6efb897f57.tar.bz2 |
jep106: use packed jedec manufacturer code
JEP106 encodes JEDEC-assigned manufacture code as:
a) a sequence of zero or more escape codes 0x7f;
b) an odd-parity bit of the next 7 bits;
c) 7 bits.
The same code is often represented as a single value composed by
the logical OR between:
- the number of escape codes in a), shifted left by 7 positions;
- the 7 bits in c).
This is the preferred packed representation used by this change.
Currently there are only two uses of JEP106 in openocd to get the
manufacturer name:
- to decode the JTAG IDCODE of each TAP, where the JEP106 code is
already packed as in the preferred representation above in bits
IDCODE[11:1];
- to decode the ARM CoreSight PIDR register, where the JEP106 code
is split in 3 parts:
= PIDR3[3:0], corresponding to bits [10:7] of the packed code;
= PIDR2[2:0], corresponding to bits [6:4] of the packed code;
= PIDR1[7:4], corresponding to bits [3:0] of the packed code.
Wrap the existing JEP106 decode function in a simpler API using
the packed code.
Simplify the callers by skipping the bit unpacking.
Change the manufacturer code in CoreSight table dap_partnums[] to
match the packed representation, by removing the always-one bit 7
erroneously taken from PIDR bit JEDEC and included in the former
table.
Change-Id: I63eb4da9e6801fab25e330f1f6b792d2fd619493
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6418
Tested-by: jenkins
Diffstat (limited to 'src/helper/jep106.c')
-rw-r--r-- | src/helper/jep106.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/helper/jep106.c b/src/helper/jep106.c index 33dc61c..5cf769a 100644 --- a/src/helper/jep106.c +++ b/src/helper/jep106.c @@ -27,7 +27,7 @@ static const char * const jep106[][126] = { #include "jep106.inc" }; -const char *jep106_manufacturer(unsigned bank, unsigned id) +const char *jep106_table_manufacturer(unsigned int bank, unsigned int id) { if (id < 1 || id > 126) { LOG_DEBUG("BUG: Caller passed out-of-range JEP106 ID!"); |