18 #include "sw/device/lib/testing/pwrmgr_testutils.h"
19 #include "sw/device/lib/testing/rstmgr_testutils.h"
20 #include "sw/device/lib/testing/test_framework/FreeRTOSConfig.h"
21 #include "sw/device/lib/testing/test_framework/check.h"
24 static const dt_rstmgr_t kRstmgrDt = 0;
25 static_assert(kDtRstmgrCount == 1,
"this test expects a rstmgr");
26 static const dt_pwrmgr_t kPwrmgrDt = 0;
27 static_assert(kDtPwrmgrCount == 1,
"this test expects a pwrmgr");
28 static const dt_sysrst_ctrl_t kSysrstCtrlDt = 0;
29 static_assert(kDtSysrstCtrlCount == 1,
"this test expects a sysrst_ctrl");
30 static const dt_pinmux_t kPinmuxDt = 0;
31 static_assert(kDtPinmuxCount == 1,
"this test expects a pinmux");
33 OTTF_DEFINE_TEST_CONFIG(.enable_uart_flow_control =
true);
38 static dif_pwrmgr_t pwrmgr;
39 static dif_sysrst_ctrl_t sysrst_ctrl_aon;
40 static dif_rstmgr_t rstmgr;
45 void init_peripherals(
void) {
47 CHECK_DIF_OK(dif_pwrmgr_init_from_dt(kPwrmgrDt, &pwrmgr));
50 CHECK_DIF_OK(dif_sysrst_ctrl_init_from_dt(kSysrstCtrlDt, &sysrst_ctrl_aon));
53 CHECK_DIF_OK(dif_rstmgr_init_from_dt(kRstmgrDt, &rstmgr));
59 static void config_sysrst(
const dif_pwrmgr_t *pwrmgr,
60 const dif_sysrst_ctrl_t *sysrst_ctrl_aon) {
67 kDtSysrstCtrlResetReqRstReq, &reset_sources));
70 LOG_INFO(
"syrst_ctrl Reset Request is set");
78 .detection_time_threshold = 10,
80 .embedded_controller_reset_duration = 10};
91 CHECK_DIF_OK(dif_pinmux_init_from_dt(kPinmuxDt, &pinmux));
94 sysrst_ctrl_aon, sysrst_ctrl_input_change_config));
98 dt_sysrst_ctrl_periph_io(kSysrstCtrlDt, kDtSysrstCtrlPeriphIoKey0In),
102 static void low_power_por(
const dif_pwrmgr_t *pwrmgr) {
104 CHECK_STATUS_OK(pwrmgr_testutils_enable_low_power(pwrmgr, 0, 0));
109 CHECK(
false,
"Fail to enter in low power mode!");
117 rst_info = rstmgr_testutils_reason_get();
118 rstmgr_testutils_reason_clear();
119 LOG_INFO(
"Reset info 0x%x", rst_info);
121 config_sysrst(&pwrmgr, &sysrst_ctrl_aon);
123 low_power_por(&pwrmgr);
124 CHECK(
false,
"This is unreachable");
125 }
else if ((rst_info & kDifRstmgrResetInfoSysRstCtrl) != 0) {
130 LOG_ERROR(
"Wrong reset reason %02X", rst_info);