All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH umr] Simplify --scan and --list-regs syntax
@ 2017-02-22 14:55 Tom St Denis
       [not found] ` <20170222145528.1331-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Tom St Denis @ 2017-02-22 14:55 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Tom St Denis

Now it supports the same syntax as --read/--write, you can specify any
of:

    *.ipname
    asicname.ipname
    ipname

When using --scan and --list-regs now.  e.g.,

    umr --scan carrizo.uvd6
or
    umr --scan uvd6

Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
---
 src/app/main.c | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/app/main.c b/src/app/main.c
index 5b1694654352..a905ff0359cf 100644
--- a/src/app/main.c
+++ b/src/app/main.c
@@ -47,6 +47,31 @@ static struct umr_asic *get_asic(void)
 	return asic;
 }
 
+// returns blockname supports
+// asicname.blockname
+// *.blockname
+// blockname
+static char *get_block_name(struct umr_asic *asic, char *path)
+{
+	static char asicname[256], block[256], *dot;
+
+	memset(asicname, 0, sizeof asicname);
+	if ((dot = strstr(path, "."))) {
+		memset(block, 0, sizeof block);
+		memcpy(asicname, path, (int)(dot - path));
+		strcpy(block, dot + 1);
+	} else {
+		strcpy(block, path);
+	}
+
+	if (asicname[0] && asicname[0] != '*' && strcmp(asic->asicname, asicname)) {
+		printf("[ERROR]: Invalid asicname <%s>\n", asicname);
+		return NULL;
+	}
+	return block;
+}
+
+
 static void parse_options(char *str)
 {
 	char option[64], *p;
@@ -96,7 +121,7 @@ int main(int argc, char **argv)
 {
 	int i, j, k, l;
 	struct umr_asic *asic;
-	char *str, *str2, asicname[256], ipname[256], regname[256];
+	char *blockname, *str, *str2, asicname[256], ipname[256], regname[256];
 	struct timespec req;
 
 	memset(&options, 0, sizeof options);
@@ -162,8 +187,11 @@ int main(int argc, char **argv)
 			if (i + 1 < argc) {
 				if (!asic)
 					asic = get_asic();
+				blockname = get_block_name(asic, argv[i+1]);
+				if (!blockname)
+					return EXIT_FAILURE;
 				for (j = 0; j < asic->no_blocks; j++)
-					if (!strcmp(asic->blocks[j]->ipname, argv[i+1]))
+					if (!strcmp(asic->blocks[j]->ipname, blockname))
 						for (k = 0; k < asic->blocks[j]->no_regs; k++) {
 							printf("\t%s.%s.%s => 0x%05lx\n", asic->asicname, asic->blocks[j]->ipname, asic->blocks[j]->regs[k].regname, (unsigned long)asic->blocks[j]->regs[k].addr);
 							if (options.bitfields) {
@@ -216,8 +244,11 @@ int main(int argc, char **argv)
 			if (i + 1 < argc) {
 				if (!asic)
 					asic = get_asic();
-				if (!umr_scan_asic(asic, "", argv[i+1], ""))
-					umr_print_asic(asic, argv[i+1]);
+				blockname = get_block_name(asic, argv[i+1]);
+				if (!blockname)
+					return EXIT_FAILURE;
+				if (!umr_scan_asic(asic, "", blockname, ""))
+					umr_print_asic(asic, blockname);
 				++i;
 				options.need_scan = 0;
 			} else {
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH umr] Simplify --scan and --list-regs syntax
       [not found] ` <20170222145528.1331-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>
