]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
rockchip: clk: Make rkclk_get_clk() SoC-specific
authorSimon Glass <sjg@chromium.org>
Fri, 22 Jan 2016 02:44:05 +0000 (19:44 -0700)
committerSimon Glass <sjg@chromium.org>
Fri, 22 Jan 2016 03:42:35 +0000 (20:42 -0700)
The current method assumes that clocks are numbered from 0 and we can
determine a clock by its number. It is safer to use an ID in the clock's
platform data to avoid the situation where another clock is bound before
the one we expect.

Move the existing code into rk3036 since it still works there. Add a new
implementation for rk3288.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/arm/mach-rockchip/Makefile
arch/arm/mach-rockchip/common.c [deleted file]
drivers/clk/clk_rk3036.c
drivers/clk/clk_rk3288.c

index 1cc4a96bf41316b4e9e3696d6c4e2abc58eac562..55567cb131b16293abfdead422a0abba68c73601 100644 (file)
@@ -11,6 +11,5 @@ else
 obj-$(CONFIG_ROCKCHIP_RK3288) += board.o
 endif
 obj-y += rk_timer.o
-obj-$(CONFIG_$(SPL_)ROCKCHIP_COMMON) += common.o
 obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288/
 obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036/
diff --git a/arch/arm/mach-rockchip/common.c b/arch/arm/mach-rockchip/common.c
deleted file mode 100644 (file)
index fc7ac72..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (C) Copyright 2015 Google, Inc
- *
- * SPDX-License-Identifier:     GPL-2.0+
- */
-
-#include <common.h>
-#include <dm.h>
-#include <errno.h>
-#include <fdtdec.h>
-#include <linux/err.h>
-
-void *rockchip_get_cru(void)
-{
-       struct udevice *dev;
-       fdt_addr_t addr;
-       int ret;
-
-       ret = uclass_get_device(UCLASS_CLK, 0, &dev);
-       if (ret)
-               return ERR_PTR(ret);
-
-       addr = dev_get_addr(dev);
-       if (addr == FDT_ADDR_T_NONE)
-               return ERR_PTR(-EINVAL);
-
-       return (void *)addr;
-}
index dfecc24ece6c4ed3f5a601edb50d76581ca88837..bd5f22a753a4f368ec3430aab70f19bab427a330 100644 (file)
@@ -57,6 +57,23 @@ static inline unsigned int log2(unsigned int value)
        return fls(value) - 1;
 }
 
+void *rockchip_get_cru(void)
+{
+       struct udevice *dev;
+       fdt_addr_t addr;
+       int ret;
+
+       ret = uclass_get_device(UCLASS_CLK, 0, &dev);
+       if (ret)
+               return ERR_PTR(ret);
+
+       addr = dev_get_addr(dev);
+       if (addr == FDT_ADDR_T_NONE)
+               return ERR_PTR(-EINVAL);
+
+       return (void *)addr;
+}
+
 static int rkclk_set_pll(struct rk3036_cru *cru, enum rk_clk_id clk_id,
                         const struct pll_div *div)
 {
index d294788f9ceed83ecdef7c76f868b81409b2366a..5a8f175e4b062d33811011fb98c9f913361fe4b6 100644 (file)
@@ -159,6 +159,19 @@ int rkclk_get_clk(enum rk_clk_id clk_id, struct udevice **devp)
        return -ENODEV;
 }
 
+void *rockchip_get_cru(void)
+{
+       struct rk3288_clk_priv *priv;
+       struct udevice *dev;
+       int ret;
+
+       ret = rkclk_get_clk(CLK_GENERAL, &dev);
+       if (ret)
+               return ERR_PTR(ret);
+       priv = dev_get_priv(dev);
+       return priv->cru;
+}
+
 static int rkclk_set_pll(struct rk3288_cru *cru, enum rk_clk_id clk_id,
                         const struct pll_div *div)
 {