On 23/02/17 01:41 PM, Andres Rodriguez wrote:
On 2017-02-23 09:46 AM, Tom St Denis wrote:
To simplify scripting you can now use * for ipnames as well.
Thanks for the patch, this change is very welcome.
Signed-off-by: Tom St Denis <[email protected]>
---
doc/umr.1 | 6 ++-
src/app/main.c | 5 ++-
src/app/scan.c | 21 ++++++++++
src/app/set_bit.c | 117
+++++++++++++++++++++++++++---------------------------
src/app/set_reg.c | 91 +++++++++++++++++++++---------------------
5 files changed, 131 insertions(+), 109 deletions(-)
diff --git a/doc/umr.1 b/doc/umr.1
index 5ed2c3bb93ae..a12dfb0a00ff 100644
--- a/doc/umr.1
+++ b/doc/umr.1
@@ -34,7 +34,7 @@ Look up an MMIO register by address and bitfield
decode the value specified.
Write a value specified in hex to a register specified with a complete
register path in the form <
.B asicname.ipname.regname
->. For example, fiji.uvd6.mmUVD_CGC_GATE. The value of asicname can be
+>. For example, fiji.uvd6.mmUVD_CGC_GATE. The value of asicname
and/or ipname can be
.B *
to simplify scripting. This command can be used multiple times to
write to multiple registers in a single invocation.
@@ -52,7 +52,9 @@ command but also allows
for the regname field.
.IP "--scan, -s <string>"
Scan and print an IP block by name, for example,
-.B uvd5.
+.B uvd6
+or
+.B carrizo.uvd6.
Can be used multiple times in a single invocation.
.IP "--ring, -R <string>(from:to)"
Read the contents of a ring named by the string without the
diff --git a/src/app/main.c b/src/app/main.c
index 8364d54c5227..99e014888571 100644
--- a/src/app/main.c
+++ b/src/app/main.c
@@ -364,12 +364,13 @@ int main(int argc, char **argv)
"\n\t--write, -w <address> <number>\n\t\tWrite a value in hex to a
register specified as a register path in the"
"\n\t\tform <asicname.ipname.regname>. For instance
\"tonga.uvd5.mmUVD_SOFT_RESET\"."
"\n\t\tCan be used multiple times to set multiple registers. You
can"
- "\n\t\tspecify * for asicname to simplify scripts.\n"
+ "\n\t\tspecify * for asicname and/or ipname to simplify scripts.\n"
"\n\t--writebit, -wb <string> <number>\n\t\tWrite a value in hex to a
register bitfield specified as in --write but"
"\n\t\tthe addition of the bitfield name. For instance:
\"*.gfx80.mmRLC_PG_CNTL.PG_OVERRIDE\"\n"
"\n\t--read, -r <string>\n\t\tRead a value from a register and print
it to stdout. This command"
"\n\t\tuses the same path notation as --write. It also accepts *
for regname.\n"
-"\n\t--scan, -s <string>\n\t\tScan and print an ip block by name,
e.g. \"uvd5\". Can be used multiple times.\n"
+"\n\t--scan, -s <string>\n\t\tScan and print an ip block by name,
e.g. \"uvd6\" or \"carrizo.uvd6\"."
+ "\n\t\tCan be used multiple times.\n"
"\n\t--ring, -R <string>([from:to])\n\t\tRead the contents of a ring
named by the string without the amdgpu_ring_ prefix. "
"\n\t\tBy default it will read and display the entire ring. A
starting and ending "
"\n\t\taddress can be specified in decimal or a '.' can be used
to indicate relative "
diff --git a/src/app/scan.c b/src/app/scan.c
index 19c97fe1499d..fbb8f5838069 100644
--- a/src/app/scan.c
+++ b/src/app/scan.c
@@ -31,6 +31,27 @@ int umr_scan_asic(struct umr_asic *asic, char
*asicname, char *ipname, char *reg
uint64_t addr, scale;
char buf[256];
+ // if ipname == '*' scan for a match and stop on first one
+ if (ipname[0] == '*' && regname[0] != '*') {
+ for (i = 0; i < asic->no_blocks; i++) {
+ for (j = 0; j < asic->blocks[i]->no_regs; j++) {
+ if (!strcmp(regname,
asic->blocks[i]->regs[j].regname) ||
+ (options.many &&
strstr(asic->blocks[i]->regs[j].regname, regname))) {
+ ipname = asic->blocks[i]->ipname;
+ goto ip_found;
Since the star globs usually imply a wildcard match, I think it is a
little weird to truncate the output to only the first match.
If a star glob is requested by the user, I think it should be okay to
loop and print multiple outputs as usually happens when options.many is
enabled.
Alternative approach would be to print an 'ambiguous argument' error.
That way the user will at least have some feedback. Although I think the
behaviour of printing multiple results is preferable.
Now that I think about it is possible that future asics have multiples
of IP blocks so ideally we should continue on for as many collisions.
I think the '-O named' option should then print the IP name as well.
I'll (v2) this shortly.
Thanks,
Tom
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx