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)13int 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)20int 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)27void *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)42static 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)48void *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