diff options
author | Anup Patel <apatel@ventanamicro.com> | 2022-01-06 09:16:55 +0530 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2022-01-11 18:17:49 +0530 |
commit | 6dde43584f185f71a8dd713deb438d7c724a9ad5 (patch) | |
tree | 46a01fc502ec87a7210f81bf8a000e08f73e67a8 /lib/utils/serial/fdt_serial_htif.c | |
parent | 5b9960379fae14b554c953b0d4139f4b1a57cd5e (diff) | |
download | opensbi-6dde43584f185f71a8dd713deb438d7c724a9ad5.zip opensbi-6dde43584f185f71a8dd713deb438d7c724a9ad5.tar.gz opensbi-6dde43584f185f71a8dd713deb438d7c724a9ad5.tar.bz2 |
lib: utils/sys: Extend HTIF library to allow custom base address
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/serial/fdt_serial_htif.c')
-rw-r--r-- | lib/utils/serial/fdt_serial_htif.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/utils/serial/fdt_serial_htif.c b/lib/utils/serial/fdt_serial_htif.c index fae55b8..61f66d6 100644 --- a/lib/utils/serial/fdt_serial_htif.c +++ b/lib/utils/serial/fdt_serial_htif.c @@ -19,7 +19,17 @@ static const struct fdt_match serial_htif_match[] = { static int serial_htif_init(void *fdt, int nodeoff, const struct fdt_match *match) { - return htif_serial_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_serial_init(custom, fromhost_addr, tohost_addr); } struct fdt_serial fdt_serial_htif = { |