[Intel-gfx] [PATCH 3/3] tools/intel_reg: Add option to skip forcewake

Mika Kuoppala mika.kuoppala at linux.intel.com
Fri Aug 28 07:51:47 PDT 2015


Sometimes we want to inspect the hardware as it is,
without doing the forcewake before access. Add option to skip
the forcewake dance.

Cc: Jani Nikula <jani.nikula at intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
---
 tools/intel_reg.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/tools/intel_reg.c b/tools/intel_reg.c
index b082555..c73b9ef 100644
--- a/tools/intel_reg.c
+++ b/tools/intel_reg.c
@@ -70,12 +70,16 @@ struct config {
 	/* spread out bits for convenience */
 	bool binary;
 
+	/* dont take forcewake on register access */
+	int nofw;
+
 	/* register spec */
 	char *specfile;
 	struct reg *regs;
 	ssize_t regcount;
 
 	int verbosity;
+
 };
 
 /* port desc must have been set */
@@ -409,7 +413,7 @@ static int intel_reg_read(struct config *config, int argc, char *argv[])
 	if (config->mmiofile)
 		intel_mmio_use_dump_file(config->mmiofile);
 	else
-		intel_register_access_init(config->pci_dev, 0, 0);
+		intel_register_access_init(config->pci_dev, 0, config->nofw);
 
 	for (i = 1; i < argc; i++) {
 		struct reg reg;
@@ -439,7 +443,7 @@ static int intel_reg_write(struct config *config, int argc, char *argv[])
 		return EXIT_FAILURE;
 	}
 
-	intel_register_access_init(config->pci_dev, 0, 0);
+	intel_register_access_init(config->pci_dev, 0, config->nofw);
 
 	for (i = 1; i < argc; i += 2) {
 		struct reg reg;
@@ -477,7 +481,7 @@ static int intel_reg_dump(struct config *config, int argc, char *argv[])
 	if (config->mmiofile)
 		intel_mmio_use_dump_file(config->mmiofile);
 	else
-		intel_register_access_init(config->pci_dev, 0, 0);
+		intel_register_access_init(config->pci_dev, 0, config->nofw);
 
 	for (i = 0; i < config->regcount; i++) {
 		reg = &config->regs[i];
@@ -637,6 +641,7 @@ static int intel_reg_help(struct config *config, int argc, char *argv[])
 	printf(" --all          Decode registers for all known platforms\n");
 	printf(" --binary       Binary dump registers\n");
 	printf(" --verbose      Increase verbosity\n");
+	printf(" --nofw         No forcewake on register access (DANGEROUS)\n");
 	printf(" --quiet        Reduce verbosity\n");
 
 	printf("\n");
@@ -769,6 +774,7 @@ enum opt {
 	OPT_BINARY,
 	OPT_SPEC,
 	OPT_VERBOSE,
+	OPT_NOFW,
 	OPT_QUIET,
 	OPT_HELP,
 };
@@ -781,6 +787,7 @@ int main(int argc, char *argv[])
 	const struct command *command = NULL;
 	struct config config = {
 		.count = 1,
+		.nofw = 0,
 	};
 	bool help = false;
 
@@ -800,6 +807,7 @@ int main(int argc, char *argv[])
 		/* options specific to read, dump and decode */
 		{ "all",	no_argument,		NULL,	OPT_ALL },
 		{ "binary",	no_argument,		NULL,	OPT_BINARY },
+		{ "nofw",	no_argument,		NULL,	OPT_NOFW },
 		{ 0 }
 	};
 
@@ -846,6 +854,9 @@ int main(int argc, char *argv[])
 		case OPT_BINARY:
 			config.binary = true;
 			break;
+		case OPT_NOFW:
+			config.nofw = 1;
+			break;
 		case OPT_VERBOSE:
 			config.verbosity++;
 			break;
-- 
2.1.4



More information about the Intel-gfx mailing list