You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2020/12/02 09:34:10 UTC

[mynewt-core] 01/02: hw/mcu/dialog: Skip sleep if PD_SYS is used

This is an automated email from the ASF dual-hosted git repository.

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit ebe39e1689fe54c23a5d2356ea5fb2f5bff1eabc
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Thu Nov 26 22:11:31 2020 +0100

    hw/mcu/dialog: Skip sleep if PD_SYS is used
    
    If PD_SYS is acquired by something, we can skip deep sleep because it
    will not happen - "standard" wfi is enough.
---
 hw/mcu/dialog/da1469x/src/da1469x_sleep.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/hw/mcu/dialog/da1469x/src/da1469x_sleep.c b/hw/mcu/dialog/da1469x/src/da1469x_sleep.c
index a251d93..45597f9 100644
--- a/hw/mcu/dialog/da1469x/src/da1469x_sleep.c
+++ b/hw/mcu/dialog/da1469x/src/da1469x_sleep.c
@@ -83,9 +83,14 @@ da1469x_sleep(os_time_t ticks)
     mcu_gpio_enter_sleep();
 
     /* PD_SYS will not be disabled here until we enter deep sleep, so don't wait */
-    da1469x_pd_release_nowait(MCU_PD_DOMAIN_SYS);
+    if (!da1469x_pd_release_nowait(MCU_PD_DOMAIN_SYS)) {
+        __DSB();
+        __WFI();
+        slept = 0;
+    } else {
+        slept = da1469x_m33_sleep();
+    }
 
-    slept = da1469x_m33_sleep();
     mcu_gpio_exit_sleep();
 
     if (g_da1469x_sleep_cb.exit_sleep) {