dif_sysrst_ctrl.h

To use this DIF, include the following C header:

#include "/home/runner/work/opentitan/opentitan/sw/device/lib/dif/dif_sysrst_ctrl.h"

This header provides the following device interface functions:

Generated from dif_sysrst_ctrl.h
// Copyright lowRISC contributors (OpenTitan project). // Licensed under the Apache License, Version 2.0, see LICENSE for details. // SPDX-License-Identifier: Apache-2.0 #ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SYSRST_CTRL_H_ #define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SYSRST_CTRL_H_ /** * @file * @brief <a href="/hw/ip/sysrst_ctrl/doc/">System Reset Controller</a> Device * Interface Functions */ #include "sw/device/lib/dif/autogen/dif_sysrst_ctrl_autogen.h" #include "sysrst_ctrl_regs.h" // Generated. #ifdef __cplusplus extern "C" { #endif // __cplusplus /** * A System Reset Controller key combination. */ typedef enum dif_sysrst_ctrl_key_combo { /** * Key combination 0. */ kDifSysrstCtrlKeyCombo0 = 1U << 0, /** * Key combination 1. */ kDifSysrstCtrlKeyCombo1 = 1U << 1, /** * Key combination 2. */ kDifSysrstCtrlKeyCombo2 = 1U << 2, /** * Key combination 3. */ kDifSysrstCtrlKeyCombo3 = 1U << 3, /** * All key combination ORed together. * * This is useful when clearing all key combination IRQ causes at once, e.g., * when initializing the System Reset Controller. */ kDifSysrstCtrlKeyComboAll = (1U << 4) - 1, } dif_sysrst_ctrl_key_combo_t; /** * System Reset Controller keys that can form a key combination. */ typedef enum dif_sysrst_ctrl_key { /** * Key 0. */ kDifSysrstCtrlKey0 = 1U << 0, /** * Key 1. */ kDifSysrstCtrlKey1 = 1U << 1, /** * Key 2. */ kDifSysrstCtrlKey2 = 1U << 2, /** * Power button key. */ kDifSysrstCtrlKeyPowerButton = 1U << 3, /** * AC power preset key. */ kDifSysrstCtrlKeyAcPowerPresent = 1U << 4, /** * All keys ORed together. */ kDifSysrstCtrlKeyAll = (1U << 5) - 1, } dif_sysrst_ctrl_key_t; /** * System Reset Controller key combination detection actions. */ typedef enum dif_sysrst_ctrl_key_combo_action { /** * Disable / disconnect battery. */ kDifSysrstCtrlKeyComboActionBatteryDisable = 1U << 0, /** * Issue an interrupt to the processor. */ kDifSysrstCtrlKeyComboActionInterrupt = 1U << 1, /** * Assert the embedded controller reset for a specified duration. */ kDifSysrstCtrlKeyComboActionEcReset = 1U << 2, /** * Issue a reset request to the reset manager block. */ kDifSysrstCtrlKeyComboActionSelfReset = 1U << 3, /** * All actions. */ kDifSysrstCtrlKeyComboActionAll = (1U << 4) - 1, } dif_sysrst_ctrl_key_combo_action_t; /** * Runtime configuration for the System Reset Controller key combination * detection feature. */ typedef struct dif_sysrst_ctrl_key_combo_config { /** * The keys that comprise the pre-condition key combination to detect (i.e., * one or more `dif_sysrst_ctrl_key_t`s ORed together). */ uint32_t pre_condition_keys; /** * The duration the pre-condition key combination should be pressed to enable * triggering an action by an additional key combination press. * * Units: increments of 5us; [0, 2^32) represents [0, 60) seconds. */ uint32_t pre_condition_detection_time_threshold; /** * The keys that comprise the key combination to detect (i.e., one or more * `dif_sysrst_ctrl_key_t`s ORed together). */ uint32_t keys; /** * The duration the key combination should be pressed to trigger an action. * * Units: increments of 5us; [0, 2^32) represents [0, 60) seconds. */ uint32_t detection_time_threshold; /** * The actions to trigger after detecting the key press combination (one or * more `dif_sysrst_ctrl_key_combo_action_t`s ORed together). */ uint32_t actions; /** * The embedded controller's reset pulse width. * * Note: only applicable if the `kDifSysrstCtrlKeyComboActionEcReset` action * is enabled for the key combination. * * Units: increments of 5us; [0, 2^16) represents [10, 200) milliseconds. */ uint16_t embedded_controller_reset_duration; } dif_sysrst_ctrl_key_combo_config_t; /** * System Reset Controller input signal changes that may be detected. */ typedef enum dif_sysrst_ctrl_input_change { /** * Power button input signal high-to-low. */ kDifSysrstCtrlInputPowerButtonH2L = 1U << 0, /** * Key 0 input signal high-to-low. */ kDifSysrstCtrlInputKey0H2L = 1U << 1, /** * Key 1 input signal high-to-low. */ kDifSysrstCtrlInputKey1H2L = 1U << 2, /** * Key 2 input signal high-to-low. */ kDifSysrstCtrlInputKey2H2L = 1U << 3, /** * AC power present input signal high-to-low. */ kDifSysrstCtrlInputAcPowerPresetH2L = 1U << 4, /** * Embedded controller reset input signal high-to-low. */ kDifSysrstCtrlInputEcResetH2L = 1U << 5, /** * Flash write protect input signal high-to-low. */ kDifSysrstCtrlInputFlashWriteProtectH2L = 1U << 6, /** * Power button input signal low-to-high. */ kDifSysrstCtrlInputPowerButtonL2H = 1U << 7, /** * Key 0 input signal low-to-high. */ kDifSysrstCtrlInputKey0L2H = 1U << 8, /** * Key 1 input signal low-to-high. */ kDifSysrstCtrlInputKey1L2H = 1U << 9, /** * Key 2 input signal low-to-high. */ kDifSysrstCtrlInputKey2L2H = 1U << 10, /** * AC power present input signal low-to-high. */ kDifSysrstCtrlInputAcPowerPresetL2H = 1U << 11, /** * Embedded controller reset input signal low-to-high. */ kDifSysrstCtrlInputEcResetL2H = 1U << 12, /** * Flash write protect input signal low-to-high. */ kDifSysrstCtrlInputFlashWriteProtectL2H = 1U << 13, /** * All input signal transitions. */ kDifSysrstCtrlInputAll = ((1U << 14) - 1), } dif_sysrst_ctrl_input_change_t; /** * System Reset Controller key interrupt sources. */ typedef enum dif_sysrst_ctrl_key_intr_src { /** * Power button input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputPowerButtonH2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_PWRB_H2L_BIT, /** * Key 0 input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputKey0H2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY0_IN_H2L_BIT, /** * Key 1 input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputKey1H2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY1_IN_H2L_BIT, /** * Key 2 input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputKey2H2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY2_IN_H2L_BIT, /** * AC power present input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputAcPowerPresetH2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_AC_PRESENT_H2L_BIT, /** * Embedded controller reset input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputEcResetH2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_EC_RST_L_H2L_BIT, /** * Flash write protect input signal high-to-low. */ kDifSysrstCtrlKeyIntrStatusInputFlashWriteProtectH2L = 1U << SYSRST_CTRL_KEY_INTR_STATUS_FLASH_WP_L_H2L_BIT, /** * Power button input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputPowerButtonL2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_PWRB_L2H_BIT, /** * Key 0 input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputKey0L2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY0_IN_L2H_BIT, /** * Key 1 input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputKey1L2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY1_IN_L2H_BIT, /** * Key 2 input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputKey2L2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_KEY2_IN_L2H_BIT, /** * AC power present input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputAcPowerPresetL2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_AC_PRESENT_L2H_BIT, /** * Embedded controller reset input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputEcResetL2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_EC_RST_L_L2H_BIT, /** * Flash write protect input signal low-to-high. */ kDifSysrstCtrlKeyIntrStatusInputFlashWriteProtectL2H = 1U << SYSRST_CTRL_KEY_INTR_STATUS_FLASH_WP_L_L2H_BIT, } dif_sysrst_ctrl_key_intr_src_t; /** * System Reset Controller combo interrupt sources. */ typedef enum dif_sysrst_ctrl_combo_intr_src { /** * Power button input signal high-to-low. */ kDifSysrstCtrlComboIntrStatusCombo0H2L = 1U << SYSRST_CTRL_COMBO_INTR_STATUS_COMBO0_H2L_BIT, /** * Key 0 input signal high-to-low. */ kDifSysrstCtrlComboIntrStatusCombo1H2L = 1U << SYSRST_CTRL_COMBO_INTR_STATUS_COMBO1_H2L_BIT, /** * Key 1 input signal high-to-low. */ kDifSysrstCtrlComboIntrStatusCombo2H2L = 1U << SYSRST_CTRL_COMBO_INTR_STATUS_COMBO2_H2L_BIT, /** * Key 2 input signal high-to-low. */ kDifSysrstCtrlComboIntrStatusCombo3H2L = 1U << SYSRST_CTRL_COMBO_INTR_STATUS_COMBO3_H2L_BIT, } dif_sysrst_ctrl_combo_intr_src_t; /** * Runtime configuration for the System Reset Controller input signal change * detection feature. */ typedef struct dif_sysrst_ctrl_input_change_config { /** * A combination of input signal changes to detect (one or more * `dif_sysrst_ctrl_input_change_t`s ORed together). */ uint32_t input_changes; /** * The time to allow the input signal to stabilize before reevaluating its * value to decide whether to trigger an interrupt. * * Units: increments of 5us; [0, 2^16) represents [0, 200) milliseconds. */ uint16_t debounce_time_threshold; } dif_sysrst_ctrl_input_change_config_t; /** * Runtime configuration for the System Reset Controller key signal * auto-override feature. * * Upon detection of a Power Button high-to-low transition, the signals from * generic keys 0 through 2 may be overriden with specified values. */ typedef struct dif_sysrst_ctrl_auto_override_config { /** * The time to allow the Power Button signal to stabilize before reevaluating * its value to decide whether it was pressed. * * Units: increments of 5us; [0, 2^16) represents [0, 200) milliseconds. */ uint16_t debounce_time_threshold; /** * Whether to override the key 0 signal. */ dif_toggle_t override_key_0; /** * The value to override onto the key 0 signal. */ bool key_0_override_value; /** * Whether to override the key 1 signal. */ dif_toggle_t override_key_1; /** * The value to override onto the key 1 signal. */ bool key_1_override_value; /** * Whether to override the key 2 signal. */ dif_toggle_t override_key_2; /** * The value to override onto the key 2 signal. */ bool key_2_override_value; } dif_sysrst_ctrl_auto_override_config_t; /** * System Reset Controller pins that can be inverted, read, or overridden. */ typedef enum dif_sysrst_ctrl_pin { /** * Key 0 input. */ kDifSysrstCtrlPinKey0In = 1U << 0, /** * Key 0 output. */ kDifSysrstCtrlPinKey0Out = 1U << 1, /** * Key 1 input. */ kDifSysrstCtrlPinKey1In = 1U << 2, /** * Key 1 output. */ kDifSysrstCtrlPinKey1Out = 1U << 3, /** * Key 2 input. */ kDifSysrstCtrlPinKey2In = 1U << 4, /** * Key 2 output. */ kDifSysrstCtrlPinKey2Out = 1U << 5, /** * Power button input. */ kDifSysrstCtrlPinPowerButtonIn = 1U << 6, /** * Power button output. */ kDifSysrstCtrlPinPowerButtonOut = 1U << 7, /** * AC power preset input. */ kDifSysrstCtrlPinAcPowerPresentIn = 1U << 8, /** * Battery disable output. */ kDifSysrstCtrlPinBatteryDisableOut = 1U << 9, /** * Lid open input. */ kDifSysrstCtrlPinLidOpenIn = 1U << 10, /** * Z3 Wakeup output. */ kDifSysrstCtrlPinZ3WakeupOut = 1U << 11, /** * Embedded controller reset inout. */ kDifSysrstCtrlPinEcResetInOut = 1U << 12, /** * Flash write protect inout. */ kDifSysrstCtrlPinFlashWriteProtectInOut = 1U << 13, /** * All non open drain pins. */ kDifSysrstCtrlPinAllNonOpenDrain = (1U << 12) - 1, } dif_sysrst_ctrl_pin_t; /** * Runtime configuration for the System Reset Controller output pin override * feature. */ typedef struct dif_sysrst_ctrl_pin_config_t { /** * The enablement of the output pin's override feature. */ dif_toggle_t enabled; /** * Whether to allow overriding the output pin with a value of 0. */ bool allow_zero; /** * Whether to allow overriding the output pin with a value of 1. */ bool allow_one; /** * The override value to write. * * Note: writing a non-allowable value will cause * `dif_sysrst_ctrl_output_pin_override_configure()` to return `kDifBadArg`. */ bool override_value; } dif_sysrst_ctrl_pin_config_t; /** * Runtime configuration for the System Reset Controller ultra-low-power (ULP) * wakeup feature. * * When enabled, detection of any of the following conditions: * * 1. HIGH level on the AC Power present signal, or * 2. HIGH --> LOW transition on the Power Button signal, or * 3. LOW --> HIGH transition on the Lid Open signal, * * will cause the System Reset Controller to assert the Z3 Wakeup output signal * and trigger an interrupt, which will also issue a wakeup request to the power * manager. */ typedef struct dif_sysrst_ctrl_ulp_wakeup_config_t { /** * The enablement of the ULP wakeup feature. */ dif_toggle_t enabled; /** * The time to allow the AC Power present signal to stabilize before * reevaluating its value to decide whether it was activated. * * Units: increments of 5us; [0, 2^16) represents [10, 200) milliseconds. */ uint16_t ac_power_debounce_time_threshold; /** * The time to allow the Lid Open signal to stabilize before reevaluating its * value to decide whether it was activated. * * Units: increments of 5us; [0, 2^16) represents [10, 200) milliseconds. */ uint16_t lid_open_debounce_time_threshold; /** * The time to allow the Power Button signal to stabilize before reevaluating * its value to decide whether it was pressed. * * Units: increments of 5us; [0, 2^16) represents [10, 200) milliseconds. */ uint16_t power_button_debounce_time_threshold; } dif_sysrst_ctrl_ulp_wakeup_config_t; /** * Configures a System Reset Controller's key combination detection feature. * * @param sysrst_ctrl A System Reset Controller handle. * @param key_combo Key combination to configure. * @param config Runtime configuration parameters. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_key_combo_detect_configure( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_key_combo_t key_combo, dif_sysrst_ctrl_key_combo_config_t config); /** * Configures a System Reset Controller's input signal change detection feature. * * @param sysrst_ctrl A System Reset Controller handle. * @param config Runtime configuration parameters. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_input_change_detect_configure( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_input_change_config_t config); /** * Configures a System Reset Controller's output pin override feature. * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to configure the override feature for input pins will * return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param output_pin Output pin to configure. * @param config Output pin override configuration parameters. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_override_configure( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t output_pin, dif_sysrst_ctrl_pin_config_t config); /** * Configures a System Reset Controller's key signal auto-override feature. * * Upon detection of a Power Button high-to-low transition, the signals from * generic keys 0 through 2 may be overriden with specified values. * * @param sysrst_ctrl A System Reset Controller handle. * @param config Runtime configuration parameters. * @param enabled Whether to enable the feature or not. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_auto_override_configure( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_auto_override_config_t config, dif_toggle_t enabled); /** * Configures a System Reset Controller's ultra-low-power (ULP) wakeup feature. * * @param sysrst_ctrl A System Reset Controller handle. * @param config Runtime configuration parameters. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_ulp_wakeup_configure( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_ulp_wakeup_config_t config); /** * Sets the enablement state of a System Reset Controller's ultra-low-power * (ULP) wakeup feature. * * @param sysrst_ctrl A System Reset Controller handle. * @param enabled The enablement state to configure the ULP wakeup feature in. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_ulp_wakeup_set_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_toggle_t enabled); /** * Gets the enablement state of a System Reset Controller's ultra-low-power * (ULP) wakeup feature. * * @param sysrst_ctrl A System Reset Controller handle. * @param[out] is_enabled The enablement state of the ULP wakeup feature. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_ulp_wakeup_get_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_toggle_t *is_enabled); /** * Sets the inversion state a System Reset Controller's input and output pins. * * Note, only input and output (NOT inout) pins may be inverted. Attempting * to set the inversion state of inout pins will return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pins The input and output pins to set the inverted state of (i.e., one * or more `dif_sysrst_ctrl_pin_t`s ORed together). * @param inverted The inverted state to configure for the pins. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_pins_set_inverted( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t pins, bool inverted); /** * Gets the inversion state a System Reset Controller's input and output pins. * * @param sysrst_ctrl A System Reset Controller handle. * @param[out] inverted_pins The input and output pins that are inverted (i.e., * one or more `dif_sysrst_ctrl_pin_t`s ORed * together). * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_pins_get_inverted( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t *inverted_pins); /** * Sets allowable override values for a System Reset Controller's output pin. * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to set the allowable override values for input pins will * return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The output pin whose allowable override values should be set. * @param allow_zero Whether to allow overriding the pin's value to 0. * @param allow_one Whether to allow overriding the pin's value to 1. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_override_set_allowed( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, bool allow_zero, bool allow_one); /** * Gets allowable override values for a System Reset Controller's output pin. * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to get the allowable override values for input pins will * return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The allowable override values to get for an output pin. * @param[out] allow_zero Whether overriding the pin's value to 0 is allowed. * @param[out] allow_one Whether overriding the pin's value to 1 is allowed. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_override_get_allowed( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, bool *allow_zero, bool *allow_one); /** * Sets the enablement of a System Reset Controller's output pin override * feature. * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to set the enablement of the override feature for input * pins will return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The output pin whose override feature should be set. * @param enabled The enablement state to configure the override feature in. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_override_set_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, dif_toggle_t enabled); /** * Gets the enablement of a System Reset Controller's output pin override * feature. * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to get the enablement of the override feature for input * pins will return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The output pin whose override feature should be set. * @param[out] is_enabled The enablement state the override feature is * configured in. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_override_get_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, dif_toggle_t *is_enabled); /** * Sets the override value of a System Reset Controller's output pin (like * writing to a GPIO pin). * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to set the override value of an input pin will return * `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The output pin to override. * @param value The override value to set on the pin. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_set_override( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, bool value); /** * Gets the override value of a System Reset Controller's output pin (like * writing to a GPIO pin). * * Note, only output (or inout) pins may be overriden, i.e., set to a specific * value. Attempting to get the override value of an input pin will return * `kDifBadArg`. * * Additionally, this will return the configured override value of an output pin * regardless if the override function is enabled or the override value is * allowed. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The output pin to override. * @param[out] value The override value set on the pin. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_output_pin_get_override( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, bool *value); /** * Reads a System Reset Controller's input pin (like a GPIO pin). * * Note, only input (or inout) pins may be read. Attempting to read the value of * an output pin will return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param pin The pin to read. * @param[out] value The value set on the pin. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_input_pin_read( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_pin_t pin, bool *value); /** * Sets the enablement of a System Reset Controller's key signal auto-override * feature. * * Note, this feature is only available for keys 0, 1, and 2. Attempting to * enable the auto-override feature on non-supported keys will return * `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param key The key to enable the override feature for. * @param enabled Whether to enable the feature or not. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_auto_override_set_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_key_t key, dif_toggle_t enabled); /** * Gets the enablement of a System Reset Controller's key signal auto-override * feature. * * Note, this feature is only available for keys 0, 1, and 2. Attempting to * check whether the auto-override feature is enabled non-supported keys will * return `kDifBadArg`. * * @param sysrst_ctrl A System Reset Controller handle. * @param key The key the override feature is enabled for. * @param[out] is_enabled Whether the feature is enabled or not. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_auto_override_get_enabled( const dif_sysrst_ctrl_t *sysrst_ctrl, dif_sysrst_ctrl_key_t key, dif_toggle_t *is_enabled); /** * Gets the cause(s) of a key combination detection IRQ. * * @param sysrst_ctrl An sysrst_ctrl handle. * @param[out] causes The causes of the IRQ (one or more * `dif_sysrst_ctrl_key_combo_t`s ORed together). * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_key_combo_irq_get_causes( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t *causes); /** * Clears the cause(s) of a key combination detection IRQ. * * @param sysrst_ctrl An sysrst_ctrl handle. * @param causes The causes of the IRQ (one or more * `dif_sysrst_ctrl_key_combo_t`s ORed together). * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_key_combo_irq_clear_causes( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t causes); /** * Gets the cause(s) of an input signal change detection IRQ. * * @param sysrst_ctrl An sysrst_ctrl handle. * @param[out] causes The causes of the IRQ (one or more * `dif_sysrst_ctrl_input_change_t`s ORed together). * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_input_change_irq_get_causes( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t *causes); /** * Clears the cause(s) of an input signal change detection IRQ. * * @param sysrst_ctrl An sysrst_ctrl handle. * @param causes The causes of the IRQ (one or more * `dif_sysrst_ctrl_input_change_t`s ORed together). * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_input_change_irq_clear_causes( const dif_sysrst_ctrl_t *sysrst_ctrl, uint32_t causes); /** * Gets the ultra-low-power wakeup status. * * @param sysrst_ctrl An sysrst_ctrl handle. * @param[out] wakeup_detected The ULP wakeup detection state. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_ulp_wakeup_get_status( const dif_sysrst_ctrl_t *sysrst_ctrl, bool *wakeup_detected); /** * Clears the ultra-low-power wakeup status. * * @param sysrst_ctrl An sysrst_ctrl handle. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_ulp_wakeup_clear_status( const dif_sysrst_ctrl_t *sysrst_ctrl); /** * Locks System Reset Controller configurations. * * This function is reentrant: calling it while locked will have no effect and * return `kDifOk`. * * @param sysrst_ctrl A System Reset Controller handle. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_lock(const dif_sysrst_ctrl_t *sysrst_ctrl); /** * Checks whether System Reset Controller configurations are locked. * * @param sysrst_ctrl A System Reset Controller handle. * @param[out] is_locked Out-param for the locked state. * @return The result of the operation. */ OT_WARN_UNUSED_RESULT dif_result_t dif_sysrst_ctrl_is_locked(const dif_sysrst_ctrl_t *sysrst_ctrl, bool *is_locked); #ifdef __cplusplus } // extern "C" #endif // __cplusplus #endif // OPENTITAN_SW_DEVICE_LIB_DIF_DIF_SYSRST_CTRL_H_