diff options
author | Bobby Casey <bobbycasey@google.com> | 2021-02-22 10:42:20 -0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-07-01 00:02:59 +0000 |
commit | b325538a3dedb7b89680e0d9385899638afd529e (patch) | |
tree | 7f7fcb615611a7525adb9c2d59c737ebdc90e79b /chip/mchp | |
parent | 3bdfeba224ba2f64a77d13fd0079d2f185f9cc87 (diff) | |
download | chrome-ec-b325538a3dedb7b89680e0d9385899638afd529e.tar.gz |
cortex-m: Don't execute WFI instruction if debugging
Allowing the processor to sleep causes the debugger to stop working.
BRANCH=none
BUG=b:180144572
TEST=Monitor power per go/cros-fpmcu-source-code-docs#dragonclaw-v0_2
TEST=Icetower (pp3300_dx_mcu_mw) with no debugger connected
Idle: ~44 mW
Low Power Mode: ~5.5 mW
TEST=Icetower (pp3300_dx_mcu_mw) with debugger connected
Idle: ~75 mW
Low Power Mode: ~70 mW
TEST=Dragonclaw (pp3300_dx_mcu_mw) with no debugger connected
Idle: ~22 mW
Low Power Mode: ~1.5 mW
TEST=Dragonclaw (pp3300_dx_mcu_mw) with debugger connected
Idle: ~64 mW
Low Power Mode: ~19 mW
Signed-off-by: Bobby Casey <bobbycasey@google.com>
Change-Id: I48d58395b168dc3bb0932348cd8f5ce088fc0ac9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2713754
Commit-Queue: Tom Hughes <tomhughes@chromium.org>
Tested-by: Tom Hughes <tomhughes@chromium.org>
Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'chip/mchp')
-rw-r--r-- | chip/mchp/clock.c | 4 | ||||
-rw-r--r-- | chip/mchp/system.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/chip/mchp/clock.c b/chip/mchp/clock.c index 0a9a8f219c..3b3cd2d6af 100644 --- a/chip/mchp/clock.c +++ b/chip/mchp/clock.c @@ -630,7 +630,7 @@ void __idle(void) /* Wait for interrupt: goes into deep sleep. */ asm("dsb"); - asm("wfi"); + cpu_enter_suspend_mode(); asm("isb"); asm("nop"); @@ -671,7 +671,7 @@ void __idle(void) idle_sleep_cnt++; - asm("wfi"); + cpu_enter_suspend_mode(); } interrupt_enable(); diff --git a/chip/mchp/system.c b/chip/mchp/system.c index 72c96bef8f..1a9b3f6bc7 100644 --- a/chip/mchp/system.c +++ b/chip/mchp/system.c @@ -549,7 +549,7 @@ void system_hibernate(uint32_t seconds, uint32_t microseconds) MCHP_PCR_SYS_SLP_CTL = MCHP_PCR_SYS_SLP_ALL; asm("dsb"); - asm("wfi"); + cpu_enter_suspend_mode(); asm("isb"); asm("nop"); |