PSOC E8XXGP Device Support Library

| PSOC E8XXGP Device Support Library

Functions
I/Os Freeze
PDL API Reference » SysPm (System Power Management) » Functions

## General Description

## Functions
__STATIC_INLINE bool | Cy_SysPm_IoIsFrozen (void)
| Checks whether IOs are frozen. More...
void | Cy_SysPm_IoUnfreeze (void)
| This function unfreezes the I/O cells that are automatically frozen when Hibernate is entered with the call to Cy_SysPm_SystemEnterHibernate(). More...
bool | Cy_SysPm_DeepSleepIoIsFrozen (void)
| Checks whether IOs are frozen during DEEPSLEEP-RAM/OFF. More...
void | Cy_SysPm_DeepSleepIoUnfreeze (void)
| This function unfreezes the I/O cells that are automatically frozen when DEEPSLEEP-RAM/OFF is entered. More...
cy_en_syspm_status_t | Cy_SysPm_SystemTransitionInitiate (void)
| Initiates a system power mode transition by disabling the Secure Enclave (SE). More...
cy_en_syspm_status_t | Cy_SysPm_SystemTransitionFinalize (void)
| Finalizes a system power mode transition by re-enabling the Secure Enclave (SE). More...

## Function Documentation

## ◆ Cy_SysPm_IoIsFrozen()

__STATIC_INLINE bool Cy_SysPm_IoIsFrozen | ( | void |  | ) |

Checks whether IOs are frozen.

Returns
  - True if IOs are frozen.
  - False if IOs are unfrozen.

Function Usage
  /* Scenario: There is a need to use Hibernate power mode and retain the
  * the I/O state after the a wake-up from Hibernate
  */
  /* Check the I/O freeze status after the boot.
  * If the I/O is frozen it means we have returned from Hibernate.
  */
  if(Cy_SysPm_IoIsFrozen())
  {
  /* Restore the I/O configuration before unfreezing.
  * Use configuration data programmed into firmware stored in
  * SRSS->PWR_HIB_DATA[] or BACKUP->BREG[]
  * before the Hibernate was entered.The most common use case is to
  * restore from GPIO driver the firmware initialization structures.
  */
  Cy_SysPm_IoUnfreeze();
  }
  /* Save the I/O before entering Hibernate. You can store the
  * the I/O configuration into SRSS->PWR_HIB_DATA[] or
  * BACKUP->BREG[] registers.
  */
  /* Enter Hibernate mode */
  Cy_SysPm_SystemEnterHibernate();
  Cy_SysPm_IoIsFrozen
  __STATIC_INLINE bool Cy_SysPm_IoIsFrozen(void)
  Checks whether IOs are frozen.
  Definition: cy_syspm.h:4593
  Cy_SysPm_IoUnfreeze
  void Cy_SysPm_IoUnfreeze(void)
  This function unfreezes the I/O cells that are automatically frozen when Hibernate is entered with th...
  Definition: cy_syspm_v4.c:2293
  Cy_SysPm_SystemEnterHibernate
  cy_en_syspm_status_t Cy_SysPm_SystemEnterHibernate(void)
  Sets the device into system Hibernate mode.
  Definition: cy_syspm_v4.c:1508

## ◆ Cy_SysPm_IoUnfreeze()

void Cy_SysPm_IoUnfreeze | ( | void |  | ) |

This function unfreezes the I/O cells that are automatically frozen when Hibernate is entered with the call to Cy_SysPm_SystemEnterHibernate().

I/O cells remain frozen after a wakeup from Hibernate mode until the firmware unfreezes them by calling this function.

If the firmware must retain the data value on the pin, then the value must be read and re-written to the pin's port data register before calling this function. Furthermore, the drive mode must be re-programmed before the pins are unfrozen. If this is not done, the pin will change to the default state the moment the freeze is removed.

Note that I/O cell configuration can be changed while frozen. The new configuration becomes effective only after the pins are unfrozen.

