Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Typedefs

typedef int(* pm_s2ram_system_off_fn_t) (void)
 System off function.
 

Functions

int arch_pm_s2ram_suspend (pm_s2ram_system_off_fn_t system_off)
 Save CPU context on suspend.
 
void pm_s2ram_mark_set (void)
 Mark that core is entering suspend-to-RAM state.
 
bool pm_s2ram_mark_check_and_clear (void)
 Check suspend-to-RAM marking and clear its state.
 

Detailed Description

Typedef Documentation

◆ pm_s2ram_system_off_fn_t

typedef int(* pm_s2ram_system_off_fn_t) (void)

#include <zephyr/arch/common/pm_s2ram.h>

System off function.

This function is passed as argument and called by arch_pm_s2ram_suspend to power the system off after the CPU context has been saved.

This function never returns if the system is powered off. If the operation cannot be performed a proper value is returned and the code must take care of restoring the system in a fully operational state before returning.

Return values
noneThe system is powered off.
-EBUSYThe system is busy and cannot be powered off at this time.
-errnoOther error codes.

Function Documentation

◆ arch_pm_s2ram_suspend()

int arch_pm_s2ram_suspend ( pm_s2ram_system_off_fn_t system_off)

#include <zephyr/arch/common/pm_s2ram.h>

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.

Parameters
system_offFunction to power off the system.
Return values
0The CPU context was successfully saved and restored.
-EBUSYThe system is busy and cannot be suspended at this time.
-errnoNegative errno code in case of failure.

◆ pm_s2ram_mark_check_and_clear()

bool pm_s2ram_mark_check_and_clear ( void )

#include <zephyr/arch/common/pm_s2ram.h>

Check suspend-to-RAM marking and clear its state.

Function is used to determine if resuming after suspend-to-RAM shall be performed or standard boot code shall be executed.

Default implementation is checking a magic word in RAM. CONFIG_PM_S2RAM_CUSTOM_MARKING allows custom implementation. The following requirements must be fulfilled:

  • the function cannot use stack (most likely asm function)
  • the content of the R1 and R4 registers must remain unchanged
  • the function's return value is passed by R0 register
  • returning from the function should be performed with the bx lr instruction
Return values
trueif marking is found which indicates resuming after suspend-to-RAM.
falseif marking is not found which indicates standard boot.

◆ pm_s2ram_mark_set()

void pm_s2ram_mark_set ( void )

#include <zephyr/arch/common/pm_s2ram.h>

Mark that core is entering suspend-to-RAM state.

Function is called when system state is stored to RAM, just before going to system off.

Default implementation is setting a magic word in RAM. CONFIG_PM_S2RAM_CUSTOM_MARKING allows custom implementation. The following requirements must be fulfilled:

  • the function cannot use stack (asm function or function with 'naked' attribute)
  • the content of the R1 and R4 registers must remain unchanged
  • returning from the function should be performed with the bx lr instruction