blob: cf5b8c9548ba4639fb45b11637b9734afc3ddc8e [file] [log] [blame]
Simon Glassd1dfea72016-10-01 20:04:51 -06001/*
2 * Copyright (C) 2016 Google, Inc
3 * Written by Simon Glass <sjg@chromium.org>
4 *
5 * SPDX-License-Identifier: GPL-2.0+
6 */
7
8#include <common.h>
9#include <dm.h>
10#include <syscon.h>
11#include <asm/arch/clock.h>
12#include <asm/arch/cru_rk3399.h>
13
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}