From 259c0d8133e523f1f7925442c1bb7352383975dc Mon Sep 17 00:00:00 2001 From: Edward Hill Date: Wed, 19 Aug 2020 17:39:39 -0600 Subject: Zork: Add command to print temps periodically BUG=b:162907613 BRANCH=none TEST=none Signed-off-by: Edward Hill Change-Id: Iddbba7d7955f252cacf666528195bbfc7d9718e6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2365633 Reviewed-by: Denis Brockus --- baseboard/zork/baseboard.c | 42 ++++++++++++++++++++++++++++++++++++++++++ baseboard/zork/baseboard.h | 2 ++ board/ezkinil/board.c | 4 +++- 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); + } } } -- cgit v1.2.1