@ 2017-02-22 22:47   ` Edward O'Callaghan
  0 siblings, 0 replies; 2+ messages in thread
From: Edward O'Callaghan @ 2017-02-22 22:47 UTC (permalink / raw)
  To: Tom St Denis, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Tom St Denis


[-- Attachment #1.1.1: Type: text/plain, Size: 3137 bytes --]



On 02/23/2017 01:55 AM, Tom St Denis wrote:
> Now it supports the same syntax as --read/--write, you can specify any
> of:
> 
>     *.ipname
>     asicname.ipname
>     ipname
> 
> When using --scan and --list-regs now.  e.g.,
> 
>     umr --scan carrizo.uvd6
> or
>     umr --scan uvd6
> 
> Signed-off-by: Tom St Denis <tom.stdenis-5C7GfCeVMHo@public.gmane.org>
> ---
>  src/app/main.c | 39 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 35 insertions(+), 4 deletions(-)
> 
> diff --git a/src/app/main.c b/src/app/main.c
> index 5b1694654352..a905ff0359cf 100644
> --- a/src/app/main.c
> +++ b/src/app/main.c
> @@ -47,6 +47,31 @@ static struct umr_asic *get_asic(void)
>  	return asic;
>  }
>  
> +// returns blockname supports
> +// asicname.blockname
> +// *.blockname
> +// blockname
> +static char *get_block_name(struct umr_asic *asic, char *path)
> +{
> +	static char asicname[256], block[256], *dot;
> +
> +	memset(asicname, 0, sizeof asicname);
> +	if ((dot = strstr(path, "."))) {
> +		memset(block, 0, sizeof block);
perhaps move this block zero'ing memset outside the branch above.

with that,
Reviewed-by: Edward O'Callaghan <funfunctor-dczkZgxz+BNUPWh3PAxdjQ@public.gmane.org>

> +		memcpy(asicname, path, (int)(dot - path));
> +		strcpy(block, dot + 1);
> +	} else {
> +		strcpy(block, path);
> +	}
> +
> +	if (asicname[0] && asicname[0] != '*' && strcmp(asic->asicname, asicname)) {
> +		printf("[ERROR]: Invalid asicname <%s>\n", asicname);
> +		return NULL;
> +	}
> +	return block;
> +}
> +
> +
>  static void parse_options(char *str)
>  {
>  	char option[64], *p;
> @@ -96,7 +121,7 @@ int main(int argc, char **argv)
>  {
>  	int i, j, k, l;
>  	struct umr_asic *asic;
> -	char *str, *str2, asicname[256], ipname[256], regname[256];
> +	char *blockname, *str, *str2, asicname[256], ipname[256], regname[256];
>  	struct timespec req;
>  
>  	memset(&options, 0, sizeof options);
> @@ -162,8 +187,11 @@ int main(int argc, char **argv)
>  			if (i + 1 < argc) {
>  				if (!asic)
>  					asic = get_asic();
> +				blockname = get_block_name(asic, argv[i+1]);
> +				if (!blockname)
> +					return EXIT_FAILURE;
>  				for (j = 0; j < asic->no_blocks; j++)
> -					if (!strcmp(asic->blocks[j]->ipname, argv[i+1]))
> +					if (!strcmp(asic->blocks[j]->ipname, blockname))
>  						for (k = 0; k < asic->blocks[j]->no_regs; k++) {
>  							printf("\t%s.%s.%s => 0x%05lx\n", asic->asicname, asic->blocks[j]->ipname, asic->blocks[j]->regs[k].regname, (unsigned long)asic->blocks[j]->regs[k].addr);
>  							if (options.bitfields) {
> @@ -216,8 +244,11 @@ int main(int argc, char **argv)
>  			if (i + 1 < argc) {
>  				if (!asic)
>  					asic = get_asic();
> -				if (!umr_scan_asic(asic, "", argv[i+1], ""))
> -					umr_print_asic(asic, argv[i+1]);
> +				blockname = get_block_name(asic, argv[i+1]);
> +				if (!blockname)
> +					return EXIT_FAILURE;
> +				if (!umr_scan_asic(asic, "", blockname, ""))
> +					umr_print_asic(asic, blockname);
>  				++i;
>  				options.need_scan = 0;
>  			} else {
> 


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-02-22 22:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-22 14:55 [PATCH umr] Simplify --scan and --list-regs syntax Tom St Denis
     [not found] ` <20170222145528.1331-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>
2017-02-22 22:47   ` Edward O'Callaghan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.