fdt_serial_cadence.c 873 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * SPDX-License-Identifier: BSD-2-Clause
  3. *
  4. * Copyright (c) 2022 StarFive Technology Co., Ltd.
  5. *
  6. * Author: Jun Liang Tan <junliang.tan@linux.starfivetech.com>
  7. */
  8. #include <sbi_utils/fdt/fdt_helper.h>
  9. #include <sbi_utils/serial/fdt_serial.h>
  10. #include <sbi_utils/serial/cadence-uart.h>
  11. static int serial_cadence_init(void *fdt, int nodeoff,
  12. const struct fdt_match *match)
  13. {
  14. int rc;
  15. struct platform_uart_data uart = { 0 };
  16. rc = fdt_parse_uart_node(fdt, nodeoff, &uart);
  17. if (rc)
  18. return rc;
  19. return cadence_uart_init(uart.addr, uart.freq, uart.baud);
  20. }
  21. static const struct fdt_match serial_cadence_match[] = {
  22. { .compatible = "cdns,uart-r1p8", },
  23. { .compatible = "cdns,uart-r1p12" },
  24. { .compatible = "starfive,jh8100-uart" },
  25. { },
  26. };
  27. struct fdt_serial fdt_serial_cadence = {
  28. .match_table = serial_cadence_match,
  29. .init = serial_cadence_init
  30. };