| // 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/test_framework/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; | |
| } |