Commit 3a4b5214 authored by Alessandro Manganaro's avatar Alessandro Manganaro Committed by Erwan Gouriou
Browse files

stm32wbax pm reworked to support STOP/STDBY mode without SCM

Power management has been split between
BLE HCI driver and system.
Power management has been reworked to remove dependency on
ST system clock manager (SCM) module.

Signed-off-by: default avatarAlessandro Manganaro <alessandro.manganaro@st.com>
parent d3ff6cbe
Loading
Loading
Loading
Loading
+1 −1
Changes for lib/stm32wba/BLE_TransparentMode/Core/Inc/app_conf.h: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -370,7 +370,7 @@ typedef enum
 * System Clock Manager module configuration
 ******************************************************************************/

#define CFG_SCM_SUPPORTED                   (1)
#define CFG_SCM_SUPPORTED                   (0)

/******************************************************************************
 * HW RADIO configuration
+2 −22
Changes for lib/stm32wba/BLE_TransparentMode/STM32_WPAN/Target/linklayer_plat.c: 2 added lines, 22 removed lines.
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
#include "app_common.h"
#include "app_conf.h"
#include "linklayer_plat.h"
#include "scm.h"

#include "log_module.h"
#ifndef __ZEPHYR__
#if (USE_TEMPERATURE_BASED_RADIO_CALIBRATION == 1)
@@ -36,14 +36,8 @@
#include "stm32_lpm.h"
#include "stm32_lpm_if.h"
#endif /* (CFG_LPM_LEVEL != 0) */
#endif

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

#else
#include "scm.h"
#endif /* __ZEPHYR__ */

#ifndef __ZEPHYR__
#define max(a,b) ((a) > (b) ? a : b)
@@ -457,9 +451,6 @@ void LINKLAYER_PLAT_StartRadioEvt(void)
{
  __HAL_RCC_RADIO_CLK_SLEEP_ENABLE();
  NVIC_SetPriority(RADIO_INTR_NUM, RADIO_INTR_PRIO_HIGH);
#if (CFG_SCM_SUPPORTED == 1)
  scm_notifyradiostate(SCM_RADIO_ACTIVE);
#endif /* CFG_SCM_SUPPORTED */
}

/**
@@ -471,9 +462,6 @@ void LINKLAYER_PLAT_StopRadioEvt(void)
{
  __HAL_RCC_RADIO_CLK_SLEEP_DISABLE();
  NVIC_SetPriority(RADIO_INTR_NUM, RADIO_INTR_PRIO_LOW);
#if (CFG_SCM_SUPPORTED == 1)
  scm_notifyradiostate(SCM_RADIO_NOT_ACTIVE);
#endif /* CFG_SCM_SUPPORTED */
}

/**
@@ -488,10 +476,6 @@ void LINKLAYER_PLAT_RCOStartClbr(void)
  /* Disabling stop mode prevents also from entering in standby */
  UTIL_LPM_SetStopMode(1U << CFG_LPM_LL_HW_RCO_CLBR, UTIL_LPM_DISABLE);
#endif /* (CFG_LPM_LEVEL != 0) */
#if (CFG_SCM_SUPPORTED == 1)
  scm_setsystemclock(SCM_USER_LL_HW_RCO_CLBR, HSE_32MHZ);
  while (LL_PWR_IsActiveFlag_VOS() == 0);
#endif /* (CFG_SCM_SUPPORTED == 1) */
}

/**
@@ -505,10 +489,6 @@ void LINKLAYER_PLAT_RCOStopClbr(void)
  PWR_EnableSleepMode();
  UTIL_LPM_SetStopMode(1U << CFG_LPM_LL_HW_RCO_CLBR, UTIL_LPM_ENABLE);
#endif /* (CFG_LPM_LEVEL != 0) */
#if (CFG_SCM_SUPPORTED == 1)
  scm_setsystemclock(SCM_USER_LL_HW_RCO_CLBR, HSE_16MHZ);
  while (LL_PWR_IsActiveFlag_VOS() == 0);
#endif /* (CFG_SCM_SUPPORTED == 1) */
}
#endif /*__ZEPHYR__*/

+4 −0
Changes for lib/stm32wba/BLE_TransparentMode/STM32_WPAN/Target/ll_sys_if.c: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -289,6 +289,10 @@ void ll_sys_reset(void)
#if defined(__GNUC__) && defined(DEBUG)
    drift_time += DRIFT_TIME_EXTRA_GCC_DEBUG;
    exec_time += EXEC_TIME_EXTRA_GCC_DEBUG;
#endif
#if defined (__ZEPHYR__)
    drift_time += DRIFT_TIME_EXTRA_ZEPHYR;
    exec_time += EXEC_TIME_EXTRA_ZEPHYR;
#endif
  }

+6 −0
Changes for lib/stm32wba/BLE_TransparentMode/STM32_WPAN/Target/ll_sys_if.h: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -42,10 +42,16 @@ extern "C" {
#define DRIFT_TIME_DEFAULT                      (13)
#define DRIFT_TIME_EXTRA_LSI2                   (9)
#define DRIFT_TIME_EXTRA_GCC_DEBUG              (6)
#ifdef __ZEPHYR__
#define DRIFT_TIME_EXTRA_ZEPHYR                 (15)
#endif

#define EXEC_TIME_DEFAULT                       (10)
#define EXEC_TIME_EXTRA_LSI2                    (3)
#define EXEC_TIME_EXTRA_GCC_DEBUG               (4)
#ifdef __ZEPHYR__
#define EXEC_TIME_EXTRA_ZEPHYR                  (15)
#endif

#define SCHDL_TIME_DEFAULT                      (20)
/* USER CODE BEGIN EC */
+0 −1
Changes for lib/stm32wba/CMakeLists.txt: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ zephyr_sources(BLE_TransparentMode/STM32_WPAN/Target/power_table.c)
zephyr_sources(Common/WPAN/Modules/Log/log_module.c)
zephyr_sources(Common/WPAN/Interfaces/hw_pka.c)
zephyr_sources(Common/WPAN/Interfaces/hw_pka_p256.c)
zephyr_sources(Common/WPAN/Modules/scm.c)
zephyr_sources(Common/WPAN/Modules/RTDebug/RTDebug.c)
zephyr_sources(STM32_WPAN/link_layer/ll_sys/src/ll_sys_cs.c)
zephyr_sources(STM32_WPAN/link_layer/ll_sys/src/ll_sys_dp_slp.c)
Loading