Select Git revision
Forked from
card10 / firmware
Source project has a limited visibility.
-
rahix authored
Signed-off-by:
Rahix <rahix@rahix.de>
rahix authoredSigned-off-by:
Rahix <rahix@rahix.de>
lp.c 7.23 KiB
// FIXME: Copied from ME11, removed RAM shutdown functions, needs review
// FIXME: Needs copyright header
#include "lp.h"
#include "pwrseq_regs.h"
#include "mxc_errors.h"
#include "gcr_regs.h"
#include "mxc_config.h"
#include "mxc_sys.h"
#include "tmr_utils.h"
#include "mcr_regs.h"
void LP_ClearWakeStatus(void)
{
/* Write 1 to clear */
MXC_PWRSEQ->lpwkst0 = 0xFFFFFFFF;
MXC_PWRSEQ->lpwkst1 = 0xFFFFFFFF;
MXC_PWRSEQ->lpwkst2 = 0xFFFFFFFF;
MXC_PWRSEQ->lpwkst3 = 0xFFFFFFFF;
MXC_PWRSEQ->lppwst = 0xFFFFFFFF;
}
void LP_EnableRTCAlarmWakeup(void)
{
MXC_GCR->pm |= MXC_F_GCR_PM_RTCWKEN;
}
void LP_DisableRTCAlarmWakeup(void)
{
MXC_GCR->pm &= ~MXC_F_GCR_PM_RTCWKEN;
}
void LP_EnableGPIOWakeup(gpio_cfg_t *wu_pins)
{
MXC_GCR->pm |= MXC_F_GCR_PM_GPIOWKEN;
switch (wu_pins->port) {
case PORT_0:
MXC_PWRSEQ->lpwken0 |= wu_pins->mask;
break;
case PORT_1:
MXC_PWRSEQ->lpwken1 |= wu_pins->mask;
}
}
void LP_DisableGPIOWakeup(gpio_cfg_t *wu_pins)
{
switch (wu_pins->port) {
case PORT_0:
MXC_PWRSEQ->lpwken0 &= ~wu_pins->mask;
break;
case PORT_1:
MXC_PWRSEQ->lpwken1 &= ~wu_pins->mask;
}
if (MXC_PWRSEQ->lpwken1 == 0 && MXC_PWRSEQ->lpwken0 == 0) {
MXC_GCR->pm &= ~MXC_F_GCR_PM_GPIOWKEN;
}
}
void LP_SysRam0LightSleep(void)
{
MXC_GCR->memckcn |= MXC_F_GCR_MEMCKCN_SYSRAM0LS;
}
void LP_SysRam1LightSleep(void)
{
MXC_GCR->memckcn |= MXC_F_GCR_MEMCKCN_SYSRAM1LS;
}