9 #include "sw/device/lib/testing/sysrst_ctrl_testutils.h"
10 #include "sw/device/lib/testing/test_framework/check.h"
12 #include "sw/device/lib/testing/test_framework/ottf_utils.h"
18 OTTF_DEFINE_TEST_CONFIG(.enable_uart_flow_control =
true);
20 static dif_sysrst_ctrl_t sysrst_ctrl;
21 const uint32_t kNumPhases = 10;
25 static const volatile uint8_t kTestPhaseDV = 0;
26 static const volatile uint8_t kTestExpectedDV = 0;
32 static volatile uint8_t kTestPhaseReal = 0xff;
33 static volatile uint8_t kTestExpectedReal = 0;
37 kOutputNumMioPads = 0x6,
70 static uint8_t read_input_pins(
void) {
73 for (
int i = 0; i < kOutputNumPads; ++i) {
75 &sysrst_ctrl, kSysrstCtrlInputs[i], &input_value));
76 inputs |= input_value << i;
82 CHECK_DIF_OK(dif_sysrst_ctrl_init(
87 CHECK_DIF_OK(dif_pinmux_init(
92 sysrst_ctrl_testutils_setup_dio(&pinmux);
94 sysrst_ctrl_testutils_release_dio(&sysrst_ctrl,
true,
true);
96 sysrst_ctrl_testutils_set_ec_rst_pulse_width(&sysrst_ctrl, 0);
100 for (
int i = 0; i < kOutputNumMioPads; ++i) {
105 const uint32_t kTestPhaseTimeoutUsec =
108 const volatile uint8_t *kTestPhase =
110 const volatile uint8_t *kTestExpected =
113 for (
int i = 0; i < kNumPhases; ++i) {
114 OTTF_WAIT_FOR(i == *kTestPhase, kTestPhaseTimeoutUsec);
115 uint8_t input_pins = read_input_pins();
116 LOG_INFO(
"Expect pins: %x, got: %x", *kTestExpected, input_pins);
117 CHECK(*kTestExpected == input_pins);
120 test_status_set(kTestStatusInTest);
121 test_status_set(kTestStatusInWfi);
124 test_status_set(kTestStatusInTest);