summaryrefslogtreecommitdiff
path: root/lib/utils/reset/fdt_reset_htif.c
diff options
context:
space:
mode:
authorAnup Patel <apatel@ventanamicro.com>2022-01-06 06:46:55 +0300
committerAnup Patel <anup@brainfault.org>2022-01-11 15:47:49 +0300
commit6dde43584f185f71a8dd713deb438d7c724a9ad5 (patch)
tree46a01fc502ec87a7210f81bf8a000e08f73e67a8 /lib/utils/reset/fdt_reset_htif.c
parent5b9960379fae14b554c953b0d4139f4b1a57cd5e (diff)
downloadopensbi-6dde43584f185f71a8dd713deb438d7c724a9ad5.tar.xz
lib: utils/sys: Extend HTIF library to allow custom base addressSDK_v2.0.0
Some of RISC-V emulators provide HTIF at fixed base address so for such emulators users have to hard-code HTIF base address in the linker script. To address this problem, we let users optionally provide fixed HTIF base address via platform support (or device tree). Signed-off-by: Anup Patel <apatel@ventanamicro.com> Reviewed-by: Dong Du <Dd_nirvana@sjtu.edu.cn> Reviewed-by: Atish Patra <atishp@rivosinc.com>
Diffstat (limited to 'lib/utils/reset/fdt_reset_htif.c')
-rw-r--r--lib/utils/reset/fdt_reset_htif.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/utils/reset/fdt_reset_htif.c b/lib/utils/reset/fdt_reset_htif.c
index dd08660..2cc52dd 100644
--- a/lib/utils/reset/fdt_reset_htif.c
+++ b/lib/utils/reset/fdt_reset_htif.c
@@ -14,7 +14,17 @@
static int htif_reset_init(void *fdt, int nodeoff,
const struct fdt_match *match)
{
- return htif_system_reset_init();
+ bool custom = false;
+ uint64_t fromhost_addr = 0, tohost_addr = 0;
+
+ if (!fdt_get_node_addr_size(fdt, nodeoff, 0, &fromhost_addr, NULL)) {
+ custom = true;
+ tohost_addr = fromhost_addr + sizeof(uint64_t);
+ }
+
+ fdt_get_node_addr_size(fdt, nodeoff, 1, &tohost_addr, NULL);
+
+ return htif_system_reset_init(custom, fromhost_addr, tohost_addr);
}
static const struct fdt_match htif_reset_match[] = {