[PATCH] OMAP: Added recalculation of clock rate in 'clk_set_rate'
Paul Walmsley
paul at pwsan.com
Wed Apr 20 15:55:38 EDT 2011
Hi
On Wed, 20 Apr 2011, Shweta Gulati wrote:
> From: Gulati, Shweta <shweta.gulati at ti.com>
>
> Core Clk Tree shows incorrect Clk rates at OPP50, as
> in commit e07f469d284ca3d1f5dcf5438c22982be98bc071
> calling of 'recalc' in API clk_set_rate is unintentionally
> removed,
That's intentional. struct clk.set_rate functions need to set the struct
clk.rate before returning. If they don't do that, it's a bug in the
struct clk's .set_rate function.
> because of which clock's tree rates get goofed up when DVFS happens.
Clearly this isn't on the mainline kernel...
> This Patch adds recalc API back.
>
> Tested on OMAP3630 SDP Board.
>
> Signed-off-by: Shweta Gulati <shweta.gulati at ti.com>
> Cc: Rajendra Nayak <rnayak at ti.com>
> Cc: Paul Wamsley <paul at pwsan.com>
> ---
> arch/arm/plat-omap/clock.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
> index c9122dd..5a0d06b 100644
> --- a/arch/arm/plat-omap/clock.c
> +++ b/arch/arm/plat-omap/clock.c
> @@ -130,8 +130,11 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
>
> spin_lock_irqsave(&clockfw_lock, flags);
> ret = arch_clock->clk_set_rate(clk, rate);
> - if (ret == 0)
> + if (ret == 0) {
> + if (clk->recalc)
> + clk->rate = clk->recalc(clk);
> propagate_rate(clk);
> + }
> spin_unlock_irqrestore(&clockfw_lock, flags);
>
> return ret;
> --
> 1.7.0.4
>
- Paul
More information about the linux-arm-kernel
mailing list