|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | #include "sw/device/lib/testing/pwrmgr_testutils.h" | 
|  |  | 
|  | #include <stdbool.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include "sw/device/lib/base/mmio.h" | 
|  | #include "sw/device/lib/dif/dif_pwrmgr.h" | 
|  | #include "sw/device/lib/testing/check.h" | 
|  |  | 
|  | void pwrmgr_testutils_enable_low_power( | 
|  | const dif_pwrmgr_t *pwrmgr, dif_pwrmgr_request_sources_t wakeups, | 
|  | dif_pwrmgr_domain_config_t domain_config) { | 
|  | // Enable low power on the next WFI with clocks and power domains configured | 
|  | // per domain_config. | 
|  | CHECK_DIF_OK(dif_pwrmgr_set_request_sources(pwrmgr, kDifPwrmgrReqTypeWakeup, | 
|  | wakeups, kDifToggleDisabled)); | 
|  | CHECK_DIF_OK( | 
|  | dif_pwrmgr_set_domain_config(pwrmgr, domain_config, kDifToggleDisabled)); | 
|  | CHECK_DIF_OK(dif_pwrmgr_low_power_set_enabled(pwrmgr, kDifToggleEnabled, | 
|  | kDifToggleEnabled)); | 
|  | } | 
|  |  | 
|  | bool pwrmgr_testutils_is_wakeup_reason(const dif_pwrmgr_t *pwrmgr, | 
|  | dif_pwrmgr_request_sources_t reasons) { | 
|  | dif_pwrmgr_wakeup_reason_t wakeup_reason; | 
|  | CHECK_DIF_OK(dif_pwrmgr_wakeup_reason_get(pwrmgr, &wakeup_reason)); | 
|  |  | 
|  | return (wakeup_reason.request_sources == 0 || | 
|  | wakeup_reason.types == kDifPwrmgrWakeupTypeRequest) && | 
|  | wakeup_reason.request_sources == reasons; | 
|  | } |