soc: nuvoton: numaker: add poweroff for m2l31x
Add support of sys_poweroff API on m2l31x series. It could support SPD0~2 standby or DPD0~1 deep power down mode. Signed-off-by: cyliang tw <cyliang@nuvoton.com>
This commit is contained in:
parent
f3dcaaee35
commit
5025487dd0
6 changed files with 51 additions and 0 deletions
|
@ -48,6 +48,7 @@
|
||||||
clk-pclkdiv = <(NUMAKER_CLK_PCLKDIV_APB0DIV_DIV2 |
|
clk-pclkdiv = <(NUMAKER_CLK_PCLKDIV_APB0DIV_DIV2 |
|
||||||
NUMAKER_CLK_PCLKDIV_APB1DIV_DIV2)>;
|
NUMAKER_CLK_PCLKDIV_APB1DIV_DIV2)>;
|
||||||
core-clock = <DT_FREQ_M(72)>;
|
core-clock = <DT_FREQ_M(72)>;
|
||||||
|
powerdown-mode = <NUMAKER_CLK_PMUCTL_PDMSEL_DPD0>;
|
||||||
|
|
||||||
pcc: peripheral-clock-controller {
|
pcc: peripheral-clock-controller {
|
||||||
compatible = "nuvoton,numaker-pcc";
|
compatible = "nuvoton,numaker-pcc";
|
||||||
|
|
|
@ -271,4 +271,17 @@
|
||||||
#define NUMAKER_LPADC0_MODULE 0xB5431218
|
#define NUMAKER_LPADC0_MODULE 0xB5431218
|
||||||
#define NUMAKER_OPA_MODULE 0xA000001B
|
#define NUMAKER_OPA_MODULE 0xA000001B
|
||||||
|
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_PD 0x00000000
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD0 0x00000000
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD1 0x00000001
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD2 0x00000002
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD3 0x00000003
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD4 0x00000004
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD5 0x00000005
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD0 0x00000008
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD1 0x00000009
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD2 0x0000000A
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD0 0x0000000C
|
||||||
|
#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD1 0x0000000D
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,4 +6,6 @@ zephyr_sources(soc.c)
|
||||||
|
|
||||||
zephyr_include_directories(.)
|
zephyr_include_directories(.)
|
||||||
|
|
||||||
|
zephyr_library_sources_ifdef(CONFIG_POWEROFF poweroff.c)
|
||||||
|
|
||||||
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "")
|
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "")
|
||||||
|
|
|
@ -8,6 +8,7 @@ config SOC_SERIES_M2L31X
|
||||||
select CPU_CORTEX_M_HAS_SYSTICK
|
select CPU_CORTEX_M_HAS_SYSTICK
|
||||||
select CPU_CORTEX_M_HAS_VTOR
|
select CPU_CORTEX_M_HAS_VTOR
|
||||||
select CPU_HAS_ARM_MPU
|
select CPU_HAS_ARM_MPU
|
||||||
|
select HAS_POWEROFF
|
||||||
|
|
||||||
config SOC_M2L31XXX
|
config SOC_M2L31XXX
|
||||||
select HAS_NUMAKER_HAL
|
select HAS_NUMAKER_HAL
|
||||||
|
|
31
soc/nuvoton/numaker/m2l31x/poweroff.c
Normal file
31
soc/nuvoton/numaker/m2l31x/poweroff.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Nuvoton Technology Corporation.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <zephyr/kernel.h>
|
||||||
|
#include <zephyr/devicetree.h>
|
||||||
|
#include <zephyr/sys/poweroff.h>
|
||||||
|
#include <NuMicro.h>
|
||||||
|
|
||||||
|
void z_sys_poweroff(void)
|
||||||
|
{
|
||||||
|
SYS_UnlockReg();
|
||||||
|
|
||||||
|
/* Clear all wake-up flag */
|
||||||
|
CLK->PMUSTS |= CLK_PMUSTS_CLRWK_Msk;
|
||||||
|
|
||||||
|
/* Select Power-down mode */
|
||||||
|
CLK_SetPowerDownMode(DT_PROP_OR(DT_NODELABEL(scc), powerdown_mode, CLK_PMUCTL_PDMSEL_SPD0));
|
||||||
|
|
||||||
|
/* Enable RTC wake-up */
|
||||||
|
CLK_ENABLE_RTCWK();
|
||||||
|
|
||||||
|
/* Enter to Power-down mode */
|
||||||
|
CLK_PowerDown();
|
||||||
|
|
||||||
|
k_cpu_idle();
|
||||||
|
|
||||||
|
CODE_UNREACHABLE;
|
||||||
|
}
|
|
@ -16,6 +16,9 @@ void z_arm_platform_init(void)
|
||||||
/* Unlock protected registers */
|
/* Unlock protected registers */
|
||||||
SYS_UnlockReg();
|
SYS_UnlockReg();
|
||||||
|
|
||||||
|
/* Release I/O hold status */
|
||||||
|
CLK->IOPDCTL = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* -------------------
|
* -------------------
|
||||||
* Init System Clock
|
* Init System Clock
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue