[dif/rv_timer] Prepare for `dif_rv_timer_init()` autogen.
The RV Timer `dif_rv_timer_init()` function contained reset logic that was
inconsistent with other IP's DIF APIs. In order to auto-generate the
`dif_<ip>_init()` function across all IPs (as stated in #8409), this reset
logic must be separated into a separate DIF/DIF invocation.
Signed-off-by: Timothy Trippel <ttrippel@google.com>
diff --git a/hw/top_englishbreakfast/util/sw_sources.patch b/hw/top_englishbreakfast/util/sw_sources.patch
index 0ce987b..90f4bb6 100644
--- a/hw/top_englishbreakfast/util/sw_sources.patch
+++ b/hw/top_englishbreakfast/util/sw_sources.patch
@@ -75,7 +75,7 @@
simple_serial_process_packet();
}
diff --git a/sw/device/sca/lib/sca.c b/sw/device/sca/lib/sca.c
-index 770b830eb..ec3e3be22 100644
+index 30ca7e0a4..a46911701 100644
--- a/sw/device/sca/lib/sca.c
+++ b/sw/device/sca/lib/sca.c
@@ -56,7 +56,6 @@ enum {
@@ -102,7 +102,7 @@
}
/**
-@@ -147,25 +142,6 @@ void handler_irq_timer(void) {
+@@ -148,25 +143,6 @@ void handler_irq_timer(void) {
* @param disable Set of peripherals to disable.
*/
void sca_disable_peripherals(sca_peripherals_t disable) {
@@ -128,7 +128,7 @@
// Disable HMAC, KMAC, OTBN and USB clocks through CLKMGR DIF.
dif_clkmgr_t clkmgr;
IGNORE_RESULT(dif_clkmgr_init(
-@@ -179,17 +155,6 @@ void sca_disable_peripherals(sca_peripherals_t disable) {
+@@ -180,17 +156,6 @@ void sca_disable_peripherals(sca_peripherals_t disable) {
IGNORE_RESULT(dif_clkmgr_hintable_clock_set_hint(
&clkmgr, CLKMGR_CLK_HINTS_CLK_MAIN_HMAC_HINT_BIT, kDifToggleDisabled));
}
diff --git a/sw/device/lib/dif/dif_rv_timer.c b/sw/device/lib/dif/dif_rv_timer.c
index a11315f..6f43230 100644
--- a/sw/device/lib/dif/dif_rv_timer.c
+++ b/sw/device/lib/dif/dif_rv_timer.c
@@ -44,7 +44,7 @@
timer_out->base_addr = base_addr;
- return dif_rv_timer_reset(timer_out);
+ return kDifOk;
}
/**
diff --git a/sw/device/lib/dif/dif_rv_timer_unittest.cc b/sw/device/lib/dif/dif_rv_timer_unittest.cc
index 5c71591..7970386 100644
--- a/sw/device/lib/dif/dif_rv_timer_unittest.cc
+++ b/sw/device/lib/dif/dif_rv_timer_unittest.cc
@@ -116,19 +116,6 @@
class InitTest : public TimerTest {};
TEST_F(InitTest, Success) {
- EXPECT_WRITE32(RV_TIMER_CTRL_REG_OFFSET, 0x0);
-
- EXPECT_WRITE32(IrqRegForHart(0, 1, RV_TIMER_INTR_ENABLE0_REG_OFFSET), 0x0);
- EXPECT_WRITE32(IrqRegForHart(0, 1, RV_TIMER_INTR_STATE0_REG_OFFSET),
- kAllOnes);
-
- EXPECT_WRITE32(RegForHart(0, RV_TIMER_COMPARE_UPPER0_0_REG_OFFSET), kAllOnes);
- EXPECT_WRITE32(RegForHart(0, RV_TIMER_COMPARE_LOWER0_0_REG_OFFSET), kAllOnes);
- EXPECT_WRITE32(RegForHart(0, RV_TIMER_COMPARE_UPPER0_0_REG_OFFSET), kAllOnes);
-
- EXPECT_WRITE32(RegForHart(0, RV_TIMER_TIMER_V_LOWER0_REG_OFFSET), 0x0);
- EXPECT_WRITE32(RegForHart(0, RV_TIMER_TIMER_V_UPPER0_REG_OFFSET), 0x0);
-
EXPECT_EQ(dif_rv_timer_init(dev().region(), &rv_timer_), kDifOk);
}
diff --git a/sw/device/lib/testing/test_framework/example_earlgrey_test.c b/sw/device/lib/testing/test_framework/example_earlgrey_test.c
index 4328aa5..7631acf 100644
--- a/sw/device/lib/testing/test_framework/example_earlgrey_test.c
+++ b/sw/device/lib/testing/test_framework/example_earlgrey_test.c
@@ -25,6 +25,7 @@
void test_main(void *result) {
CHECK_DIF_OK(dif_rv_timer_init(
mmio_region_from_addr(TOP_EARLGREY_RV_TIMER_BASE_ADDR), &timer));
+ CHECK_DIF_OK(dif_rv_timer_reset(&timer));
uint64_t current_time;
const uint32_t kHart = (uint32_t)kTopEarlgreyPlicTargetIbex0;
diff --git a/sw/device/lib/testing/test_framework/freertos_port.c b/sw/device/lib/testing/test_framework/freertos_port.c
index e6270be..8f8f3a8 100644
--- a/sw/device/lib/testing/test_framework/freertos_port.c
+++ b/sw/device/lib/testing/test_framework/freertos_port.c
@@ -51,6 +51,7 @@
// Initialize and reset the timer.
CHECK_DIF_OK(dif_rv_timer_init(
mmio_region_from_addr(TOP_EARLGREY_RV_TIMER_BASE_ADDR), &timer));
+ CHECK_DIF_OK(dif_rv_timer_reset(&timer));
// Compute and set tick parameters (i.e., step, prescale, etc.).
dif_rv_timer_tick_params_t tick_params;
diff --git a/sw/device/sca/lib/sca.c b/sw/device/sca/lib/sca.c
index 770b830..30ca7e0 100644
--- a/sw/device/sca/lib/sca.c
+++ b/sw/device/sca/lib/sca.c
@@ -110,6 +110,7 @@
static void sca_init_timer(void) {
IGNORE_RESULT(dif_rv_timer_init(
mmio_region_from_addr(TOP_EARLGREY_RV_TIMER_BASE_ADDR), &timer));
+ IGNORE_RESULT(dif_rv_timer_reset(&timer));
dif_rv_timer_tick_params_t tick_params;
IGNORE_RESULT(dif_rv_timer_approximate_tick_params(
kClockFreqPeripheralHz, kClockFreqCpuHz, &tick_params));
diff --git a/sw/device/tests/rv_timer_smoketest.c b/sw/device/tests/rv_timer_smoketest.c
index 9957004..be89f52 100644
--- a/sw/device/tests/rv_timer_smoketest.c
+++ b/sw/device/tests/rv_timer_smoketest.c
@@ -60,6 +60,7 @@
CHECK_DIF_OK(dif_rv_timer_init(
mmio_region_from_addr(TOP_EARLGREY_RV_TIMER_BASE_ADDR), &timer));
+ CHECK_DIF_OK(dif_rv_timer_reset(&timer));
dif_rv_timer_tick_params_t tick_params;
CHECK_DIF_OK(dif_rv_timer_approximate_tick_params(kClockFreqPeripheralHz,