diff --git a/soc/arm/nxp_imx/rt5xx/CMakeLists.txt b/soc/arm/nxp_imx/rt5xx/CMakeLists.txt index 9e494659df1..f3c6404d185 100644 --- a/soc/arm/nxp_imx/rt5xx/CMakeLists.txt +++ b/soc/arm/nxp_imx/rt5xx/CMakeLists.txt @@ -15,6 +15,8 @@ zephyr_sources( zephyr_sources_ifdef(CONFIG_PM power.c) +zephyr_sources_ifdef(CONFIG_POWEROFF poweroff.c) + zephyr_library_include_directories( ${ZEPHYR_BASE}/kernel/include ${ZEPHYR_BASE}/arch/${ARCH}/include diff --git a/soc/arm/nxp_imx/rt5xx/Kconfig.series b/soc/arm/nxp_imx/rt5xx/Kconfig.series index 0acc8090951..96568031651 100644 --- a/soc/arm/nxp_imx/rt5xx/Kconfig.series +++ b/soc/arm/nxp_imx/rt5xx/Kconfig.series @@ -11,5 +11,6 @@ config SOC_SERIES_IMX_RT5XX select SOC_FAMILY_IMX select CLOCK_CONTROL select HAS_PM + select HAS_POWEROFF help Enable support for i.MX RT5XX Series MCU series diff --git a/soc/arm/nxp_imx/rt5xx/poweroff.c b/soc/arm/nxp_imx/rt5xx/poweroff.c new file mode 100644 index 00000000000..d0768aacc7b --- /dev/null +++ b/soc/arm/nxp_imx/rt5xx/poweroff.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#include + +static const uint32_t exclude_from_pd[] = {0, 0, 0, 0}; + +void z_sys_poweroff(void) +{ + /* Disable ISP Pin pull-ups and input buffers to avoid current leakage */ + IOPCTL->PIO[1][15] = 0; + IOPCTL->PIO[3][28] = 0; + IOPCTL->PIO[3][29] = 0; + + POWER_EnterDeepPowerDown(exclude_from_pd); + + CODE_UNREACHABLE; +}