[bazel/test_rom] use the dif for the rstmgr in test_rom
Some of the target specific sources are to do with bootstraps but some
aren't specific anylonger so they were renamed target_test_rom_lib or
with a specific platform substituted for "target"
Signed-off-by: Drew Macrae <drewmacrae@google.com>
diff --git a/sw/device/lib/dif/BUILD b/sw/device/lib/dif/BUILD
index b989d32..87bf672 100644
--- a/sw/device/lib/dif/BUILD
+++ b/sw/device/lib/dif/BUILD
@@ -789,17 +789,21 @@
)
cc_library(
+ name = "rstmgr_intf",
+ srcs = ["autogen/dif_rstmgr_autogen.h"],
+ hdrs = ["dif_rstmgr.h"],
+ deps = [":base"],
+)
+
+cc_library(
name = "rstmgr",
srcs = [
"autogen/dif_rstmgr_autogen.c",
- "autogen/dif_rstmgr_autogen.h",
"dif_rstmgr.c",
],
- hdrs = [
- "dif_rstmgr.h",
- ],
deps = [
":base",
+ ":rstmgr_intf",
"//hw/top_earlgrey/ip/rstmgr/data/autogen:rstmgr_regs",
"//sw/device/lib/base:bitfield",
"//sw/device/lib/base:macros",
diff --git a/sw/device/lib/testing/test_rom/BUILD b/sw/device/lib/testing/test_rom/BUILD
index aaa8ab6..6046846 100644
--- a/sw/device/lib/testing/test_rom/BUILD
+++ b/sw/device/lib/testing/test_rom/BUILD
@@ -31,9 +31,9 @@
)
# TODO(#12905): Use a slightly hollowed out version of the silicon_creator bootstrap
-# implemention when building the test_rom for the english breakfast top level.
+# and other functions necessary to build the test_rom for the english breakfast top level.
cc_library(
- name = "english_breakfast_test_rom_bootstrap",
+ name = "english_breakfast_test_rom_lib",
srcs = [
"english_breakfast_fake_driver_funcs.c",
"//sw/device/silicon_creator/lib/drivers:english_breakfast_test_rom_driver_srcs",
@@ -49,15 +49,24 @@
"//hw/top_earlgrey/sw/autogen:top_earlgrey",
"//sw/device/lib/base:abs_mmio",
"//sw/device/lib/base:multibits",
+ "//sw/device/lib/dif:rstmgr_intf",
"//sw/device/silicon_creator/lib/base:sec_mmio",
],
)
+cc_library(
+ name = "earl_grey_test_rom_lib",
+ deps = [
+ "//sw/device/lib/dif:rstmgr",
+ "//sw/device/silicon_creator/mask_rom:bootstrap",
+ ],
+)
+
alias(
- name = "test_rom_bootstrap",
+ name = "target_test_rom_lib",
actual = select({
- "//sw/device:is_english_breakfast": ":english_breakfast_test_rom_bootstrap",
- "//conditions:default": "//sw/device/silicon_creator/mask_rom:bootstrap",
+ "//sw/device:is_english_breakfast": ":english_breakfast_test_rom_lib",
+ "//conditions:default": ":earl_grey_test_rom_lib",
}),
visibility = ["//visibility:private"],
)
@@ -106,7 +115,7 @@
target_compatible_with = [OPENTITAN_CPU],
deps = [
":chip_info",
- ":test_rom_bootstrap",
+ ":target_test_rom_lib",
":test_rom_manifest",
"//hw/ip/clkmgr/data:clkmgr_regs",
"//hw/ip/csrng/data:csrng_regs",
diff --git a/sw/device/lib/testing/test_rom/english_breakfast_fake_driver_funcs.c b/sw/device/lib/testing/test_rom/english_breakfast_fake_driver_funcs.c
index c0871a3..80615c3 100644
--- a/sw/device/lib/testing/test_rom/english_breakfast_fake_driver_funcs.c
+++ b/sw/device/lib/testing/test_rom/english_breakfast_fake_driver_funcs.c
@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
+#include "sw/device/lib/dif/dif_rstmgr.h"
#include "sw/device/silicon_creator/lib/drivers/lifecycle.h"
#include "sw/device/silicon_creator/lib/drivers/otp.h"
#include "sw/device/silicon_creator/lib/drivers/rstmgr.h"
@@ -23,9 +24,19 @@
uint32_t otp_read32(uint32_t address) { return kHardenedBoolTrue; }
-uint32_t rstmgr_reason_get(void) { return 1 << kRstmgrReasonPowerOn; }
+dif_result_t dif_rstmgr_init(mmio_region_t base_addr, dif_rstmgr_t *rstmgr) {
+ return kDifOk;
+}
-void rstmgr_reason_clear(uint32_t reasons) {}
+dif_result_t dif_rstmgr_reset_info_get(const dif_rstmgr_t *handle,
+ dif_rstmgr_reset_info_bitfield_t *info) {
+ *info = 1 << kRstmgrReasonPowerOn;
+ return kDifOk;
+}
+
+dif_result_t dif_rstmgr_reset_info_clear(const dif_rstmgr_t *handle) {
+ return kDifOk;
+}
void rstmgr_reset(void) {
while (true) {
diff --git a/sw/device/lib/testing/test_rom/test_rom.c b/sw/device/lib/testing/test_rom/test_rom.c
index 9a63e2b..33c4993 100644
--- a/sw/device/lib/testing/test_rom/test_rom.c
+++ b/sw/device/lib/testing/test_rom/test_rom.c
@@ -9,6 +9,7 @@
#include "sw/device/lib/dif/dif_flash_ctrl.h"
#include "sw/device/lib/dif/dif_gpio.h"
#include "sw/device/lib/dif/dif_pinmux.h"
+#include "sw/device/lib/dif/dif_rstmgr.h"
#include "sw/device/lib/dif/dif_uart.h"
#include "sw/device/lib/ibex_peri.h"
#include "sw/device/lib/runtime/hart.h"
@@ -20,7 +21,6 @@
#include "sw/device/lib/testing/test_framework/status.h"
#include "sw/device/lib/testing/test_rom/chip_info.h" // Generated.
#include "sw/device/silicon_creator/lib/drivers/retention_sram.h"
-#include "sw/device/silicon_creator/lib/drivers/rstmgr.h"
#include "sw/device/silicon_creator/lib/manifest.h"
#include "sw/device/silicon_creator/mask_rom/bootstrap.h"
@@ -47,6 +47,7 @@
static dif_clkmgr_t clkmgr;
static dif_flash_ctrl_state_t flash_ctrl;
static dif_pinmux_t pinmux;
+static dif_rstmgr_t rstmgr;
static dif_uart_t uart0;
// `test_in_rom = True` tests can override this symbol to provide their own
@@ -58,6 +59,9 @@
mmio_region_from_addr(TOP_EARLGREY_PINMUX_AON_BASE_ADDR), &pinmux));
pinmux_testutils_init(&pinmux);
+ CHECK_DIF_OK(dif_rstmgr_init(
+ mmio_region_from_addr(TOP_EARLGREY_RSTMGR_AON_BASE_ADDR), &rstmgr));
+
// Initialize the flash.
CHECK_DIF_OK(dif_flash_ctrl_init_state(
&flash_ctrl,
@@ -83,11 +87,12 @@
LOG_INFO("%s", chip_info);
// Skip sram_init for test_rom
- uint32_t reset_reasons = rstmgr_reason_get();
+ dif_rstmgr_reset_info_bitfield_t reset_reasons;
+ CHECK_DIF_OK(dif_rstmgr_reset_info_get(&rstmgr, &reset_reasons));
// Store the reset reason in retention RAM and clear the register.
retention_sram_get()->reset_reasons = reset_reasons;
- rstmgr_reason_clear(reset_reasons);
+ CHECK_DIF_OK(dif_rstmgr_reset_info_clear(&rstmgr));
// Print the FPGA version-id.
// This is guaranteed to be zero on all non-FPGA implementations.