Commit 4e04691b authored by Ben Dooks's avatar Ben Dooks

ARM: SAMSUNG: Add s3c_disable_clocks() and tidy init+disable usage

Add s3c_disable_clocks() and change the clock registration code to use
the s3c_register_clocks() followed by s3c_disable_clocks() instead of
the loops it was using.
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent e561aacc
...@@ -492,7 +492,7 @@ static struct clk clk_prediv = { ...@@ -492,7 +492,7 @@ static struct clk clk_prediv = {
/* standard clock definitions */ /* standard clock definitions */
static struct clk init_clocks_disable[] = { static struct clk init_clocks_off[] = {
{ {
.name = "nand", .name = "nand",
.id = -1, .id = -1,
...@@ -761,9 +761,7 @@ void __init_or_cpufreq s3c2443_setup_clocks(void) ...@@ -761,9 +761,7 @@ void __init_or_cpufreq s3c2443_setup_clocks(void)
void __init s3c2443_init_clocks(int xtal) void __init s3c2443_init_clocks(int xtal)
{ {
struct clk *clkp;
unsigned long epllcon = __raw_readl(S3C2443_EPLLCON); unsigned long epllcon = __raw_readl(S3C2443_EPLLCON);
int ret;
int ptr; int ptr;
/* s3c2443 parents h and p clocks from prediv */ /* s3c2443 parents h and p clocks from prediv */
...@@ -774,15 +772,7 @@ void __init s3c2443_init_clocks(int xtal) ...@@ -774,15 +772,7 @@ void __init s3c2443_init_clocks(int xtal)
s3c2443_setup_clocks(); s3c2443_setup_clocks();
s3c2443_clk_initparents(); s3c2443_clk_initparents();
for (ptr = 0; ptr < ARRAY_SIZE(clks); ptr++) { s3c24xx_register_clocks(clks, ARRAY_SIZE(clks));
clkp = clks[ptr];
ret = s3c24xx_register_clock(clkp);
if (ret < 0) {
printk(KERN_ERR "Failed to register clock %s (%d)\n",
clkp->name, ret);
}
}
for (ptr = 0; ptr < ARRAY_SIZE(clksrcs); ptr++) for (ptr = 0; ptr < ARRAY_SIZE(clksrcs); ptr++)
s3c_register_clksrc(clksrcs[ptr], 1); s3c_register_clksrc(clksrcs[ptr], 1);
...@@ -819,17 +809,8 @@ void __init s3c2443_init_clocks(int xtal) ...@@ -819,17 +809,8 @@ void __init s3c2443_init_clocks(int xtal)
/* install (and disable) the clocks we do not need immediately */ /* install (and disable) the clocks we do not need immediately */
clkp = init_clocks_disable; s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
for (ptr = 0; ptr < ARRAY_SIZE(init_clocks_disable); ptr++, clkp++) { s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
ret = s3c24xx_register_clock(clkp);
if (ret < 0) {
printk(KERN_ERR "Failed to register clock %s (%d)\n",
clkp->name, ret);
}
(clkp->enable)(clkp, 0);
}
s3c_pwmclk_init(); s3c_pwmclk_init();
} }
...@@ -87,7 +87,7 @@ static int s3c2410_upll_enable(struct clk *clk, int enable) ...@@ -87,7 +87,7 @@ static int s3c2410_upll_enable(struct clk *clk, int enable)
/* standard clock definitions */ /* standard clock definitions */
static struct clk init_clocks_disable[] = { static struct clk init_clocks_off[] = {
{ {
.name = "nand", .name = "nand",
.id = -1, .id = -1,
...@@ -249,17 +249,8 @@ int __init s3c2410_baseclk_add(void) ...@@ -249,17 +249,8 @@ int __init s3c2410_baseclk_add(void)
/* install (and disable) the clocks we do not need immediately */ /* install (and disable) the clocks we do not need immediately */
clkp = init_clocks_disable; s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
for (ptr = 0; ptr < ARRAY_SIZE(init_clocks_disable); ptr++, clkp++) { s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
ret = s3c24xx_register_clock(clkp);
if (ret < 0) {
printk(KERN_ERR "Failed to register clock %s (%d)\n",
clkp->name, ret);
}
s3c2410_clkcon_enable(clkp, 0);
}
/* show the clock-slow value */ /* show the clock-slow value */
......
...@@ -376,6 +376,21 @@ void __init s3c_register_clocks(struct clk *clkp, int nr_clks) ...@@ -376,6 +376,21 @@ void __init s3c_register_clocks(struct clk *clkp, int nr_clks)
} }
} }
/**
* s3c_disable_clocks() - disable an array of clocks
* @clkp: Pointer to the first clock in the array.
* @nr_clks: Number of clocks to register.
*
* for internal use only at initialisation time. disable the clocks in the
* @clkp array.
*/
void __init s3c_disable_clocks(struct clk *clkp, int nr_clks)
{
for (; nr_clks > 0; nr_clks--, clkp++)
(clkp->enable)(clkp, 0);
}
/* initalise all the clocks */ /* initalise all the clocks */
int __init s3c24xx_register_baseclocks(unsigned long xtal) int __init s3c24xx_register_baseclocks(unsigned long xtal)
......
...@@ -91,6 +91,7 @@ extern int s3c24xx_register_clock(struct clk *clk); ...@@ -91,6 +91,7 @@ extern int s3c24xx_register_clock(struct clk *clk);
extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks); extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks);
extern void s3c_register_clocks(struct clk *clk, int nr_clks); extern void s3c_register_clocks(struct clk *clk, int nr_clks);
extern void s3c_disable_clocks(struct clk *clkp, int nr_clks);
extern int s3c24xx_register_baseclocks(unsigned long xtal); extern int s3c24xx_register_baseclocks(unsigned long xtal);
......
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