diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-07-20 11:05:07 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-07-22 13:17:02 -0700 |
commit | 360d91573a12994ec9fa0e2790ea89a0cd2c5b32 (patch) | |
tree | 8f1ed4d143cc68f2c983bcadec6113cd1abbe45b /util | |
parent | bff14cac0b17217a6be02924d109e58b3aaa50b1 (diff) | |
download | chrome-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.c | 38 |
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; } |