fdt_serial_litex.c 846 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * SPDX-License-Identifier: BSD-2-Clause
  3. *
  4. * Copyright (c) 2021 Gabriel Somlo
  5. *
  6. * Authors:
  7. * Gabriel Somlo <gsomlo@gmail.com>
  8. */
  9. #include <sbi/sbi_error.h>
  10. #include <sbi_utils/fdt/fdt_helper.h>
  11. #include <sbi_utils/serial/fdt_serial.h>
  12. #include <sbi_utils/serial/litex-uart.h>
  13. static int serial_litex_init(void *fdt, int nodeoff,
  14. const struct fdt_match *match)
  15. {
  16. uint64_t reg_addr, reg_size;
  17. int rc;
  18. if (nodeoff < 0 || !fdt)
  19. return SBI_ENODEV;
  20. rc = fdt_get_node_addr_size(fdt, nodeoff, 0, &reg_addr, &reg_size);
  21. if (rc < 0 || !reg_addr || !reg_size)
  22. return SBI_ENODEV;
  23. return litex_uart_init(reg_addr);
  24. }
  25. static const struct fdt_match serial_litex_match[] = {
  26. { .compatible = "litex,liteuart" },
  27. { },
  28. };
  29. struct fdt_serial fdt_serial_litex = {
  30. .match_table = serial_litex_match,
  31. .init = serial_litex_init
  32. };