summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-07-20 11:05:07 -0700
committerGerrit <chrome-bot@google.com>2012-07-22 13:17:02 -0700
commit360d91573a12994ec9fa0e2790ea89a0cd2c5b32 (patch)
tree8f1ed4d143cc68f2c983bcadec6113cd1abbe45b /util
parentbff14cac0b17217a6be02924d109e58b3aaa50b1 (diff)
downloadchrome-ec-360d91573a12994ec9fa0e2790ea89a0cd2c5b32.tar.gz
Support up to 24 thermal sensors
And tidy reporting fan/thermal via memmap. BUG=chrome-os-partner:11628 TEST=manual ectool pwmgetfanrpm -> should report fan speed ectool temps N -> should work for N=0-9 reports error for N=15-23 reports invalid sensor ID for N<0 or N>23 Change-Id: I484f81399f5e9dae9c759401091cc6f5acc733ff Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/28032 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/ectool.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/util/ectool.c b/util/ectool.c
index fc43c94fd0..5302d036d7 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -684,25 +684,34 @@ int cmd_temperature(int argc, char *argv[])
return -1;
}
- /* Currently we only store up to 16 temperature sensor data in
- * mapped memory. */
- if (id >= 16) {
- printf("Sensor with ID greater than 16 unsupported.\n");
+ if (id < 0 ||
+ id >= EC_TEMP_SENSOR_ENTRIES + EC_TEMP_SENSOR_B_ENTRIES) {
+ printf("Sensor ID invalid.\n");
return -1;
}
printf("Reading temperature...");
- rv = read_mapped_mem8(EC_MEMMAP_TEMP_SENSOR + id);
- if (rv == 0xff) {
+ if (id < EC_TEMP_SENSOR_ENTRIES)
+ rv = read_mapped_mem8(EC_MEMMAP_TEMP_SENSOR + id);
+ else if (read_mapped_mem8(EC_MEMMAP_THERMAL_VERSION) >= 2)
+ rv = read_mapped_mem8(EC_MEMMAP_TEMP_SENSOR_B +
+ id - EC_TEMP_SENSOR_ENTRIES);
+ else {
+ /* Sensor in second bank, but second bank isn't supported */
+ rv = EC_TEMP_SENSOR_NOT_PRESENT;
+ }
+
+ switch (rv) {
+ case EC_TEMP_SENSOR_NOT_PRESENT:
printf("Sensor not present\n");
return -1;
- } else if (rv == 0xfe) {
+ case EC_TEMP_SENSOR_ERROR:
printf("Error\n");
return -1;
- } else if (rv == 0xfd) {
+ case EC_TEMP_SENSOR_NOT_POWERED:
printf("Sensor disabled/unpowered\n");
return -1;
- } else {
+ default:
printf("%d\n", rv + EC_TEMP_SENSOR_OFFSET);
return 0;
}
@@ -840,13 +849,16 @@ int cmd_pwm_get_fan_rpm(int argc, char *argv[])
int rv;
rv = read_mapped_mem16(EC_MEMMAP_FAN);
- if (rv == 0xffff)
+ switch (rv) {
+ case EC_FAN_SPEED_NOT_PRESENT:
return -1;
-
- if (rv == 0xfffe)
+ case EC_FAN_SPEED_STALLED:
printf("Fan stalled!\n");
- else
+ break;
+ default:
printf("Current fan RPM: %d\n", rv);
+ break;
+ }
return 0;
}