serial_rockchip.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2015 Google, Inc
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <debug_uart.h>
  8. #include <dm.h>
  9. #include <dt-structs.h>
  10. #include <ns16550.h>
  11. #include <serial.h>
  12. #include <asm/arch/clock.h>
  13. struct rockchip_uart_platdata {
  14. struct dtd_rockchip_rk3288_uart dtplat;
  15. struct ns16550_platdata plat;
  16. };
  17. struct dtd_rockchip_rk3288_uart *dtplat, s_dtplat;
  18. static int rockchip_serial_probe(struct udevice *dev)
  19. {
  20. struct rockchip_uart_platdata *plat = dev_get_platdata(dev);
  21. /* Create some new platform data for the standard driver */
  22. plat->plat.base = plat->dtplat.reg[0];
  23. plat->plat.reg_shift = plat->dtplat.reg_shift;
  24. plat->plat.clock = plat->dtplat.clock_frequency;
  25. plat->plat.fcr = UART_FCR_DEFVAL;
  26. dev->platdata = &plat->plat;
  27. return ns16550_serial_probe(dev);
  28. }
  29. U_BOOT_DRIVER(rockchip_rk3288_uart) = {
  30. .name = "rockchip_rk3288_uart",
  31. .id = UCLASS_SERIAL,
  32. .priv_auto_alloc_size = sizeof(struct NS16550),
  33. .platdata_auto_alloc_size = sizeof(struct rockchip_uart_platdata),
  34. .probe = rockchip_serial_probe,
  35. .ops = &ns16550_serial_ops,
  36. .flags = DM_FLAG_PRE_RELOC,
  37. };