blob: 1824726134005ed4428a1248cc0189ba42a1645b [file] [log] [blame]
/*
* Copyright (c) 2022, Carlo Caione <ccaione@baylibre.com>
*/
/**
* @file
*
* @brief public S2RAM APIs.
* @defgroup pm_s2ram S2RAM APIs
* @{
*/
#ifndef ZEPHYR_INCLUDE_ARCH_COMMON_PM_S2RAM_H_
#define ZEPHYR_INCLUDE_ARCH_COMMON_PM_S2RAM_H_
#ifdef _ASMLANGUAGE
GTEXT(arch_pm_s2ram_suspend);
#else
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief System off function
*
* This function is passed as argument and called by @ref arch_pm_s2ram_suspend
* to power the system off after the CPU context has been saved. This function
* never returns.
*/
typedef void (*pm_s2ram_system_off_fn_t)(void);
/**
* @brief Save CPU context on suspend
*
* This function is used on suspend-to-RAM (S2RAM) to save the CPU context in
* (retained) RAM before powering the system off using the provided function.
* This function is usually called from the PM subsystem / hooks.
*
* The CPU context is usually the minimum set of CPU registers which content
* must be restored on resume to let the platform resume its execution from the
* point it left at the time of suspension.
*
* @param system_off Function to power off the system.
*
* @retval 0 The CPU context was successfully saved and restored.
* @retval -errno Negative errno code in case of failure.
*/
int arch_pm_s2ram_suspend(pm_s2ram_system_off_fn_t system_off);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* _ASMLANGUAGE */
#endif /* ZEPHYR_INCLUDE_ARCH_COMMON_PM_S2RAM_H_ */