Commit 10d6db2b authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Simon Horman

ARM: shmobile: r8a7740: use fixed ratio clock

Current clock-r8a7740 is using own implement
for each divX clocks.
This patch switches to use fixed ratio clock,
and was tesed on armadillo board.
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: default avatarMagnus Damm <damm@opensource.se>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 5d14ff08
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/sh_clk.h> #include <linux/sh_clk.h>
#include <linux/clkdev.h> #include <linux/clkdev.h>
#include <mach/clock.h>
#include <mach/common.h> #include <mach/common.h>
#include <mach/r8a7740.h> #include <mach/r8a7740.h>
...@@ -97,42 +98,13 @@ static struct clk dv_clk = { ...@@ -97,42 +98,13 @@ static struct clk dv_clk = {
.rate = 27000000, .rate = 27000000,
}; };
static unsigned long div_recalc(struct clk *clk) SH_CLK_RATIO(div2, 1, 2);
{ SH_CLK_RATIO(div1k, 1, 1024);
return clk->parent->rate / (int)(clk->priv);
}
static struct sh_clk_ops div_clk_ops = {
.recalc = div_recalc,
};
/* extal1 / 2 */ SH_FIXED_RATIO_CLK(extal1_div2_clk, extal1_clk, div2);
static struct clk extal1_div2_clk = { SH_FIXED_RATIO_CLK(extal1_div1024_clk, extal1_clk, div1k);
.ops = &div_clk_ops, SH_FIXED_RATIO_CLK(extal1_div2048_clk, extal1_div2_clk, div1k);
.priv = (void *)2, SH_FIXED_RATIO_CLK(extal2_div2_clk, extal2_clk, div2);
.parent = &extal1_clk,
};
/* extal1 / 1024 */
static struct clk extal1_div1024_clk = {
.ops = &div_clk_ops,
.priv = (void *)1024,
.parent = &extal1_clk,
};
/* extal1 / 2 / 1024 */
static struct clk extal1_div2048_clk = {
.ops = &div_clk_ops,
.priv = (void *)1024,
.parent = &extal1_div2_clk,
};
/* extal2 / 2 */
static struct clk extal2_div2_clk = {
.ops = &div_clk_ops,
.priv = (void *)2,
.parent = &extal2_clk,
};
static struct sh_clk_ops followparent_clk_ops = { static struct sh_clk_ops followparent_clk_ops = {
.recalc = followparent_recalc, .recalc = followparent_recalc,
...@@ -143,11 +115,7 @@ static struct clk system_clk = { ...@@ -143,11 +115,7 @@ static struct clk system_clk = {
.ops = &followparent_clk_ops, .ops = &followparent_clk_ops,
}; };
static struct clk system_div2_clk = { SH_FIXED_RATIO_CLK(system_div2_clk, system_clk, div2);
.ops = &div_clk_ops,
.priv = (void *)2,
.parent = &system_clk,
};
/* r_clk */ /* r_clk */
static struct clk r_clk = { static struct clk r_clk = {
...@@ -184,11 +152,7 @@ static struct clk pllc1_clk = { ...@@ -184,11 +152,7 @@ static struct clk pllc1_clk = {
}; };
/* PLLC1 / 2 */ /* PLLC1 / 2 */
static struct clk pllc1_div2_clk = { SH_FIXED_RATIO_CLK(pllc1_div2_clk, pllc1_clk, div2);
.ops = &div_clk_ops,
.priv = (void *)2,
.parent = &pllc1_clk,
};
/* USB clock */ /* USB clock */
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment