From 5d509d2e1e7c2ba707984104914441f8d1774c68 Mon Sep 17 00:00:00 2001 From: Mahesh Mahadevan Date: Mon, 6 Aug 2018 11:49:59 -0500 Subject: [PATCH] MXRT1050_EVK: Sleep: add pre/post processing steps Signed-off-by: Mahesh Mahadevan --- .../TARGET_MCUXpresso_MCUS/TARGET_IMX/sleep.c | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/sleep.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/sleep.c index 2b5307a99d..59f01d78a4 100644 --- a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/sleep.c +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_IMX/sleep.c @@ -17,23 +17,29 @@ #include "cmsis.h" #include "fsl_clock.h" -static void stop(void) -{ - SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; - __asm("WFI"); -} +extern void vPortPRE_SLEEP_PROCESSING(clock_mode_t powermode); +extern void vPortPOST_SLEEP_PROCESSING(clock_mode_t powermode); + void hal_sleep(void) { - CLOCK_SetMode(kCLOCK_ModeWait); + vPortPRE_SLEEP_PROCESSING(kCLOCK_ModeWait); - stop(); + __DSB(); + __WFI(); + __ISB(); + + vPortPOST_SLEEP_PROCESSING(kCLOCK_ModeWait); } void hal_deepsleep(void) { - CLOCK_SetMode(kCLOCK_ModeStop); + vPortPRE_SLEEP_PROCESSING(kCLOCK_ModeStop); - stop(); + __DSB(); + __WFI(); + __ISB(); + + vPortPOST_SLEEP_PROCESSING(kCLOCK_ModeStop); }