aboutsummaryrefslogtreecommitdiff
path: root/lib/utils/serial/fdt_serial_cadence.c
diff options
context:
space:
mode:
authorJun Liang Tan <junliang.tan@linux.starfivetech.com>2022-08-17 23:40:56 +0800
committerAnup Patel <anup@brainfault.org>2022-08-23 08:40:17 +0530
commitcbaa9b0333517b3c25bea8d1c71ac8005ff1f727 (patch)
treeac34ed7af2455b6a0cb1c9efbf53857194146b67 /lib/utils/serial/fdt_serial_cadence.c
parentadf44b51bae1b91dbb90c51fcecfbc23bb3062a5 (diff)
downloadopensbi-cbaa9b0333517b3c25bea8d1c71ac8005ff1f727.zip
opensbi-cbaa9b0333517b3c25bea8d1c71ac8005ff1f727.tar.gz
opensbi-cbaa9b0333517b3c25bea8d1c71ac8005ff1f727.tar.bz2
lib: utils: serial: Add Cadence UART driver
Add Cadence UART driver Signed-off-by: Jun Liang Tan <junliang.tan@linux.starfivetech.com> Signed-off-by: Wei Liang Lim <weiliang.lim@linux.starfivetech.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib/utils/serial/fdt_serial_cadence.c')
-rw-r--r--lib/utils/serial/fdt_serial_cadence.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/utils/serial/fdt_serial_cadence.c b/lib/utils/serial/fdt_serial_cadence.c
new file mode 100644
index 0000000..946e533
--- /dev/null
+++ b/lib/utils/serial/fdt_serial_cadence.c
@@ -0,0 +1,35 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2022 StarFive Technology Co., Ltd.
+ *
+ * Author: Jun Liang Tan <junliang.tan@linux.starfivetech.com>
+ */
+
+#include <sbi_utils/fdt/fdt_helper.h>
+#include <sbi_utils/serial/fdt_serial.h>
+#include <sbi_utils/serial/cadence-uart.h>
+
+static int serial_cadence_init(void *fdt, int nodeoff,
+ const struct fdt_match *match)
+{
+ int rc;
+ struct platform_uart_data uart = { 0 };
+
+ rc = fdt_parse_uart_node(fdt, nodeoff, &uart);
+ if (rc)
+ return rc;
+
+ return cadence_uart_init(uart.addr, uart.freq, uart.baud);
+}
+
+static const struct fdt_match serial_cadence_match[] = {
+ { .compatible = "cdns,uart-r1p12" },
+ { .compatible = "starfive,jh8100-uart" },
+ { },
+};
+
+struct fdt_serial fdt_serial_cadence = {
+ .match_table = serial_cadence_match,
+ .init = serial_cadence_init
+};