xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-rockchip/rk3568/clk_rk3568.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * (C) Copyright 2020 Rockchip Electronics Co., Ltd.
3  *
4  * SPDX-License-Identifier:	GPL-2.0+
5  */
6 
7 #include <common.h>
8 #include <dm.h>
9 #include <syscon.h>
10 #include <asm/arch/clock.h>
11 #include <asm/arch/cru_rk3568.h>
12 
rockchip_get_clk(struct udevice ** devp)13 int rockchip_get_clk(struct udevice **devp)
14 {
15 	return uclass_get_device_by_driver(UCLASS_CLK,
16 			DM_GET_DRIVER(rockchip_rk3568_cru), devp);
17 }
18 
19 #if CONFIG_IS_ENABLED(CLK_SCMI)
rockchip_get_scmi_clk(struct udevice ** devp)20 int rockchip_get_scmi_clk(struct udevice **devp)
21 {
22 	return uclass_get_device_by_driver(UCLASS_CLK,
23 			DM_GET_DRIVER(scmi_clock), devp);
24 }
25 #endif
26 
rockchip_get_cru(void)27 void *rockchip_get_cru(void)
28 {
29 	struct rk3568_clk_priv *priv;
30 	struct udevice *dev;
31 	int ret;
32 
33 	ret = rockchip_get_clk(&dev);
34 	if (ret)
35 		return ERR_PTR(ret);
36 
37 	priv = dev_get_priv(dev);
38 
39 	return priv->cru;
40 }
41 
rockchip_get_pmucruclk(struct udevice ** devp)42 static int rockchip_get_pmucruclk(struct udevice **devp)
43 {
44 	return uclass_get_device_by_driver(UCLASS_CLK,
45 			DM_GET_DRIVER(rockchip_rk3568_pmucru), devp);
46 }
47 
rockchip_get_pmucru(void)48 void *rockchip_get_pmucru(void)
49 {
50 	struct rk3568_pmuclk_priv *priv;
51 	struct udevice *dev;
52 	int ret;
53 
54 	ret = rockchip_get_pmucruclk(&dev);
55 	if (ret)
56 		return ERR_PTR(ret);
57 
58 	priv = dev_get_priv(dev);
59 
60 	return priv->pmucru;
61 }
62 
63