From 6bac94fb6d65b238b5977c766ec945ca5ff2eb65 Mon Sep 17 00:00:00 2001 From: Gilles DOFFE Date: Mon, 3 Aug 2020 00:43:59 +0200 Subject: [PATCH] cpu/stm32: setup power management for stm32mp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to stm32mp157 documentation: * "The CStop mode is entered for MCU when the SLEEPDEEP bit in the Cortex®-M4 System Control register is set." Thus set PM_STOP_CONFIG to 0. * "The CStandby mode applies only to the MPU sub-system." Set PM_STANDBY_CONFIG to (0) and do not enter standby mode for stm32mp1. As PM_STOP_CONFIG is already defined before for CPU_FAM_STM32WB, replace it with CPU_FAM_STM32MP1. Signed-off-by: Gilles DOFFE --- cpu/stm32/periph/pm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cpu/stm32/periph/pm.c b/cpu/stm32/periph/pm.c index 5425aec391..d91800414b 100644 --- a/cpu/stm32/periph/pm.c +++ b/cpu/stm32/periph/pm.c @@ -53,7 +53,8 @@ #define PM_STOP_CONFIG (PWR_CR1_LPMS_0) #elif defined(CPU_FAM_STM32F7) #define PM_STOP_CONFIG (PWR_CR1_LPDS | PWR_CR1_FPDS | PWR_CR1_LPUDS) -#elif defined(CPU_FAM_STM32WB) +#elif defined(CPU_FAM_STM32MP1) +#define PM_STOP_CONFIG (0) #else #define PM_STOP_CONFIG (PWR_CR_LPDS | PWR_CR_FPDS) #endif @@ -74,6 +75,8 @@ #define PM_STANDBY_CONFIG (PWR_CR1_LPMS_0 | PWR_CR1_LPMS_1) #elif defined(CPU_FAM_STM32F7) #define PM_STANDBY_CONFIG (PWR_CR1_PDDS | PWR_CR1_CSBF) +#elif defined(CPU_FAM_STM32MP1) +#define PM_STANDBY_CONFIG (0) #else #define PM_STANDBY_CONFIG (PWR_CR_PDDS | PWR_CR_CWUF | PWR_CR_CSBF) #endif @@ -92,6 +95,9 @@ #elif defined(CPU_FAM_STM32F7) #define PWR_CR_REG PWR->CR1 #define PWR_WUP_REG PWR->CSR2 +#elif defined(CPU_FAM_STM32MP1) +#define PWR_CR_REG PWR->CR1 +#define PWR_WUP_REG PWR->MCUWKUPENR #else #define PWR_CR_REG PWR->CR #define PWR_WUP_REG PWR->CSR @@ -102,7 +108,7 @@ void pm_set(unsigned mode) int deep; switch (mode) { -#ifdef STM32_PM_STANDBY +#if defined(STM32_PM_STANDBY) && !defined(CPU_FAM_STM32MP1) case STM32_PM_STANDBY: PWR_CR_REG &= ~(PM_STOP_CONFIG | PM_STANDBY_CONFIG); PWR_CR_REG |= PM_STANDBY_CONFIG;