| /* |
| * SPDX-License-Identifier: BSD-2-Clause |
| * |
| * Copyright (c) 2021 Gabriel Somlo |
| * |
| * Authors: |
| * Gabriel Somlo <gsomlo@gmail.com> |
| */ |
| |
| #include <sbi/sbi_error.h> |
| #include <sbi_utils/fdt/fdt_helper.h> |
| #include <sbi_utils/serial/fdt_serial.h> |
| #include <sbi_utils/serial/litex-uart.h> |
| |
| static int serial_litex_init(void *fdt, int nodeoff, |
| const struct fdt_match *match) |
| { |
| uint64_t reg_addr, reg_size; |
| int rc; |
| |
| if (nodeoff < 0 || !fdt) |
| return SBI_ENODEV; |
| |
| rc = fdt_get_node_addr_size(fdt, nodeoff, 0, ®_addr, ®_size); |
| if (rc < 0 || !reg_addr || !reg_size) |
| return SBI_ENODEV; |
| |
| return litex_uart_init(reg_addr); |
| } |
| |
| static const struct fdt_match serial_litex_match[] = { |
| { .compatible = "litex,liteuart" }, |
| { }, |
| }; |
| |
| struct fdt_serial fdt_serial_litex = { |
| .match_table = serial_litex_match, |
| .init = serial_litex_init |
| }; |