[coreboot-gerrit] Change in coreboot[master]: util/pmh7tool: Add option to read specific bit

Evgeny Zinoviev (Code Review) gerrit at coreboot.org
Wed Aug 29 21:25:02 CEST 2018


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


Change subject: util/pmh7tool: Add option to read specific bit
......................................................................

util/pmh7tool: Add option to read specific bit

Change-Id: I045383eedbcf438270e9c64329a8d910bb941ab8
Signed-off-by: Evgeny Zinoviev <me at ch1p.com>
---
M util/pmh7tool/pmh7tool.c
1 file changed, 26 insertions(+), 8 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/88/28388/1

diff --git a/util/pmh7tool/pmh7tool.c b/util/pmh7tool/pmh7tool.c
index d0c652e..f74527e 100644
--- a/util/pmh7tool/pmh7tool.c
+++ b/util/pmh7tool/pmh7tool.c
@@ -53,16 +53,25 @@
 	pmh7_register_write(reg, val & ~(1 << bit));
 }
 
+uint8_t pmh7_register_read_bit(int16_t reg, uint8_t bit)
+{
+	uint8_t val;
+
+	val = pmh7_register_read(reg);
+	return (val >> bit) & 1;
+}
+
 void print_usage(const char *name)
 {
 	printf("usage: %s\n", name);
 	printf("\n"
-		   "	-h, --help:                 print this help\n"
-		   "	-d, --dump:                 print registers\n"
-		   "	-w, --write <addr> <data>:  write to register\n"
-		   "	-r, --read <addr>:          read from register\n"
-		   "	-c, --clear-bit <addr> <bit>\n"
-		   "	-s, --set-bit <addr> <bit>\n"
+		   "	-h, --help:                   print this help\n"
+		   "	-d, --dump:                   print registers\n"
+		   "	-w, --write <addr> <data>:    write to register\n"
+		   "	-r, --read <addr>:            read from register\n"
+		   "	-b, --read-bit <addr> <bit>   read bit\n"
+		   "	-c, --clear-bit <addr> <bit>  clear bit\n"
+		   "	-s, --set-bit <addr> <bit>    set bit\n"
 		   "\n"
 		   "Attention! Writing to PMH7 registers is very dangerous, as you\n"
 		   "           directly manipulate the power rails, enable lines,\n"
@@ -71,7 +80,7 @@
 		   "\n");
 }
 
-enum action {HELP, DUMP, WRITE, READ, CLEAR, SET};
+enum action {HELP, DUMP, WRITE, READ, READBIT, CLEAR, SET};
 
 int main(int argc, char *argv[])
 {
@@ -84,6 +93,7 @@
 		{"dump",        0, 0, 'd'},
 		{"write",       1, 0, 'w'},
 		{"read",        1, 0, 'r'},
+		{"read-bit",    1, 0, 'b'},
 		{"clear-bit",   1, 0, 'c'},
 		{"set-bit",     1, 0, 's'},
 		{0, 0, 0, 0}
@@ -94,7 +104,7 @@
 		exit(0);
 	}
 
-	while ((opt = getopt_long(argc, argv, "hdw:r:c:s:",
+	while ((opt = getopt_long(argc, argv, "hdw:r:c:s:b:",
 				  long_options, &option_index)) != EOF) {
 		switch (opt) {
 		case 'd':
@@ -107,6 +117,7 @@
 			break;
 
 		case 'w':
+		case 'b':
 		case 'c':
 		case 's':
 			input_addr = strtoul(optarg, NULL, 16);
@@ -125,6 +136,9 @@
 			case 'w':
 				act = WRITE;
 				break;
+			case 'b':
+				act = READBIT;
+				break;
 			case 'c':
 				act = CLEAR;
 				break;
@@ -198,6 +212,10 @@
 		pmh7_register_write(input_addr, input_data);
 		break;
 
+	case READBIT:
+		printf("%d\n", pmh7_register_read_bit(input_addr, input_data));
+		break;
+
 	case CLEAR:
 		pmh7_register_clear_bit(input_addr, input_data);
 		break;

-- 
To view, visit https://review.coreboot.org/28388
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: I045383eedbcf438270e9c64329a8d910bb941ab8
Gerrit-Change-Number: 28388
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/20180829/7103b6a5/attachment.html>


More information about the coreboot-gerrit mailing list