Commit 6e8908ed authored by Ben Dooks's avatar Ben Dooks Committed by Russell King

[ARM] 3359/1: S3C24XX - add support for clk_set_rate

Patch from Ben Dooks

Add support for clk_set_rate and clk_round_rate to the
s3c2410 clock implementation
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent d2a02b93
...@@ -180,12 +180,24 @@ unsigned long clk_get_rate(struct clk *clk) ...@@ -180,12 +180,24 @@ unsigned long clk_get_rate(struct clk *clk)
long clk_round_rate(struct clk *clk, unsigned long rate) long clk_round_rate(struct clk *clk, unsigned long rate)
{ {
if (!IS_ERR(clk) && clk->round_rate)
return (clk->round_rate)(clk, rate);
return rate; return rate;
} }
int clk_set_rate(struct clk *clk, unsigned long rate) int clk_set_rate(struct clk *clk, unsigned long rate)
{ {
return -EINVAL; int ret;
if (IS_ERR(clk))
return -EINVAL;
mutex_lock(&clocks_mutex);
ret = (clk->set_rate)(clk, rate);
mutex_unlock(&clocks_mutex);
return ret;
} }
struct clk *clk_get_parent(struct clk *clk) struct clk *clk_get_parent(struct clk *clk)
......
...@@ -21,6 +21,8 @@ struct clk { ...@@ -21,6 +21,8 @@ struct clk {
unsigned long ctrlbit; unsigned long ctrlbit;
int (*enable)(struct clk *, int enable); int (*enable)(struct clk *, int enable);
int (*set_rate)(struct clk *c, unsigned long rate);
unsigned long (*round_rate)(struct clk *c, unsigned long rate);
int (*set_parent)(struct clk *c, struct clk *parent); int (*set_parent)(struct clk *c, struct clk *parent);
}; };
......
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