From 6e8908edd5a140f4f0cc4338fa0420b0bb0f8efa Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Mon, 20 Mar 2006 21:00:08 +0000 Subject: [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: Ben Dooks Signed-off-by: Russell King --- arch/arm/mach-s3c2410/clock.c | 14 +++++++++++++- arch/arm/mach-s3c2410/clock.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'arch/arm/mach-s3c2410') diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index e205a6316b0..95c6d46c3dd 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c @@ -180,12 +180,24 @@ unsigned long clk_get_rate(struct clk *clk) 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; } 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) diff --git a/arch/arm/mach-s3c2410/clock.h b/arch/arm/mach-s3c2410/clock.h index c4f36f00649..32864b30c1e 100644 --- a/arch/arm/mach-s3c2410/clock.h +++ b/arch/arm/mach-s3c2410/clock.h @@ -21,6 +21,8 @@ struct clk { unsigned long ctrlbit; 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); }; -- cgit v1.2.3