Function Usage
  /* Scenario: There is a need to use Hibernate power mode and retain the
  * the I/O state after the a wake-up from Hibernate
  */
  /* Check the I/O freeze status after the boot.
  * If the I/O is frozen it means we have returned from Hibernate.
  */
  if(Cy_SysPm_IoIsFrozen())
  {
  /* Restore the I/O configuration before unfreezing.
  * Use configuration data programmed into firmware stored in
  * SRSS->PWR_HIB_DATA[] or BACKUP->BREG[]
  * before the Hibernate was entered.The most common use case is to
  * restore from GPIO driver the firmware initialization structures.
  */
  Cy_SysPm_IoUnfreeze();
  }
  /* Save the I/O before entering Hibernate. You can store the
  * the I/O configuration into SRSS->PWR_HIB_DATA[] or
  * BACKUP->BREG[] registers.
  */
  /* Enter Hibernate mode */
  Cy_SysPm_SystemEnterHibernate();

## ◆ Cy_SysPm_DeepSleepIoIsFrozen()

bool Cy_SysPm_DeepSleepIoIsFrozen | ( | void |  | ) |

Checks whether IOs are frozen during DEEPSLEEP-RAM/OFF.

Returns
  - True if IOs are frozen.
  - False if IOs are unfrozen.

## ◆ Cy_SysPm_DeepSleepIoUnfreeze()

void Cy_SysPm_DeepSleepIoUnfreeze | ( | void |  | ) |

This function unfreezes the I/O cells that are automatically frozen when DEEPSLEEP-RAM/OFF is entered.

I/O cells remain frozen after a wakeup from DEEPSLEEP_RAM/OFF mode until the firmware unfreezes them by calling this function.

If the firmware must retain the data value on the pin, then the value must be read and re-written to the pin's port data register before calling this function. Furthermore, the drive mode must be re-programmed before the pins are unfrozen. If this is not done, the pin will change to the default state the moment the freeze is removed.

Note that I/O cell configuration can be changed while frozen. The new configuration becomes effective only after the pins are unfrozen.

## ◆ Cy_SysPm_SystemTransitionInitiate()

cy_en_syspm_status_t Cy_SysPm_SystemTransitionInitiate | ( | void |  | ) |

Initiates a system power mode transition by disabling the Secure Enclave (SE).

This function is called at the beginning of system power transitions to prepare the system by disabling security-sensitive components like the Secure Enclave. It must be paired with Cy_SysPm_SystemTransitionFinalize() to complete the transition process.

The function handles the operation differently based on the system configuration:

- In secure enclave enabled device configurations : if called from secure core, it directly disables the SE else if SRF-integrated configurations, it uses the Secure Runtime Framework else returns fail
- In secure enclave disabled device configurations it returns success as SE is disbaled at boot up time

Returns
  - CY_SYSPM_SUCCESS - SE disabled successfully or operation not required
  - CY_SYSPM_FAIL - Failed to disable SE or resource allocation failed

Note
  This function is typically called by the power management framework and should be used with caution in application code. Ensure proper pairing with Cy_SysPm_SystemTransitionFinalize().

## ◆ Cy_SysPm_SystemTransitionFinalize()

cy_en_syspm_status_t Cy_SysPm_SystemTransitionFinalize | ( | void |  | ) |

Finalizes a system power mode transition by re-enabling the Secure Enclave (SE).

This function is called at the end of system power transitions to restore security-sensitive components like the Secure Enclave after the transition is complete. It must be paired with Cy_SysPm_SystemTransitionInitiate() for proper system transition handling.

The function handles the operation differently based on the system configuration:

- In secure enclave enabled device configurations : if called from secure core, it directly enables the SE else if SRF-integrated configurations, it uses the Secure Runtime Framework else returns fail
- In secure enclave disabled device configurations it returns success as disbaling SE is not applicable

Returns
  - CY_SYSPM_SUCCESS - SE enabled successfully or operation not required
  - CY_SYSPM_FAIL - Failed to enable SE or resource allocation failed

Note
  This function is typically called by the power management framework and should be used with caution in application code. Must be paired with Cy_SysPm_SystemTransitionInitiate() for proper operation.