[coreboot-gerrit] Change in coreboot[master]: util/pmh7tool

Evgeny Zinoviev (Code Review) gerrit at coreboot.org
Wed Aug 1 14:57:31 CEST 2018


Evgeny Zinoviev has uploaded this change for review. ( https://review.coreboot.org/27776


Change subject: util/pmh7tool
......................................................................

util/pmh7tool

A tool that dumps PMH7 registers.

Change-Id: I05ccb5a9a861fe44efec794aafe1805062543d53
Signed-off-by: Evgeny Zinoviev <me at ch1p.com>
---
A util/pmh7tool/Makefile
A util/pmh7tool/pmh7tool.c
A util/pmh7tool/pmh7tool.h
3 files changed, 96 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/76/27776/1

diff --git a/util/pmh7tool/Makefile b/util/pmh7tool/Makefile
new file mode 100644
index 0000000..07a7a28
--- /dev/null
+++ b/util/pmh7tool/Makefile
@@ -0,0 +1,23 @@
+CC = gcc
+CFLAGS = -O2 -Wall -W -Werror
+PROGRAM = pmh7tool
+INSTALL = /usr/bin/install
+PREFIX	= /usr/local
+
+all: $(PROGRAM)
+
+$(PROGRAM): pmh7tool.o
+	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+
+install: $(PROGRAM)
+	$(INSTALL) $(PROGRAM) $(PREFIX)/sbin
+
+clean:
+	rm -f *.o $(PROGRAM)
+
+distclean: clean
+
+%.o: %.c
+	$(CC) $(CFLAGS) -c $^ -I. -o $@
+
+.PHONY: all install clean distclean
diff --git a/util/pmh7tool/pmh7tool.c b/util/pmh7tool/pmh7tool.c
new file mode 100644
index 0000000..26807de7
--- /dev/null
+++ b/util/pmh7tool/pmh7tool.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <sys/io.h>
+#include "pmh7tool.h"
+
+unsigned char pmh7_register_read(int reg)
+{
+	outb(reg, EC_LENOVO_PMH7_ADDR);
+	return inb(EC_LENOVO_PMH7_DATA);
+}
+
+void pmh7_register_write(int reg, int val)
+{
+	outb(reg, EC_LENOVO_PMH7_ADDR);
+	outb(val, EC_LENOVO_PMH7_DATA);
+}
+
+void print_usage(const char *name)
+{
+	printf("usage: %s\n", name);
+	printf("\n"
+		   "	-h | --help:	print this help\n"
+		   "	-d | --dump:	print registers\n"
+		   "\n");
+	exit(1);
+}
+
+int main(int argc, char *argv[])
+{
+	int opt, option_index = 0;
+	static struct option long_options[] = {
+		{"help", 0, 0, 'h'},
+		{"dump", 0, 0, 'd'},
+		{0, 0, 0, 0}
+	};
+
+	while ((opt = getopt_long(argc, argv, "hd",
+				  long_options, &option_index)) != EOF) {
+		switch (opt) {
+		case 'd':
+			break;
+		case 'h':
+		default:
+			print_usage(argv[0]);
+			break;
+		}
+	}
+
+	ioperm(EC_LENOVO_PMH7_BASE, 0x100, 1);
+	for (int i = 0; i < 0x100; i++) {
+		if ((i % 0x10) == 0) {
+			if (i != 0)
+				printf("\n");
+			printf("%02x: ", i);
+		}
+		printf("%02x ", pmh7_register_read(i));
+	}
+	printf("\n");
+
+	return 0;
+}
diff --git a/util/pmh7tool/pmh7tool.h b/util/pmh7tool/pmh7tool.h
new file mode 100644
index 0000000..651526f
--- /dev/null
+++ b/util/pmh7tool/pmh7tool.h
@@ -0,0 +1,11 @@
+#ifndef PMH7TOOL_H
+#define PMH7TOOL_H
+
+#define EC_LENOVO_PMH7_BASE 0x15e0
+#define EC_LENOVO_PMH7_ADDR (EC_LENOVO_PMH7_BASE + 0x0c)
+#define EC_LENOVO_PMH7_DATA (EC_LENOVO_PMH7_BASE + 0x0e)
+
+unsigned char pmh7_register_read(int reg);
+void pmh7_register_write(int reg, int val);
+
+#endif /* PMH7TOOL_H */

-- 
To view, visit https://review.coreboot.org/27776
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I05ccb5a9a861fe44efec794aafe1805062543d53
Gerrit-Change-Number: 27776
Gerrit-PatchSet: 1
Gerrit-Owner: Evgeny Zinoviev <me at ch1p.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180801/15e6c90a/attachment.html>


More information about the coreboot-gerrit mailing list