clk_rk3399.c 1000 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright (C) 2016 Google, Inc
  4. * Written by Simon Glass <sjg@chromium.org>
  5. */
  6. #include <common.h>
  7. #include <dm.h>
  8. #include <syscon.h>
  9. #include <asm/arch-rockchip/clock.h>
  10. #include <asm/arch-rockchip/cru_rk3399.h>
  11. static int rockchip_get_cruclk(struct udevice **devp)
  12. {
  13. return uclass_get_device_by_driver(UCLASS_CLK,
  14. DM_GET_DRIVER(clk_rk3399), devp);
  15. }
  16. void *rockchip_get_cru(void)
  17. {
  18. struct rk3399_clk_priv *priv;
  19. struct udevice *dev;
  20. int ret;
  21. ret = rockchip_get_cruclk(&dev);
  22. if (ret)
  23. return ERR_PTR(ret);
  24. priv = dev_get_priv(dev);
  25. return priv->cru;
  26. }
  27. static int rockchip_get_pmucruclk(struct udevice **devp)
  28. {
  29. return uclass_get_device_by_driver(UCLASS_CLK,
  30. DM_GET_DRIVER(rockchip_rk3399_pmuclk), devp);
  31. }
  32. void *rockchip_get_pmucru(void)
  33. {
  34. struct rk3399_pmuclk_priv *priv;
  35. struct udevice *dev;
  36. int ret;
  37. ret = rockchip_get_pmucruclk(&dev);
  38. if (ret)
  39. return ERR_PTR(ret);
  40. priv = dev_get_priv(dev);
  41. return priv->pmucru;
  42. }