Software APIs
rstmgr_sw_req_test.c
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #include "dt/dt_rstmgr.h" // Generated
8 #include "sw/device/lib/testing/rstmgr_testutils.h"
9 #include "sw/device/lib/testing/test_framework/check.h"
11 
12 static dif_rstmgr_t rstmgr;
13 static dt_rstmgr_t kRstmgrDt = (dt_rstmgr_t)0;
14 static_assert(kDtRstmgrCount == 1, "This test requires 1 rstmgr");
15 
16 OTTF_DEFINE_TEST_CONFIG();
17 
18 bool test_main(void) {
19  CHECK_DIF_OK(dif_rstmgr_init_from_dt(kRstmgrDt, &rstmgr));
20 
22  reason = rstmgr_testutils_reason_get();
23 
24  // If POR, clear reason and request software reset
25  if (reason & kDifRstmgrResetInfoPor) {
26  LOG_INFO("POR encountered!");
27  rstmgr_testutils_reason_clear();
28  CHECK_DIF_OK(dif_rstmgr_software_device_reset(&rstmgr));
29 
30  // wait here until device reset
32  } else if (reason == kDifRstmgrResetInfoSw) {
33  LOG_INFO("Software reset encountered!");
34  rstmgr_testutils_reason_clear();
35  } else {
36  LOG_FATAL("Reset reason unexpected!");
37  test_status_set(kTestStatusFailed);
38  }
39 
40  return true;
41 }