summaryrefslogtreecommitdiff
path: root/lib/utils/fdt
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2022-02-24 08:01:46 +0300
committerAnup Patel <anup@brainfault.org>2022-02-28 07:20:09 +0300
commit4998a712b2ab504eff306110879ee05af6050177 (patch)
tree06d30b2ca0c802d89254ed61b13321a1a0b74935 /lib/utils/fdt
parentf3f4604c196dea70b0bb64aba747aa6d7a9e244f (diff)
downloadopensbi-4998a712b2ab504eff306110879ee05af6050177.tar.xz
lib: utils: serial: Initial commit of xlnx-uartlite
Initial commit of the xlnx-uartlite device and FDT support. This was tested by running OpenSBI on a modified QEMU virt machine using the xlnx-uartlite for serial. Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib/utils/fdt')
-rw-r--r--lib/utils/fdt/fdt_helper.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/utils/fdt/fdt_helper.c b/lib/utils/fdt/fdt_helper.c
index 3a306cb..4dd0602 100644
--- a/lib/utils/fdt/fdt_helper.c
+++ b/lib/utils/fdt/fdt_helper.c
@@ -467,6 +467,24 @@ int fdt_parse_uart8250(void *fdt, struct platform_uart_data *uart,
return fdt_parse_uart8250_node(fdt, nodeoffset, uart);
}
+int fdt_parse_xlnx_uartlite_node(void *fdt, int nodeoffset,
+ struct platform_uart_data *uart)
+{
+ int rc;
+ uint64_t reg_addr, reg_size;
+
+ if (nodeoffset < 0 || !uart || !fdt)
+ return SBI_ENODEV;
+
+ rc = fdt_get_node_addr_size(fdt, nodeoffset, 0,
+ &reg_addr, &reg_size);
+ if (rc < 0 || !reg_addr || !reg_size)
+ return SBI_ENODEV;
+ uart->addr = reg_addr;
+
+ return 0;
+}
+
int fdt_parse_aplic_node(void *fdt, int nodeoff, struct aplic_data *aplic)
{
bool child_found;