diff options
author | Tinghan Shen <tinghan.shen@mediatek.com> | 2022-01-24 17:06:27 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-01-26 09:43:26 +0000 |
commit | e894b1be353b521e5c1e8fc0d8e81f71720ad116 (patch) | |
tree | 3153d59b7c4f7f7c881da99ec5c1eda81875b642 /board | |
parent | 982408e4d09c163370d68f7e8107a861a187c85d (diff) | |
download | chrome-ec-e894b1be353b521e5c1e8fc0d8e81f71720ad116.tar.gz |
chip/mt_scp: rv32i: improve mt8195 handling suspend/resume
The original suspend/resume flow of SCP doesn't know when will the 26M
clock source be suspended by SPM. SCP has to disable watchdog once receiving
host suspend command and enable watchdog after receiving host resume command.
The drawback is that SCP has to run without the protection of
watchdog in the period between host suspend command and host resume
command.
In order to solve this, we can star a timer with 26M clock source, so that
SCP can detect the timing by snooping the 26M timer counter. The
improved flow allows SCP to disable watchdog and irq after detecting 26M
is off and re-enable immediately when 26M available again.
BRANCH=None
BUG=b:189356151
BUG=b:202754468
TEST=suspend_stress_test on 5 DUTs overnight
Signed-off-by: Tinghan Shen <tinghan.shen@mediatek.com>
Change-Id: I85d29d68af4d2108bf31f7cc2fd0f6c0bc4f9a5d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3411688
Reviewed-by: Rong Chang <rongchang@chromium.org>
Commit-Queue: Rong Chang <rongchang@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/cherry_scp/ec.tasklist | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/board/cherry_scp/ec.tasklist b/board/cherry_scp/ec.tasklist index 98f5d57327..1c8cd120a0 100644 --- a/board/cherry_scp/ec.tasklist +++ b/board/cherry_scp/ec.tasklist @@ -14,4 +14,5 @@ TASK_ALWAYS(VDEC_SERVICE, vdec_service_task, NULL, 4096) \ TASK_ALWAYS(VDEC_CORE_SERVICE, vdec_core_service_task, NULL, 4096) \ TASK_ALWAYS(VENC_SERVICE, venc_service_task, NULL, TRENTA_TASK_STACK_SIZE) \ - TASK_ALWAYS(MDP_SERVICE, mdp_service_task, NULL, 4096) + TASK_ALWAYS(MDP_SERVICE, mdp_service_task, NULL, 4096) \ + TASK_ALWAYS(SR, sr_task, NULL, TASK_STACK_SIZE) |