summaryrefslogtreecommitdiff
path: root/common/throttle_ap.c
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2021-11-04 12:11:58 -0600
committerCommit Bot <commit-bot@chromium.org>2021-11-05 04:22:34 +0000
commit252457d4b21f46889eebad61d4c0a65331919cec (patch)
tree01856c4d31d710b20e85a74c8d7b5836e35c3b98 /common/throttle_ap.c
parent08f5a1e6fc2c9467230444ac9b582dcf4d9f0068 (diff)
downloadchrome-ec-stabilize-quickfix-14695.187.B-ish.tar.gz
In the interest of making long-term branch maintenance incur as little technical debt on us as possible, we should not maintain any files on the branch we are not actually using. This has the added effect of making it extremely clear when merging CLs from the main branch when changes have the possibility to affect us. The follow-on CL adds a convenience script to actually pull updates from the main branch and generate a CL for the update. BUG=b:204206272 BRANCH=ish TEST=make BOARD=arcada_ish && make BOARD=drallion_ish Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I17e4694c38219b5a0823e0a3e55a28d1348f4b18 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3262038 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'common/throttle_ap.c')
-rw-r--r--common/throttle_ap.c164
1 files changed, 0 insertions, 164 deletions
diff --git a/common/throttle_ap.c b/common/throttle_ap.c
deleted file mode 100644
index cfa97d93a5..0000000000
--- a/common/throttle_ap.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* Common chipset throttling code for Chrome EC */
-
-#include "chipset.h"
-#include "common.h"
-#include "console.h"
-#include "dptf.h"
-#include "hooks.h"
-#include "host_command.h"
-#include "task.h"
-#include "throttle_ap.h"
-#include "timer.h"
-#include "util.h"
-
-/* Console output macros */
-#define CPUTS(outstr) cputs(CC_THERMAL, outstr)
-#define CPRINTS(format, args...) cprints(CC_THERMAL, format, ## args)
-
-#define PROCHOT_IN_DEBOUNCE_US (100 * MSEC)
-
-/*****************************************************************************/
-/* This enforces the virtual OR of all throttling sources. */
-K_MUTEX_DEFINE(throttle_mutex);
-static uint32_t throttle_request[NUM_THROTTLE_TYPES];
-static int debounced_prochot_in;
-static enum gpio_signal gpio_prochot_in = GPIO_COUNT;
-
-void throttle_ap(enum throttle_level level,
- enum throttle_type type,
- enum throttle_sources source)
-{
- uint32_t tmpval, bitmask;
-
- mutex_lock(&throttle_mutex);
-
- bitmask = BIT(source);
-
- switch (level) {
- case THROTTLE_ON:
- throttle_request[type] |= bitmask;
- break;
- case THROTTLE_OFF:
- throttle_request[type] &= ~bitmask;
- break;
- }
-
- tmpval = throttle_request[type]; /* save for printing */
-
- switch (type) {
- case THROTTLE_SOFT:
-#ifdef HAS_TASK_HOSTCMD
- host_throttle_cpu(tmpval);
-#endif
- break;
- case THROTTLE_HARD:
-#ifdef CONFIG_CHIPSET_CAN_THROTTLE
- chipset_throttle_cpu(tmpval);
-#endif
- break;
-
- case NUM_THROTTLE_TYPES:
- /* Make the compiler shut up. Don't use 'default', because
- * we still want to catch any new types.
- */
- break;
- }
-
- mutex_unlock(&throttle_mutex);
-
- /* print outside the mutex */
- CPRINTS("set AP throttling type %d to %s (0x%08x)",
- type, tmpval ? "on" : "off", tmpval);
-
-}
-
-static void prochot_input_deferred(void)
-{
- int prochot_in;
-
- /*
- * Shouldn't be possible, but better to protect against buffer
- * overflow
- */
- ASSERT(signal_is_gpio(gpio_prochot_in));
-
- prochot_in = gpio_get_level(gpio_prochot_in);
-
- if (IS_ENABLED(CONFIG_CPU_PROCHOT_ACTIVE_LOW))
- prochot_in = !prochot_in;
-
- if (prochot_in == debounced_prochot_in)
- return;
-
- /*
- * b/173180788 Confirmed from Intel internal that SLP_S3# asserts low
- * about 10us before PROCHOT# asserts low, which means that
- * the CPU is already in reset and therefore the PROCHOT#
- * asserting low is normal behavior and not a concern
- * for PROCHOT# event. Ignore all PROCHOT changes while the AP is off
- */
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- return;
-
- debounced_prochot_in = prochot_in;
-
- if (debounced_prochot_in) {
- CPRINTS("External PROCHOT assertion detected");
-#ifdef CONFIG_FANS
- dptf_set_fan_duty_target(100);
-#endif
- } else {
- CPRINTS("External PROCHOT condition cleared");
-#ifdef CONFIG_FANS
- /* Revert to automatic control of the fan */
- dptf_set_fan_duty_target(-1);
-#endif
- }
-}
-DECLARE_DEFERRED(prochot_input_deferred);
-
-void throttle_ap_prochot_input_interrupt(enum gpio_signal signal)
-{
- /*
- * Save the PROCHOT signal that generated the interrupt so we don't
- * rely on a specific pin name.
- */
- if (gpio_prochot_in == GPIO_COUNT)
- gpio_prochot_in = signal;
-
- /*
- * Trigger deferred notification of PROCHOT change so we can ignore
- * any pulses that are too short.
- */
- hook_call_deferred(&prochot_input_deferred_data,
- PROCHOT_IN_DEBOUNCE_US);
-}
-
-/*****************************************************************************/
-/* Console commands */
-#ifdef CONFIG_CMD_APTHROTTLE
-static int command_apthrottle(int argc, char **argv)
-{
- int i;
- uint32_t tmpval;
-
- for (i = 0; i < NUM_THROTTLE_TYPES; i++) {
- mutex_lock(&throttle_mutex);
- tmpval = throttle_request[i];
- mutex_unlock(&throttle_mutex);
-
- ccprintf("AP throttling type %d is %s (0x%08x)\n", i,
- tmpval ? "on" : "off", tmpval);
- }
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(apthrottle, command_apthrottle,
- NULL,
- "Display the AP throttling state");
-#endif