summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2014-02-21 12:36:35 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-02-22 00:50:39 +0000
commit4eddcbd748d9a798425ca3c8d92912695c5d62fa (patch)
treee2f43037b6029804fe63ce4790e836d6d8083b37
parent930b41e6a9782e7c8e37f3a283de2e8a3164b155 (diff)
downloadchrome-ec-4eddcbd748d9a798425ca3c8d92912695c5d62fa.tar.gz
ectool: pwmgetfanrpm supports multiple fans
The EC already provided this information, but ectool wouldn't print it. BUG=chrome-os-partner:23803 BRANCH=samus TEST=from ec console, 'fanset 0 3000' and 'fanset 1 1000' ectool pwmfangetrpm -> prints both fans ectool pwmfangetrpm all -> prints both fans ectool pwmfangetrpm 0 -> prints ~3000 ectool pwmfangetrpm 1 -> prints ~1000 Change-Id: I19d3081d09edd42c16bf8b0cdbc48ca58d134027 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/187454 Reviewed-by: Sameer Nanda <snanda@chromium.org>
-rw-r--r--util/ectool.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/util/ectool.c b/util/ectool.c
index f0c3d3500f..18a498b8d3 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -122,7 +122,7 @@ const char help_str[] =
" Reads from EC host persistent storage to a file\n"
" pstorewrite <offset> <infile>\n"
" Writes to EC host persistent storage from a file\n"
- " pwmgetfanrpm\n"
+ " pwmgetfanrpm [<index> | all]\n"
" Prints current fan RPM\n"
" pwmgetkblight\n"
" Prints current keyboard backlight percent\n"
@@ -1169,26 +1169,51 @@ int cmd_thermal_auto_fan_ctrl(int argc, char *argv[])
return 0;
}
-
-int cmd_pwm_get_fan_rpm(int argc, char *argv[])
+static int print_fan(int idx)
{
- int rv;
+ int rv = read_mapped_mem16(EC_MEMMAP_FAN + 2 * idx);
- rv = read_mapped_mem16(EC_MEMMAP_FAN);
switch (rv) {
case EC_FAN_SPEED_NOT_PRESENT:
return -1;
case EC_FAN_SPEED_STALLED:
- printf("Fan stalled!\n");
+ printf("Fan %d stalled!\n", idx);
break;
default:
- printf("Current fan RPM: %d\n", rv);
+ printf("Fan %d RPM: %d\n", idx, rv);
break;
}
return 0;
}
+int cmd_pwm_get_fan_rpm(int argc, char *argv[])
+{
+ int i;
+
+ if (argc < 2 || !strcasecmp(argv[1], "all")) {
+ /* Print all the fan speeds */
+ for (i = 0; i < EC_FAN_SPEED_ENTRIES; i++) {
+ if (print_fan(i))
+ break; /* Stop at first not-present fan */
+ }
+
+ } else {
+ char *e;
+ int idx;
+
+ idx = strtol(argv[1], &e, 0);
+ if ((e && *e) || idx < 0 || idx >= EC_FAN_SPEED_ENTRIES) {
+ fprintf(stderr, "Bad index.\n");
+ return -1;
+ }
+
+ return print_fan(idx);
+ }
+
+ return 0;
+}
+
int cmd_pwm_set_fan_rpm(int argc, char *argv[])
{