Re: [U-Boot] [U-Boot, 3/8] clk: rockchip: Add rv1108 Saradc clock support

2017-09-13 Thread Philipp Tomsich



On Wed, 13 Sep 2017, David Wu wrote:


Signed-off-by: David Wu 


Reviewed-by: Philipp Tomsich 


---
arch/arm/include/asm/arch-rockchip/cru_rv1108.h |  5 
drivers/clk/rockchip/clk_rv1108.c   | 35 +
include/dt-bindings/clock/rv1108-cru.h  |  2 ++
3 files changed, 42 insertions(+)

diff --git a/arch/arm/include/asm/arch-rockchip/cru_rv1108.h 
b/arch/arm/include/asm/arch-rockchip/cru_rv1108.h
index 2a1ae69..b134559 100644
--- a/arch/arm/include/asm/arch-rockchip/cru_rv1108.h
+++ b/arch/arm/include/asm/arch-rockchip/cru_rv1108.h
@@ -90,6 +90,11 @@ enum {
CORE_CLK_DIV_SHIFT  = 0,
CORE_CLK_DIV_MASK   = 0x1f << CORE_CLK_DIV_SHIFT,

+   /* CLKSEL_CON22 */
+   CLK_SARADC_DIV_CON_SHIFT= 0,
+   CLK_SARADC_DIV_CON_MASK = 0x3ff << CLK_SARADC_DIV_CON_SHIFT,


Can we use GENMASK here?


+   CLK_SARADC_DIV_CON_WIDTH= 10,
+
/* CLKSEL24_CON */
MAC_PLL_SEL_SHIFT   = 12,
MAC_PLL_SEL_MASK= 1 << MAC_PLL_SEL_SHIFT,
diff --git a/drivers/clk/rockchip/clk_rv1108.c 
b/drivers/clk/rockchip/clk_rv1108.c
index cf966bb..aa989c6 100644
--- a/drivers/clk/rockchip/clk_rv1108.c
+++ b/drivers/clk/rockchip/clk_rv1108.c
@@ -36,6 +36,11 @@ enum {
 #hz "Hz cannot be hit with PLL "\
 "divisors on line " __stringify(__LINE__));

+static inline u32 extract_bits(u32 val, unsigned width, unsigned shift)
+{
+   return (val >> shift) & ((1 << width) - 1);


The comment regarding bitfield.h applies again.


+}
+
/* use interge mode*/


typo: integer


static inline int rv1108_pll_id(enum rk_clk_id clk_id)
{
@@ -130,6 +135,31 @@ static int rv1108_sfc_set_clk(struct rv1108_cru *cru, uint 
rate)
return DIV_TO_RATE(pll_rate, div);
}

+static ulong rv1108_saradc_get_clk(struct rv1108_cru *cru)
+{
+   u32 div, val;
+
+   val = readl(>clksel_con[22]);
+   div = extract_bits(val, CLK_SARADC_DIV_CON_WIDTH,
+  CLK_SARADC_DIV_CON_SHIFT);
+
+   return DIV_TO_RATE(OSC_HZ, div);
+}
+
+static ulong rv1108_saradc_set_clk(struct rv1108_cru *cru, uint hz)
+{
+   int src_clk_div;
+
+   src_clk_div = DIV_ROUND_UP(OSC_HZ, hz) - 1;
+   assert(src_clk_div < 128);
+
+   rk_clrsetreg(>clksel_con[22],
+CLK_SARADC_DIV_CON_MASK,
+src_clk_div << CLK_SARADC_DIV_CON_SHIFT);
+
+   return rv1108_saradc_get_clk(cru);
+}
+
static ulong rv1108_clk_get_rate(struct clk *clk)
{
struct rv1108_clk_priv *priv = dev_get_priv(clk->dev);
@@ -137,6 +167,8 @@ static ulong rv1108_clk_get_rate(struct clk *clk)
switch (clk->id) {
case 0 ... 63:
return rkclk_pll_get_rate(priv->cru, clk->id);
+   case SCLK_SARADC:
+   return rv1108_saradc_get_clk(priv->cru);
default:
return -ENOENT;
}
@@ -154,6 +186,9 @@ static ulong rv1108_clk_set_rate(struct clk *clk, ulong 
rate)
case SCLK_SFC:
new_rate = rv1108_sfc_set_clk(priv->cru, rate);
break;
+   case SCLK_SARADC:
+   new_rate = rv1108_saradc_set_clk(priv->cru, rate);
+   break;
default:
return -ENOENT;
}
diff --git a/include/dt-bindings/clock/rv1108-cru.h 
b/include/dt-bindings/clock/rv1108-cru.h
index d2ad3bb..7defc6b 100644
--- a/include/dt-bindings/clock/rv1108-cru.h
+++ b/include/dt-bindings/clock/rv1108-cru.h
@@ -39,6 +39,7 @@
#define SCLK_MAC_TX 88
#define SCLK_MACREF 89
#define SCLK_MACREF_OUT 90
+#define SCLK_SARADC91


/* aclk gates */
@@ -67,6 +68,7 @@
#define PCLK_TIMER  270
#define PCLK_PERI   271
#define PCLK_GMAC   272
+#define PCLK_SARADC273

/* hclk gates */
#define HCLK_I2S0_8CH   320


___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [U-Boot, 3/8] clk: rockchip: Add rv1108 Saradc clock support

2017-09-13 Thread Philipp Tomsich
> Signed-off-by: David Wu 
> ---
>  arch/arm/include/asm/arch-rockchip/cru_rv1108.h |  5 
>  drivers/clk/rockchip/clk_rv1108.c   | 35 
> +
>  include/dt-bindings/clock/rv1108-cru.h  |  2 ++
>  3 files changed, 42 insertions(+)
> 

Acked-by: Philipp Tomsich 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot