blob: d23a5e9435cb8fb0554624f4dad884fc8234e4d1 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Simon Glassd1dfea72016-10-01 20:04:51 -06002/*
3 * Copyright (C) 2016 Google, Inc
4 * Written by Simon Glass <sjg@chromium.org>
Simon Glassd1dfea72016-10-01 20:04:51 -06005 */
6
7#include <common.h>
8#include <dm.h>
9#include <syscon.h>
Kever Yang9fbe17c2019-03-28 11:01:23 +080010#include <asm/arch-rockchip/clock.h>
Jagan Teki783acfd2020-01-09 14:22:17 +053011#include <asm/arch-rockchip/cru.h>
Simon Glassd66c5f72020-02-03 07:36:15 -070012#include <linux/err.h>
Simon Glassd1dfea72016-10-01 20:04:51 -060013
Kever Yang5def7222016-12-28 17:48:26 +080014static int rockchip_get_cruclk(struct udevice **devp)
Simon Glassd1dfea72016-10-01 20:04:51 -060015{
16 return uclass_get_device_by_driver(UCLASS_CLK,
Kever Yang5def7222016-12-28 17:48:26 +080017 DM_GET_DRIVER(clk_rk3399), devp);
Simon Glassd1dfea72016-10-01 20:04:51 -060018}
19
20void *rockchip_get_cru(void)
21{
22 struct rk3399_clk_priv *priv;
23 struct udevice *dev;
24 int ret;
25
Kever Yang5def7222016-12-28 17:48:26 +080026 ret = rockchip_get_cruclk(&dev);
Simon Glassd1dfea72016-10-01 20:04:51 -060027 if (ret)
28 return ERR_PTR(ret);
29
30 priv = dev_get_priv(dev);
31
32 return priv->cru;
33}
Kever Yange1980532017-02-13 17:38:56 +080034
35static int rockchip_get_pmucruclk(struct udevice **devp)
36{
37 return uclass_get_device_by_driver(UCLASS_CLK,
38 DM_GET_DRIVER(rockchip_rk3399_pmuclk), devp);
39}
40
41void *rockchip_get_pmucru(void)
42{
43 struct rk3399_pmuclk_priv *priv;
44 struct udevice *dev;
45 int ret;
46
47 ret = rockchip_get_pmucruclk(&dev);
48 if (ret)
49 return ERR_PTR(ret);
50
51 priv = dev_get_priv(dev);
52
53 return priv->pmucru;
54}