Skip to content

Commit 30c1588

Browse files
mihai-ignatgmarcosb
authored andcommitted
[platform][k32w0] Add API calls to set DCDC when entering and exiting low power for k32w041a/am variants (project-chip#37512)
1 parent 28bd2ce commit 30c1588

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/platform/nxp/k32w0/LowPowerHooks.cpp

+22
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,14 @@ extern "C" void stopM2();
4848
extern "C" void sched_enable();
4949
extern "C" uint64_t otPlatTimeGet(void);
5050
extern "C" void vOptimizeConsumption(void);
51+
extern "C" void BOARD_CheckPowerDownDcdcVoltage(void);
52+
extern "C" void BOARD_CheckWakeUpDcdcVoltage(void);
5153

5254
WEAK void dm_switch_wakeupCallBack(void);
5355
WEAK void dm_switch_preSleepCallBack(void);
5456
WEAK void vOptimizeConsumption(void);
57+
WEAK void BOARD_CheckPowerDownDcdcVoltage(void);
58+
WEAK void BOARD_CheckWakeUpDcdcVoltage(void);
5559
static void ThreadExitSleep();
5660
static void BOARD_SetClockForWakeup(void);
5761

@@ -106,6 +110,10 @@ uint32_t dm_switch_get15_4InitWakeUpTime(void)
106110

107111
WEAK void dm_switch_wakeupCallBack(void)
108112
{
113+
/* Check VBAT voltage after wakeup and set DCDC voltage
114+
according for K32W041A/AM variants */
115+
BOARD_CheckWakeUpDcdcVoltage();
116+
109117
BOARD_SetClockForWakeup();
110118
SHA_ClkInit(SHA_INSTANCE);
111119
CLOCK_EnableClock(kCLOCK_Aes);
@@ -164,6 +172,16 @@ WEAK void vOptimizeConsumption(void)
164172
/* Intentionally left empty, user needs to redefine it at application level */
165173
}
166174

175+
WEAK void BOARD_CheckPowerDownDcdcVoltage(void)
176+
{
177+
/* Intentionally left empty, will be linked to board.c function */
178+
}
179+
180+
WEAK void BOARD_CheckWakeUpDcdcVoltage(void)
181+
{
182+
/* Intentionally left empty, will be linked to board.c function */
183+
}
184+
167185
WEAK void dm_switch_preSleepCallBack(void)
168186
{
169187
#if ENABLE_LOW_POWER_LOGS
@@ -198,6 +216,10 @@ WEAK void dm_switch_preSleepCallBack(void)
198216
BOARD_DeInitAdc();
199217
/* DeInit the necessary clocks */
200218
BOARD_SetClockForPowerMode();
219+
220+
/* Check VBAT voltage before going to sleep and set DCDC voltage
221+
according for K32W041A/AM variants */
222+
BOARD_CheckPowerDownDcdcVoltage();
201223
}
202224

203225
void dm_switch_init15_4AfterWakeUp(void)

0 commit comments

Comments
 (0)