blob: 1c6b2ece602b59eeae7988e3f95a4642c2204796 [file] [log] [blame]
Joseph Chen72cd8792021-06-02 15:58:25 +08001// SPDX-License-Identifier: GPL-2.0
2/*
3 * (C) Copyright 2021 Rockchip Electronics Co., Ltd
4 */
5
Joseph Chen72cd8792021-06-02 15:58:25 +08006#include <dm.h>
7#include <syscon.h>
8#include <asm/arch-rockchip/clock.h>
9#include <asm/arch-rockchip/cru_rk3568.h>
10#include <linux/err.h>
11
12int rockchip_get_clk(struct udevice **devp)
13{
14 return uclass_get_device_by_driver(UCLASS_CLK,
15 DM_DRIVER_GET(rockchip_rk3568_cru), devp);
16}
17
18void *rockchip_get_cru(void)
19{
20 struct rk3568_clk_priv *priv;
21 struct udevice *dev;
22 int ret;
23
24 ret = rockchip_get_clk(&dev);
25 if (ret)
26 return ERR_PTR(ret);
27
28 priv = dev_get_priv(dev);
29
30 return priv->cru;
31}
32
33static int rockchip_get_pmucruclk(struct udevice **devp)
34{
35 return uclass_get_device_by_driver(UCLASS_CLK,
36 DM_DRIVER_GET(rockchip_rk3568_pmucru), devp);
37}
38
39void *rockchip_get_pmucru(void)
40{
41 struct rk3568_pmuclk_priv *priv;
42 struct udevice *dev;
43 int ret;
44
45 ret = rockchip_get_pmucruclk(&dev);
46 if (ret)
47 return ERR_PTR(ret);
48
49 priv = dev_get_priv(dev);
50
51 return priv->pmucru;
52}