[sw/dif_pwrmgr] Update Power Manager DIF library header
Signed-off-by: Alphan Ulusoy <alphan@google.com>
diff --git a/sw/device/lib/dif/dif_pwrmgr.h b/sw/device/lib/dif/dif_pwrmgr.h
index 997dacd..a33fad1 100644
--- a/sw/device/lib/dif/dif_pwrmgr.h
+++ b/sw/device/lib/dif/dif_pwrmgr.h
@@ -28,11 +28,11 @@
/**
* Enabled state.
*/
- kDifPwrmgrToggleEnable,
+ kDifPwrmgrToggleEnabled,
/**
* Disabled state.
*/
- kDifPwrmgrToggleDisable,
+ kDifPwrmgrToggleDisabled,
} dif_pwrmgr_toggle_t;
/**
@@ -76,36 +76,45 @@
} dif_pwrmgr_req_type_t;
/**
- * A domain that can be enabled or disabled by the power manager.
+ * Options for enabling/disabling various clock and power domains
+ * in low and active power states.
*
- * Constants below are bitmasks that can be used to define sets of domains.
+ * Constants below are bitmasks that can be combined to define configurations.
*
- * See also: `dif_pwrmgr_domains_t`.
+ * See also: `dif_pwrmgr_domain_config_t`.
*/
-typedef enum dif_pwrmgr_domain {
+typedef enum dif_pwrmgr_domain_option {
/**
- * Core clock domain.
+ * Enable core clock in low power state.
*/
- kDifPwrmgrDomainCoreClock = (1u << 0),
+ kDifPwrmgrDomainOptionCoreClockInLowPower = (1u << 0),
/**
- * Input/output (IO) clock domain.
+ * Enable input/output (IO) clock in low power state.
*/
- kDifPwrmgrDomainIoClock = (1u << 1),
+ kDifPwrmgrDomainOptionIoClockInLowPower = (1u << 1),
/**
- * Main power domain.
+ * Enable USB clock in low power state.
*/
- kDifPwrmgrDomainMain = (1u << 2),
-} dif_pwrmgr_domain_t;
+ kDifPwrmgrDomainOptionUsbClockInLowPower = (1u << 2),
+ /**
+ * Enable USB clock in active power state.
+ */
+ kDifPwrmgrDomainOptionUsbClockInActivePower = (1u << 3),
+ /**
+ * Enable main power domain in low power state.
+ */
+ kDifPwrmgrDomainOptionMainPowerInLowPower = (1u << 4),
+} dif_pwrmgr_domain_option_t;
/**
- * A set of power domains.
+ * A set of domain options.
*
- * This type is used for specifying and querying which domains are enabled in
- * low power state.
+ * This type is used for specifying and querying which clock and power domains
+ * are enabled in low and active power states.
*
- * See also: `dif_pwrmgr_domain_t`.
+ * See also: `dif_pwrmgr_domain_option_t`.
*/
-typedef uint8_t dif_pwrmgr_domains_t;
+typedef uint8_t dif_pwrmgr_domain_config_t;
/**
* A wakeup request source.
@@ -119,11 +128,6 @@
*/
typedef enum dif_pwrmgr_wakeup_request_source {
kDifPwrmgrWakeupRequestSourceOne = (1u << 0),
- kDifPwrmgrWakeupRequestSourceTwo = (1u << 1),
- kDifPwrmgrWakeupRequestSourceThree = (1u << 2),
- kDifPwrmgrWakeupRequestSourceFour = (1u << 3),
- kDifPwrmgrWakeupRequestSourceFive = (1u << 4),
- kDifPwrmgrWakeupRequestSourceSix = (1u << 5),
} dif_pwrmgr_wakeup_request_source_t;
/**
@@ -138,8 +142,6 @@
*/
typedef enum dif_pwrmgr_reset_request_source {
kDifPwrmgrResetRequestSourceOne = (1u << 0),
- kDifPwrmgrResetRequestSourceTwo = (1u << 1),
- kDifPwrmgrResetRequestSourceThree = (1u << 2),
} dif_pwrmgr_reset_request_source_t;
/**
@@ -209,7 +211,7 @@
/**
* The call succeeded.
*/
- kDifPwrmgrOK = 0,
+ kDifPwrmgrOk = 0,
/**
* A non-specific error occurred and the hardware is in an invalid or
* irrecoverable state.
@@ -230,21 +232,21 @@
/**
* The call succeeded.
*/
- kDifPwrmgrConfigResultOK = kDifPwrmgrOK,
+ kDifPwrmgrConfigOk = kDifPwrmgrOk,
/**
* A non-specific error occurred and the hardware is in an invalid or
* irrecoverable state.
*/
- kDifPwrmgrConfigResultError = kDifPwrmgrError,
+ kDifPwrmgrConfigError = kDifPwrmgrError,
/**
* The caller supplied invalid arguments but the call did not cause any
* side-effects and the hardware is in a valid and recoverable state.
*/
- kDifPwrmgrConfigResultBadArg = kDifPwrmgrBadArg,
+ kDifPwrmgrConfigBadArg = kDifPwrmgrBadArg,
/**
* The register that needs to be written to is locked.
*/
- kDifPwrMgrConfigResultLocked,
+ kDifPwrMgrConfigLocked,
} dif_pwrmgr_config_result_t;
/**
@@ -256,7 +258,11 @@
*
* Note: This interrupt is not triggered during power-on reset.
*/
- kDifPwrmgrIrqWakeup,
+ kDifPwrmgrIrqWakeup = 0,
+ /**
+ * \internal Last power manager interrupt.
+ */
+ kDifPwrmgrIrqLast = kDifPwrmgrIrqWakeup,
} dif_pwrmgr_irq_t;
/**
@@ -288,12 +294,15 @@
* corresponding bit automatically, this function must be called before each
* transition to low power state.
*
+ * Note: This function also syncs changes to the slow clock domain for them to
+ * take effect.
+ *
* @param pwrmgr A power manager handle.
* @param new_state Whether low power state is enabled.
* @return The result of the operation.
*/
DIF_WARN_UNUSED_RESULT
-dif_pwrmgr_result_t dif_pwrmgr_low_power_set_enabled(
+dif_pwrmgr_config_result_t dif_pwrmgr_low_power_set_enabled(
const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_toggle_t new_state);
/**
@@ -308,26 +317,30 @@
const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_toggle_t *cur_state);
/**
- * Sets domains that are enabled in low power state.
+ * Configures power manager to enable/disable various clock and power domains in
+ * low and active power states.
+ *
+ * Note: This function also syncs changes to the slow clock domain for them to
+ * take effect.
*
* @param pwrmgr A power manager handle.
- * @param domains Domains enabled in low power state.
+ * @param config A domain configuration.
* @return The result of the operation.
*/
DIF_WARN_UNUSED_RESULT
-dif_pwrmgr_result_t dif_pwrmgr_low_power_set_domains(
- const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_domains_t domains);
+dif_pwrmgr_config_result_t dif_pwrmgr_set_domain_config(
+ const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_domain_config_t config);
/**
- * Gets domains that are enabled in low power state.
+ * Gets current power manager configuration.
*
* @param pwrmgr A power manager handle.
- * @param[out] domains Domains enabled in low power state.
+ * @param[out] config Current configuration.
* @return The result of the operation.
*/
DIF_WARN_UNUSED_RESULT
-dif_pwrmgr_result_t dif_pwrmgr_low_power_get_domains(
- const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_domains_t *domains);
+dif_pwrmgr_result_t dif_pwrmgr_get_domain_config(
+ const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_domain_config_t *config);
/**
* Sets sources enabled for a request type.
@@ -336,6 +349,9 @@
* watchdog timer, USB, etc. This function sets which sources are enabled for a
* particular request type.
*
+ * Note: This function also syncs changes to the slow clock domain for them to
+ * take effect.
+ *
* @param pwrmgr A power manager handle.
* @param req_type A request type.
* @param sources Sources enabled for the given request type.