15 #include "sw/device/lib/testing/aon_timer_testutils.h"
16 #include "sw/device/lib/testing/pwrmgr_testutils.h"
17 #include "sw/device/lib/testing/rstmgr_testutils.h"
18 #include "sw/device/lib/testing/test_framework/check.h"
22 #include "usbdev_regs.h"
24 OTTF_DEFINE_TEST_CONFIG();
26 static dif_aon_timer_t aon_timer;
27 static dif_usbdev_t usbdev;
29 static const uint32_t kExpectedHunkAddress =
32 static void usbdev_csr_access(
void) {
33 CHECK_DIF_OK(dif_usbdev_irq_set_enabled(&usbdev, kDifUsbdevIrqPowered,
37 dif_usbdev_irq_get_enabled(&usbdev, kDifUsbdevIrqPowered, &state));
45 CHECK_DIF_OK(dif_rstmgr_init(
47 CHECK_DIF_OK(dif_pwrmgr_init(
49 CHECK_DIF_OK(dif_aon_timer_init(
51 CHECK_DIF_OK(dif_usbdev_init(
58 CHECK_STATUS_OK(rstmgr_testutils_pre_reset(&rstmgr));
65 uint32_t bite_cycles = 0;
67 aon_timer_testutils_get_aon_cycles_32_from_us(bite_us, &bite_cycles));
68 LOG_INFO(
"Setting bite reset for %u us (%u cycles)", bite_us, bite_cycles);
71 CHECK_STATUS_OK(aon_timer_testutils_watchdog_config(&aon_timer, UINT32_MAX,
76 kDifPwrmgrResetRequestSourceTwo,
88 LOG_ERROR(
"This is unreachable since a reset should have been triggered");
90 }
else if (UNWRAP(rstmgr_testutils_is_reset_info(
91 &rstmgr, kDifRstmgrResetInfoWatchdog))) {
92 LOG_INFO(
"Got an expected watchdog reset when accessing USB");
102 CHECK(size_read == actual_size);
103 LOG_INFO(
"EXC_ADDR = 0x%x", cpu_dump[0]);
104 LOG_INFO(
"EXC_PC = 0x%x", cpu_dump[1]);
105 LOG_INFO(
"LAST_DATA ADDR = 0x%x", cpu_dump[2]);
106 LOG_INFO(
"NEXT_PC = 0x%x", cpu_dump[3]);
107 LOG_INFO(
"CURRENT_PC = 0x%x", cpu_dump[4]);
108 LOG_INFO(
"PREV_EXC_ADDR = 0x%x", cpu_dump[5]);
109 LOG_INFO(
"PREV_EXC_PC = 0x%x", cpu_dump[6]);
110 LOG_INFO(
"PREV_VALID = 0x%x", cpu_dump[7]);
112 CHECK(cpu_dump[2] == kExpectedHunkAddress,
"Unexpected hung address");
116 reset_info = rstmgr_testutils_reason_get();
117 LOG_ERROR(
"Unexpected reset_info 0x%x", reset_info);