diff options
author | Edward Hill <ecgh@chromium.org> | 2020-08-19 17:39:39 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-20 23:41:41 +0000 |
commit | 259c0d8133e523f1f7925442c1bb7352383975dc (patch) | |
tree | 778d798cc6c3ff68c3329eef581add72e9064a89 | |
parent | 06f584a8b508e881680c222498702f5148330a3f (diff) | |
download | chrome-ec-259c0d8133e523f1f7925442c1bb7352383975dc.tar.gz |
Zork: Add command to print temps periodically
BUG=b:162907613
BRANCH=none
TEST=none
Signed-off-by: Edward Hill <ecgh@chromium.org>
Change-Id: Iddbba7d7955f252cacf666528195bbfc7d9718e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2365633
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r-- | baseboard/zork/baseboard.c | 42 | ||||
-rw-r--r-- | baseboard/zork/baseboard.h | 2 | ||||
-rw-r--r-- | board/ezkinil/board.c | 4 | ||||
-rw-r--r-- | board/morphius/thermal.c | 14 |
4 files changed, 56 insertions, 6 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index 378ff743c5..5bd1faf16e 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -38,6 +38,7 @@ #include "system.h" #include "task.h" #include "tcpci.h" +#include "temp_sensor.h" #include "thermistor.h" #include "usb_mux.h" #include "usb_pd.h" @@ -269,3 +270,44 @@ static void set_ac_prochot(void) isl9241_set_ac_prochot(CHARGER_SOLO, ZORK_AC_PROCHOT_CURRENT_MA); } DECLARE_HOOK(HOOK_INIT, set_ac_prochot, HOOK_PRIO_DEFAULT); + +DECLARE_DEFERRED(board_print_temps); +int temps_interval; + +void board_print_temps(void) +{ + int t, i; + int rv; + + cprintf(CC_THERMAL, "[%pT ", PRINTF_TIMESTAMP_NOW); + for (i = 0; i < TEMP_SENSOR_COUNT; ++i) { + rv = temp_sensor_read(i, &t); + if (rv == EC_SUCCESS) + cprintf(CC_THERMAL, "%s=%dK (%dC) ", + temp_sensors[i].name, t, K_TO_C(t)); + } + cprintf(CC_THERMAL, "]\n"); + + if (temps_interval > 0) + hook_call_deferred(&board_print_temps_data, + temps_interval * SECOND); +} + +static int command_temps_log(int argc, char **argv) +{ + char *e = NULL; + + if (argc != 2) + return EC_ERROR_PARAM_COUNT; + + temps_interval = strtoi(argv[1], &e, 0); + if (*e) + return EC_ERROR_PARAM1; + + board_print_temps(); + + return EC_SUCCESS; +} +DECLARE_CONSOLE_COMMAND(tempslog, command_temps_log, + "seconds", + "Print temp sensors periodically"); diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index b0a647c7c8..13e33ca007 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -337,6 +337,8 @@ __override_proto void ppc_interrupt(enum gpio_signal signal); void pi3hdx1204_retimer_power(void); __override_proto int check_hdmi_hpd_status(void); +void board_print_temps(void); + #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BASEBOARD_H */ diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c index cb6a6c322e..b49af8f763 100644 --- a/board/ezkinil/board.c +++ b/board/ezkinil/board.c @@ -669,9 +669,11 @@ int fan_percent_to_rpm(int fan, int pct) previous_pct = pct; if (fan_table[current_level].rpm != - fan_get_rpm_target(FAN_CH(fan))) + fan_get_rpm_target(FAN_CH(fan))) { cprints(CC_THERMAL, "Setting fan RPM to %d", fan_table[current_level].rpm); + board_print_temps(); + } return fan_table[current_level].rpm; } diff --git a/board/morphius/thermal.c b/board/morphius/thermal.c index 36ff96e2ff..e7f976f681 100644 --- a/board/morphius/thermal.c +++ b/board/morphius/thermal.c @@ -480,10 +480,14 @@ int fan_table_to_rpm(int fan, int *temp) void board_override_fan_control(int fan, int *tmp) { - if (chipset_in_state(CHIPSET_STATE_ON | - CHIPSET_STATE_ANY_SUSPEND)) { - fan_set_rpm_mode(FAN_CH(fan), 1); - fan_set_rpm_target(FAN_CH(fan), - fan_table_to_rpm(fan, tmp)); + if (chipset_in_state(CHIPSET_STATE_ON | CHIPSET_STATE_ANY_SUSPEND)) { + int new_rpm = fan_table_to_rpm(fan, tmp); + + if (new_rpm != fan_get_rpm_target(FAN_CH(fan))) { + cprints(CC_THERMAL, "Setting fan RPM to %d", new_rpm); + board_print_temps(); + fan_set_rpm_mode(FAN_CH(fan), 1); + fan_set_rpm_target(FAN_CH(fan), new_rpm); + } } } |