15 #include "sw/device/lib/testing/rstmgr_testutils.h"
16 #include "sw/device/lib/testing/test_framework/check.h"
18 #include "sw/device/silicon_creator/lib/drivers/alert.h"
19 #include "sw/device/silicon_creator/lib/drivers/rstmgr.h"
20 #include "sw/device/silicon_creator/lib/error.h"
22 #include "alert_handler_regs.h"
23 #include "flash_ctrl_regs.h"
25 #include "otp_ctrl_regs.h"
26 #include "rstmgr_regs.h"
34 rom_error_t alert_no_escalate_test(
void) {
38 .escalation = kAlertEscalatePhase0,
41 .phase_cycles = {1, 10, 100, 1000},
43 LOG_INFO(
"Configure OtpCtrlFatalMacroError as class B");
45 kAlertClassB, kAlertEnableLocked));
46 LOG_INFO(
"Configure class B alerts");
47 RETURN_IF_ERROR(alert_class_configure(kAlertClassB, &config));
49 LOG_INFO(
"Generate alert via test regs");
50 abs_mmio_write32(kOtpCoreBase + OTP_CTRL_ALERT_TEST_REG_OFFSET, 1);
52 abs_mmio_read32(kAlertBase + ALERT_HANDLER_CLASSB_ACCUM_CNT_REG_OFFSET);
53 return count == 1 ? kErrorOk : kErrorUnknown;
56 rom_error_t alert_escalate_test(
void) {
60 .escalation = kAlertEscalatePhase3,
63 .phase_cycles = {1, 10, 100, 1000},
66 LOG_INFO(
"Configure FlashCtrlFatalErr as class A");
68 kAlertClassA, kAlertEnableEnabled));
69 LOG_INFO(
"Configure class A alerts");
70 RETURN_IF_ERROR(alert_class_configure(kAlertClassA, &config));
72 LOG_INFO(
"Generate alert via test regs");
73 abs_mmio_write32(kFlashBase + FLASH_CTRL_ALERT_TEST_REG_OFFSET,
74 1u << FLASH_CTRL_ALERT_TEST_FATAL_ERR_BIT);
78 OTTF_DEFINE_TEST_CONFIG();
82 uint32_t reason = rstmgr_testutils_reason_get();
83 rstmgr_alert_info_enable();
84 LOG_INFO(
"reset_info = %08x", reason);
88 rstmgr_testutils_reason_clear();
93 LOG_ERROR(
"Test failure: should have reset before this line.");
97 LOG_INFO(
"Detected reset after escalation test");
102 return status_ok(result);