soc: nxp: lpc55s69: Enable Sleep Mode

Enable sleep mode on LPC55S69 (corresponding to zephyr's runtime idle
mode). Add DT description and power api implementations.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
This commit is contained in:
Declan Snyder 2024-03-28 10:46:28 -05:00 committed by Johan Hedberg
commit a7988f2986
4 changed files with 43 additions and 0 deletions

View file

@ -31,6 +31,7 @@
reg = <0>; reg = <0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
cpu-power-states = <&sleep>;
mpu: mpu@e000ed90 { mpu: mpu@e000ed90 {
compatible = "arm,armv8m-mpu"; compatible = "arm,armv8m-mpu";
@ -41,6 +42,15 @@
compatible = "arm,cortex-m33"; compatible = "arm,cortex-m33";
reg = <1>; reg = <1>;
}; };
power-states {
sleep: sleep {
compatible = "zephyr,power-state";
power-state-name = "runtime-idle";
min-residency-us = <4>;
exit-latency-us = <4>;
};
};
}; };
}; };

View file

@ -24,6 +24,10 @@ if(NOT DEFINED CONFIG_LPC55XXX_SRAM_CLOCKS)
zephyr_compile_definitions(DONT_ENABLE_DISABLED_RAMBANKS=1) zephyr_compile_definitions(DONT_ENABLE_DISABLED_RAMBANKS=1)
endif() endif()
if (CONFIG_SOC_LPC55S69_CPU0)
zephyr_sources_ifdef(CONFIG_PM power.c)
endif()
zephyr_include_directories(.) zephyr_include_directories(.)
set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld CACHE INTERNAL "") set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld CACHE INTERNAL "")

View file

@ -68,6 +68,7 @@ config SOC_LPC55S69_CPU0
select HAS_MCUX_CTIMER select HAS_MCUX_CTIMER
select HAS_MCUX_SCTIMER select HAS_MCUX_SCTIMER
select HAS_MCUX_RNG select HAS_MCUX_RNG
select HAS_PM
if SOC_SERIES_LPC55XXX if SOC_SERIES_LPC55XXX

View file

@ -0,0 +1,28 @@
/*
* Copyright 2024 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/pm/pm.h>
void pm_state_set(enum pm_state state, uint8_t id)
{
ARG_UNUSED(id);
switch (state) {
case PM_STATE_RUNTIME_IDLE:
k_cpu_idle();
break;
default:
break;
}
}
void pm_state_exit_post_ops(enum pm_state state, uint8_t id)
{
ARG_UNUSED(state);
ARG_UNUSED(id);
}