Merge pull request #181 from atiselsts/contrib/cc2538-cc26xx-deep-sleep

Use ENERGEST_TYPE_DEEP_LPM energest state for CC2538 and CC26xx
This commit is contained in:
George Oikonomou 2017-11-17 14:55:59 +00:00 committed by GitHub
commit 213dac4e8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 7 deletions

View File

@ -212,10 +212,14 @@ lpm_exit()
/* Restore system clock to the 32 MHz XOSC */ /* Restore system clock to the 32 MHz XOSC */
select_32_mhz_xosc(); select_32_mhz_xosc();
if((REG(SYS_CTRL_PMCTL) & SYS_CTRL_PMCTL_PM3) == SYS_CTRL_PMCTL_PM1) {
ENERGEST_SWITCH(ENERGEST_TYPE_LPM, ENERGEST_TYPE_CPU);
} else {
ENERGEST_SWITCH(ENERGEST_TYPE_DEEP_LPM, ENERGEST_TYPE_CPU);
}
/* Restore PMCTL to PM0 for next pass */ /* Restore PMCTL to PM0 for next pass */
REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM0; REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM0;
ENERGEST_SWITCH(ENERGEST_TYPE_LPM, ENERGEST_TYPE_CPU);
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
void void
@ -286,8 +290,6 @@ lpm_enter()
REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM1; REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM1;
} }
ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_LPM);
/* Remember the current time so we can keep stats when we wake up */ /* Remember the current time so we can keep stats when we wake up */
if(LPM_CONF_STATS) { if(LPM_CONF_STATS) {
sleep_enter_time = RTIMER_NOW(); sleep_enter_time = RTIMER_NOW();
@ -310,9 +312,13 @@ lpm_enter()
REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM0; REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM0;
ENERGEST_SWITCH(ENERGEST_TYPE_LPM, ENERGEST_TYPE_CPU);
} else { } else {
/* All clear. Assert WFI and drop to PM1/2. This is now un-interruptible */ /* All clear. Assert WFI and drop to PM1/2. This is now un-interruptible */
if((REG(SYS_CTRL_PMCTL) & SYS_CTRL_PMCTL_PM3) == SYS_CTRL_PMCTL_PM1) {
ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_LPM);
} else {
ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_DEEP_LPM);
}
assert_wfi(); assert_wfi();
} }

View File

@ -185,7 +185,7 @@ wake_up(void)
{ {
lpm_registered_module_t *module; lpm_registered_module_t *module;
ENERGEST_SWITCH(ENERGEST_TYPE_LPM, ENERGEST_TYPE_CPU); ENERGEST_SWITCH(ENERGEST_TYPE_DEEP_LPM, ENERGEST_TYPE_CPU);
/* Sync so that we get the latest values before adjusting recharge settings */ /* Sync so that we get the latest values before adjusting recharge settings */
ti_lib_sys_ctrl_aon_sync(); ti_lib_sys_ctrl_aon_sync();
@ -485,7 +485,7 @@ deep_sleep(void)
ti_lib_pwr_ctrl_source_set(PWRCTRL_PWRSRC_ULDO); ti_lib_pwr_ctrl_source_set(PWRCTRL_PWRSRC_ULDO);
} }
ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_LPM); ENERGEST_SWITCH(ENERGEST_TYPE_CPU, ENERGEST_TYPE_DEEP_LPM);
/* Sync the AON interface to ensure all writes have gone through. */ /* Sync the AON interface to ensure all writes have gone through. */
ti_lib_sys_ctrl_aon_sync(); ti_lib_sys_ctrl_aon_sync();