summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2021-04-07 19:17:07 +0800
committerCommit Bot <commit-bot@chromium.org>2021-04-11 10:04:37 +0000
commit52cfe6a41f0f81a7e07a485d2770a91dd63b3d3e (patch)
tree44266180998419607b5ded37addfceacf9f912c2 /board
parent62aa709f472b6a4021ccb3396701b2a2036caea7 (diff)
downloadchrome-ec-52cfe6a41f0f81a7e07a485d2770a91dd63b3d3e.tar.gz
dooly: extend prochot latch time
This patch extend CPU prochot latch time to 60ms, when OCP protect triggered to pass safety requirement. BUG=b:184812462 BRANCH=puff TEST=verify CPU prochot can latch 60ms when OCP triggered. Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com> Change-Id: I41721670d6fac9266bad546fc86b0c1e0f46b183 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2810427 Reviewed-by: Andrew McRae <amcrae@chromium.org> Commit-Queue: Andrew McRae <amcrae@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/dooly/board.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/board/dooly/board.c b/board/dooly/board.c
index 21f5e8c914..0cbf2938c0 100644
--- a/board/dooly/board.c
+++ b/board/dooly/board.c
@@ -961,11 +961,17 @@ unsigned int ec_config_get_thermal_solution(void)
#define POWER_DELAY_MS 2
#define POWER_READINGS (10/POWER_DELAY_MS)
+/* PROCHOT_DEFER_OFF is to extend CPU prochot long enough
+ * to pass safety requirement 30 * 2ms = 60 ms
+ */
+#define PROCHOT_DEFER_OFF 30
+
static void power_monitor(void)
{
static uint32_t current_state;
static uint32_t history[POWER_READINGS];
static uint8_t index;
+ static uint8_t prochot_linger;
int32_t delay;
uint32_t new_state = 0, diff;
int32_t headroom_5v = PWR_MAX - base_5v_power;
@@ -1066,8 +1072,16 @@ static void power_monitor(void)
* As a last resort, turn on PROCHOT to
* throttle the CPU.
*/
- if (gap <= 0)
+ if (gap <= 0) {
+ prochot_linger = 0;
new_state |= THROT_PROCHOT;
+ } else if (prochot_linger < PROCHOT_DEFER_OFF) {
+ /*
+ * Do not turn off PROCHOT immediately.
+ */
+ prochot_linger++;
+ new_state |= THROT_PROCHOT;
+ }
}
}
/*